Files
calendar/packages/lib/service/attribute/server/scim-attribute-sync.md
T
Benny JooGitHubbenny@cal.com <sldisek783@gmail.com>Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
ab21c7f805 refactor: Cal.diy (#28903)
* feat: Cal.diy — community-driven MIT-licensed fork of Cal.com

This squashed commit contains all Cal.diy changes applied on top of calcom/cal.com main:

- Rebrand Cal.com to Cal.diy across the entire codebase
- Remove Enterprise Edition (EE) features, license checks, and AGPL restrictions
- Switch license from AGPL-3.0 to MIT
- Remove docs/ directory (migrated to Nextra at cal.diy)
- Remove dead code: org tests, EE tips, platform nav, premium username, SAML/SSO, etc.
- Clean up .env.example for self-hosted Cal.diy
- Update Docker image references to calcom/cal.diy
- Update README, CONTRIBUTING.md, and issue templates for Cal.diy community fork
- Add PR welcome bot for Cal.diy contributors
- Fix API v2 breaking changes oasdiff ignore entries
- Replace Blacksmith CI runners with default GitHub Actions

3893 files changed, 20789 insertions(+), 411020 deletions(-)

Co-Authored-By: benny@cal.com <sldisek783@gmail.com>

* refactor: remove org-specific /organizations/:orgId endpoints from API v2 atoms controllers (#1701)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix: revert Cal.diy Inc to Cal.com, Inc. in license files, copyright notices, and package metadata (#1702)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* rip out org related comments in api v2

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-04-15 09:52:36 -03:00

2.1 KiB

  • To be moved to proper documentation location
  1. When a user is assigned to the integration in Okta, they are created in Cal.diy with appropriate attributes.
  2. Only attributes that are defined in Cal.diy are synced.
    • Attributes are mapped by label, i.e., the external variable name of the custom attribute in Okta must match the label of the attribute in Cal.diy (in a case-insensitive manner).
  3. Only two types of custom attributes are currently supported (Number type support is pending):
    • string
    • array of strings
  4. If an Okta custom attribute maps to a Multi-Select or Single-Select attribute in Cal.diy, the provided values must be among the options defined for that attribute in Cal.diy.
    • Options are matched by label in a case-insensitive manner, similar to attribute labels
    • Any option not defined on the attribute is ignored and not synced
  5. If the attribute is locked in Cal.diy, sync from Okta completely overrides the attribute's value for that user in Cal.diy. Okta serves as the source of truth in this case.
    • After sync, no values will remain in Cal.diy for that user's custom attribute unless they are defined in Okta.
  6. If the attribute is not locked in Cal.diy, the expectation is that the attribute is marked as 'Create Only' in Okta and shouldn't be synced back to Cal.diy, after user's creation.
    • But in case if the attribute is still synced back to Cal.diy, we handle it in following way:
      • We consider two pools of assignments for the attribute:
        • Directory Sync Pool: Assignments created by Directory Sync
        • Cal.diy Pool: Assignments created by via Cal.diy
      • A sync from Okta, would ensure that all assignments from Directory Sync Pool are removed and only those remain that are provided by Okta.
      • Any update in Cal.diy is restricted to assignments in Cal.diy Pool only and doesn't impact Directory Sync Pool.
      • In case an option already in Cal.diy pool is assigned to a user through Directory sync, the ownership for that assignment is transferred to Directory Sync and it moves to Directory Sync Pool.