---
id: object/codeunit/7201
type: object
title: Codeunit 7201 "CDS Integration Impl."
summary: Codeunit 7201 "CDS Integration Impl." in Base Application (Microsoft.Integration.Dataverse). 152 public procedures, 8 events, 3 event subscribers. Present since at least BC23, still in BC30, changed in BC24-25, BC27-30.
tier: official
language: en
tags:
  - codeunit
  - base application
versions:
  introduced: null
  last_changed: "30"
  deprecated: null
review:
  state: derived
  by: null
  at: null
  flags: []
generated:
  at: "2026-10-11T00:31:51.816Z"
  pipeline: 0.2.0
  prompts: {}
  input_hash: 225dbca5328294fc2293d142de5c687728f3c6cafbcf92d7c97f7b20a877718e
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Integration/Dataverse/CDSIntegrationImpl.Codeunit.al
    title: src/Layers/W1/BaseApp/Integration/Dataverse/CDSIntegrationImpl.Codeunit.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/9953
    - change/bcapps/11171
    - change/bcapps/10207
    - change/bcapps/9127
object_type: codeunit
object_id: 7201
name: CDS Integration Impl.
namespace: Microsoft.Integration.Dataverse
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "24"
  - "25"
  - "27"
  - "28"
  - "29"
  - "30"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 260
  events: 8
  subscribers: 3
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 20
  called_by: 35
  implements: 0
---

# Codeunit 7201 "CDS Integration Impl."

> Codeunit 7201 "CDS Integration Impl." in Base Application (Microsoft.Integration.Dataverse). 152 public procedures, 8 events, 3 event subscribers. Present since at least BC23, still in BC30, changed in BC24-25, BC27-30.

Base Application · Microsoft.Integration.Dataverse · BC23-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Integration/Dataverse/CDSIntegrationImpl.Codeunit.al) · facts from BC29

## Properties

| Property | Value |
|---|---|
| SingleInstance | true |

## Events published

- `OnBeforeCleanCRMIntegrationRecords(var DisableIntegrationRecordCleanup: Boolean)` (integration)
- `OnBeforeCheckGLSetupLCYCode(GLSetup: Record "General Ledger Setup"; CRMTransactioncurrency: Record "CRM Transactioncurrency"; var IsHandled: Boolean)` (integration)
- `OnGetCDSConnectionClientId(var ClientId: Text)` (integration)
- `OnGetCDSConnectionClientSecret(var ClientSecret: Text)` (integration)
- `OnAfterIntegrationEnabled()` (integration)
- `OnBeforeGetBusinessEventsSupported(var Supported: Boolean; var Handled: Boolean)` (integration)
- `OnBeforeGetDefaultBusinessUnitName(var BusinessUnitName: Text[160]; var IsHandled: Boolean)` (integration)
- `OnGetIntegrationUserEmail(var IntegrationUsernameEmailTxt: Text[100]; var IsHandled: Boolean)` (integration)

## Event subscriptions

- HandleOnRegisterServiceConnection subscribes to Table "Service Connection" OnRegisterServiceConnection
- IsDataIntegrationEnabled subscribes to Table "Integration Synch. Job Errors" OnIsDataIntegrationEnabled
- InsertDefaultStateOnInitializingNotificationWithDefaultState subscribes to Page "My Notifications" OnInitializingNotificationWithDefaultState

## Procedures

- `GetBaseSolutionUniqueName(): Text`
- `GetBaseSolutionDisplayName(): Text`
- `IsConnectionActive(): Boolean`
- `IsConnectionActive(ConnectionName: Text): Boolean`
- `ActivateConnection(): Boolean`
- `ActivateConnection(ConnectionName: Text): Boolean`
- `HasConnection(): Boolean`
- `RegisterConnection(): Boolean`
- `RegisterConnection(KeepExisting: Boolean): Boolean`
- `RegisterConnection(ConnectionName: Text): Boolean`
- `RegisterConnection(ConnectionName: Text; KeepExisting: Boolean): Boolean`
- `RegisterConnection(var CDSConnectionSetup: Record "CDS Connection Setup"; KeepExisting: Boolean): Boolean`
- `RegisterConnection(var CDSConnectionSetup: Record "CDS Connection Setup"; ConnectionName: Text): Boolean`
- `RegisterConnection(var CDSConnectionSetup: Record "CDS Connection Setup"; ConnectionName: Text; KeepExisting: Boolean): Boolean`
- `UnregisterConnection(): Boolean`
- `UnregisterConnection(ConnectionName: Text)`
- `IsIntegrationEnabled(): Boolean`
- `IsBusinessEventsEnabled(): Boolean`
- `IsTeamOwnershipModelSelected(): Boolean`
- `GetConnectionDefaultName(): Text`
- `IsSolutionInstalled(): Boolean`
- `IsSolutionInstalled(var CDSConnectionSetup: Record "CDS Connection Setup"): Boolean`
- `IsSolutionInstalled(UniqueName: Text): Boolean`
- `IsSolutionInstalled(var CDSConnectionSetup: Record "CDS Connection Setup"; UniqueName: Text): Boolean`
- `GetSolutionVersion(var Version: Text): Boolean`
- `GetSolutionVersion(var CDSConnectionSetup: Record "CDS Connection Setup"; var Version: Text): Boolean`
- `GetSolutionVersion(UniqueName: Text; var Version: Text): Boolean`
- `GetSolutionVersion(var CDSConnectionSetup: Record "CDS Connection Setup"; UniqueName: Text; var Version: Text): Boolean`
- `GetVirtualTablesAppSourceLink(): Text` (internal)
- `OpenVirtualTablesApp(ErrorInfo: ErrorInfo)` (internal)
- `SetupVirtualTables(var CDSConnectionSetup: Record "CDS Connection Setup"; var ConfigId: Guid)`
- `SetupVirtualTables(var CDSConnectionSetup: Record "CDS Connection Setup"; var CrmHelper: DotNet CrmHelper; AccessToken: SecretText; var ConfigId: Guid)` (internal)
- `SetupCertificateAuthentication(var CDSConnectionSetup: Record "CDS Connection Setup")`
- `SetupCertificatetAuthenticationNoPrompt(var CDSConnectionSetup: Record "CDS Connection Setup")`
- `AddCoupledUsersToDefaultOwningTeam(var CDSConnectionSetup: Record "CDS Connection Setup"): Integer`
- `AddCoupledUsersToDefaultOwningTeam(var CDSConnectionSetup: Record "CDS Connection Setup"; var TempCRMSystemuser: Record "CRM Systemuser" temporary): Integer`
- `AddUsersToDefaultOwningTeam(var CDSConnectionSetup: Record "CDS Connection Setup"; var TempCRMSystemuser: Record "CRM Systemuser" temporary): Integer`
- `AddCoupledUsersToDefaultOwningTeam(var CDSConnectionSetup: Record "CDS Connection Setup"; var CrmHelper: DotNet CrmHelper): Integer`
- `AddUsersToDefaultOwningTeam(var CDSConnectionSetup: Record "CDS Connection Setup"; var CrmHelper: DotNet CrmHelper; var TempCRMSystemuser: Record "CRM Systemuser" temporary): Integer`
- `GetTempConnectionSetup(var TempCDSConnectionSetup: Record "CDS Connection Setup" temporary; var CDSConnectionSetup: Record "CDS Connection Setup"; AccessToken: SecretText)`
- `TestActiveConnection(): Boolean`
- `TestSystemUsersAvailability()`
- `CheckIntegrationRequirements(var CDSConnectionSetup: Record "CDS Connection Setup"; Silent: Boolean): Boolean`
- `CheckIntegrationSolutionRequirements(var CDSConnectionSetup: Record "CDS Connection Setup"; Silent: Boolean): Boolean`
- `CheckIntegrationUserRequirements(var CDSConnectionSetup: Record "CDS Connection Setup"; Silent: Boolean): Boolean`
- `CheckOwningTeamRequirements(var CDSConnectionSetup: Record "CDS Connection Setup"; Silent: Boolean): Boolean`
- `CheckIntegrationUserPrerequisites(var CDSConnectionSetup: Record "CDS Connection Setup"; AdminUserName: text; AdminPassword: SecretText; AccessToken: SecretText; AdminADDomain: Text)`
- `CheckAdminUserPrerequisites(var CDSConnectionSetup: Record "CDS Connection Setup"; AdminUserName: Text; AdminPassword: Text; AccessToken: Text; AdminADDomain: Text)`
- `IsVirtualTablesAppInstalled(var TempAdminCDSConnectionSetup: Record "CDS Connection Setup" temporary)`
- `CheckEntitiesAvailability(var CDSConnectionSetup: Record "CDS Connection Setup"; Silent: Boolean): Boolean`
- `SelectSDKVersion(var CDSConnectionSetup: Record "CDS Connection Setup"): Boolean`
- `SelectBusinessUnit(var CDSConnectionSetup: Record "CDS Connection Setup"): Boolean`
- `CheckConnectionRequiredFields(var CDSConnectionSetup: Record "CDS Connection Setup"; Silent: Boolean): Boolean`
- `CheckConnectionRequiredFieldsMatch(var CDSConnectionSetup: Record "CDS Connection Setup"; Silent: Boolean): Boolean`
- `RegisterAssistedSetup()`
- `UpdateConnectionString(var CDSConnectionSetup: Record "CDS Connection Setup")`
- `GetConnectionString(var CDSConnectionSetup: Record "CDS Connection Setup"): Text`
- `SetConnectionString(var CDSConnectionSetup: Record "CDS Connection Setup"; ConnectionString: Text)`
- `TryGetCDSCompany(var CDSCompany: Record "CDS Company")`
- `GetCDSCompany(var CDSCompany: Record "CDS Company")`
- `TryGetCompanyId(var CompanyId: Guid)`
- `GetCoupledBusinessUnitId(): Guid`
- `GetIntegrationUserId(var CDSConnectionSetup: Record "CDS Connection Setup"): Guid`
- `GetOwningTeamId(var CDSConnectionSetup: Record "CDS Connection Setup"): Guid`
- `GetDefaultOwningTeamMembership(var TempCDSTeammembership: Record "CDS Teammembership" temporary)`
- `GetDefaultOwningTeamMembership(var CDSConnectionSetup: Record "CDS Connection Setup"; var TempCDSTeammembership: Record "CDS Teammembership" temporary)`
- `AssignIntegrationRole(var CrmHelper: DotNet CrmHelper; UserName: Text)`
- `AssignTeamRole(var CrmHelper: DotNet CrmHelper; TeamId: Guid; RoleId: Guid): Boolean`
- `ImportAndConfigureIntegrationSolution(var CDSConnectionSetup: Record "CDS Connection Setup"; RenewSolution: Boolean): Boolean`
- `ImportAndConfigureIntegrationSolution(var CDSConnectionSetup: Record "CDS Connection Setup"; RenewSolution: Boolean; GetTokenFromCache: Boolean): Boolean` (internal)
- `SignInCDSAdminUser(var CDSConnectionSetup: Record "CDS Connection Setup"; var CrmHelper: DotNet CrmHelper; var AdminUser: Text; var AdminPassword: SecretText; var AccessToken: SecretText; var AdminADDomain: Text; GetTokenFromCache: Boolean)`
- `ReplaceUserNamePasswordInConnectionString(CDSConnectionSetup: Record "CDS Connection Setup"; NewUserName: Text; NewPassword: SecretText): SecretText`
- `GetDataverseCloudEndpoints(): Interface "Dataverse Cloud Endpoints"` (internal)
- `GetAccessToken(ResourceURL: Text; GetTokenFromCache: Boolean; var AccessToken: SecretText)`
- `GetBusinessEventAccessToken(ResourceURL: Text; GetTokenFromCache: Boolean; var AccessToken: SecretText)`
- `GetRedirectURL(): Text`
- `GetCDSConnectionClientId(): Text`
- `GetCDSConnectionFirstPartyAppId(): Text`
- `GetCDSConnectionClientSecret(): SecretText`
- `GetCDSConnectionFirstPartyAppCertificate(): Text`
- `ImportIntegrationSolution(var CDSConnectionSetup: Record "CDS Connection Setup"; var CrmHelper: DotNet CrmHelper; AdminUsername: Text; AdminPassword: SecretText; AccessToken: SecretText; AdminADDomain: Text; RenewSolution: Boolean)`
- `ConfigureIntegrationSolution(var CDSConnectionSetup: Record "CDS Connection Setup"; var CrmHelper: DotNet CrmHelper; AdminUserName: Text; AdminPassword: SecretText; AccessToken: SecretText; AdminADDomain: Text; IsSilent: Boolean)`
- `JITProvisionFirstPartyApp(var CrmHelper: DotNet CrmHelper)`
- `HasCompanyIdField(TableId: Integer): Boolean`
- `CheckCompanyId(var RecRef: RecordRef): Boolean`
- `SetCompanyId(var RecRef: RecordRef): Boolean`
- `CheckCompanyIdNoTelemetry(var RecRef: RecordRef): Boolean`
- `ResetCompanyId(var RecRef: RecordRef): Boolean`
- `CheckOwningTeam(var RecRef: RecordRef): Boolean`
- `CheckOwningTeam(var RecRef: RecordRef; SkipBusinessUnitCheck: Boolean): Boolean`
- `CheckOwningTeam(var RecRef: RecordRef; TeamId: Guid; SkipBusinessUnitCheck: Boolean): Boolean`
- `CheckOwningUser(var RecRef: RecordRef; UserId: Guid): Boolean`
- `CheckOwningUser(var RecRef: RecordRef; UserId: Guid; SkipBusinessUnitCheck: Boolean): Boolean`
- `SetOwningTeam(var RecRef: RecordRef): Boolean`
- `SetOwningTeam(var RecRef: RecordRef; TeamId: Guid; SkipBusinessUnitCheck: Boolean): Boolean`
- `SetOwningUser(var RecRef: RecordRef; UserId: Guid; SkipBusinessUnitCheck: Boolean): Boolean`
- `FindCompanyIdField(var RecRef: RecordRef; var CompanyIdFldRef: FieldRef): Boolean` (internal)
- `FindOwnerTypeField(var RecRef: RecordRef; var OwnerIdTypeFldRef: FieldRef): Boolean`
- `ResetCache()`
- `GetIntegrationSolutions(var SolutionUniqueNameList: List of [Text])`
- `GetIntegrationRequiredRoles(var RequiredRoleIdList: List of [Guid])`
- `CheckModifyConnectionURL(var ServerAddress: Text[250])`
- `InitializeConnection(var CrmHelper: DotNet CrmHelper): Boolean`
- `InitializeConnection(var CrmHelper: DotNet CrmHelper; var CDSConnectionSetup: Record "CDS Connection Setup"): Boolean`
- `SendConnectionDisabledNotification(DisableReason: Text[250])` (internal)
- `SendMultipleCompaniesNotification()`
- `MultipleCompanyNotificationHelpLink(Notification: Notification)`
- `DisableMultipleCompanyNotification(Notification: Notification)`
- `OpenIntegrationTableMappings(Notification: Notification)`
- `InsertBusinessUnitCoupling(var CDSConnectionSetup: Record "CDS Connection Setup")`
- `ModifyBusinessUnitCoupling(var CDSConnectionSetup: Record "CDS Connection Setup")`
- `DeleteBusinessUnitCoupling(var CDSConnectionSetup: Record "CDS Connection Setup")`
- `TestConnection(var CDSConnectionSetup: Record "CDS Connection Setup"): Boolean`
- `TryCheckCredentials(var CDSConnectionSetup: Record "CDS Connection Setup")`
- `CheckCredentials(var CDSConnectionSetup: Record "CDS Connection Setup")`
- `GetCDSVersion(var CDSConnectionSetup: Record "CDS Connection Setup"; var CDSVersion: Text)`
- `InitializeProxyVersionList(var TempStack: Record TempStack temporary)`
- `GetLastProxyVersionItem(): Integer`
- `ClearConnectionDisableReason(var CDSConnectionSetup: Record "CDS Connection Setup")`
- `UpdateDomainName(var CDSConnectionSetup: Record "CDS Connection Setup")`
- `CheckUserName(var CDSConnectionSetup: Record "CDS Connection Setup")`
- `GetAuthenticationTypeToken(var CDSConnectionSetup: Record "CDS Connection Setup"): Text`
- `GetAuthenticationTypeToken(var CDSConnectionSetup: Record "CDS Connection Setup"; Domain: Text): Text`
- `IsCDSVersionValid(CDSVersion: Text): Boolean`
- `IsSolutionVersionValid(SolutionVersion: Text): Boolean`
- `MultipleCompaniesConnected(): Boolean`
- `GetBusinessEventsSupported(): Boolean` (internal)
- `UpdateBusinessEventsSetupFromWizard(var SourceCDSConnectionSetup: Record "CDS Connection Setup")`
- `UpdateConnectionSetupFromWizard(var SourceCDSConnectionSetup: Record "CDS Connection Setup"; PasswordText: SecretText)`
- `GetTempConnectionName(): Text`
- `GetDefaultBusinessUnitName(): Text[160]`
- `GetCompanyExternalId(): Text[36]`
- `ShowIntegrationUser(CDSConnectionSetup: Record "CDS Connection Setup")`
- `ShowOwningTeam(CDSConnectionSetup: Record "CDS Connection Setup")`
- `ShowSyntheticRelationsConfig()` (internal)
- `ShowVirtualTablesConfig(CDSConnectionSetup: Record "CDS Connection Setup")` (internal)
- `GetCRMEntityUrlFromCRMID(ServerAddress: Text; TableId: Integer; CRMId: Guid; AppName: Text): Text` (internal)
- `GetCRMEntityListUrl(var CDSConnectionSetup: Record "CDS Connection Setup"; EntityTypeName: Text; AppName: Text): Text` (internal)
- `ScheduleRebuildingOfCouplingTable()`
- `GetOptionSetMetadata(EntityName: Text; FieldName: Text): Dictionary of [Integer, Text]`
- `InsertOptionSetMetadata(EntityName: Text; FieldName: Text; NewOptionLabel: Text): Integer`
- `InsertOptionSetMetadataWithOptionValue(EntityName: Text; FieldName: Text; NewOptionLabel: Text; NewOptionValue: Integer): Integer`
- `UpdateOptionSetMetadata(EntityName: Text; FieldName: Text; OptionValue: Integer; NewOptionLabel: Text)`
- `RegisterConfiguredConnection(var CrmHelper: DotNet CrmHelper): Text` (internal)
- `LoadAvailableVirtualTables(var CDSAvVirtualTableBuffer: Record "CDS Av. Virtual Table Buffer"; LoadOnlyVisible: Boolean)` (internal)
- `EnableVirtualTables(FilterTxt: Text)` (internal)
- `ScheduleEnablingVirtualTables(FilterList: List of [Text])`
- `OpenEnableVirtualTablesJobFromNotification(ScheduledJobNotification: Notification)`
- `LearnMoreDisablingCRMConnection(ErrorInfo: ErrorInfo)`
- `CleanCDSIntegration(CompanyName: Text)` (internal)
- `GetEntityMetadata(TableNo: Integer): Text` (internal)
- `GetEntityFields(TableNo: Integer; var IntegrationField: Record "Integration Field")` (internal)

Plus 97 local procedures.

## Calls

From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an `Object::"Name"` argument. Interface dispatch and calls through events are not counted, so the list is not complete.

- [Codeunit 457 "Environment Information"](../codeunit/457.md) (12 calls: `ConfigureVirtualTables → GetEnvironmentName`, `EnableAADApp → IsSaaSInfrastructure`, `GetBusinessEventsSupported → IsSaaSInfrastructure`, …)
- [Codeunit 501 "OAuth2"](../codeunit/501.md) (8 calls: `GetAccessToken → AcquireAuthorizationCodeTokenFromCache`, `GetAccessToken → AcquireAuthorizationCodeTokenFromCacheWithCertificate`, `GetAccessToken → AcquireTokenByAuthorizationCode`, …)
- [Codeunit 1291 "DotNet Exception Handler"](../codeunit/1291.md) (7 calls: `EnrichWithDotNetException → Collect`, `EnrichWithDotNetException → GetMessage`, `ProcessConnectionFailures → CastToType`, …)
- [Codeunit 7200 "CDS Integration Mgt."](../codeunit/7200.md) (6 calls: `GetIntegrationRequiredRoles → OnGetIntegrationRequiredRoles`, `GetIntegrationSolutions → OnGetIntegrationSolutions`, `HasCompanyIdField → OnHasCompanyIdField`, …)
- [Codeunit 2200 "Azure Key Vault"](../codeunit/2200.md) (5 calls: `GetCDSConnectionClientId → GetAzureKeyVaultSecret`, `GetCDSConnectionClientSecret → GetAzureKeyVaultSecret`, `GetCDSConnectionFirstPartyAppCertificate → GetAzureKeyVaultCertificate`, …)
- [Codeunit 5330 "CRM Integration Management"](../codeunit/5330.md) (5 calls: `GetCRMEntityUrlFromCRMID → GetCRMEntityTypeName`, `ShowIntegrationUser → GetCRMEntityUrlFromCRMID`, `ShowOwningTeam → GetCRMEntityUrlFromCRMID`, …)
- [Codeunit 1990 "Guided Experience"](../codeunit/1990.md) (3 calls: `RegisterAssistedSetup → AddTranslationForSetupObjectTitle`, `RegisterAssistedSetup → Exists`, `RegisterAssistedSetup → InsertAssistedSetup`)
- [Codeunit 43 "Language"](../codeunit/43.md) (2 calls: `GetVirtualTablesAppSourceLink → GetCultureName`, `RegisterAssistedSetup → GetDefaultApplicationLanguageId`)
- [Codeunit 150 "System Initialization"](../codeunit/150.md) (1 call: `ShowError → IsInProgress`)
- [Codeunit 433 "Azure AD Tenant"](../codeunit/433.md) (1 call: `GetAadTenantId → GetAadTenantId`)
- [Codeunit 453 "Job Queue - Enqueue"](../codeunit/453.md) (1 call: `ScheduleEnablingVirtualTables → (object)`)
- [Codeunit 9005 "Url Helper"](../codeunit/9005.md) (1 call: `ConfigureVirtualTables → IsPPE`)
- [Codeunit 9557 "Table Key"](../codeunit/9557.md) (1 call: `CleanCDSIntegration → DisableAll`)
- [Codeunit 9801 "Identity Management"](../codeunit/9801.md) (1 call: `EnableAADApp → IsUserNamePasswordAuthentication`)
- [Page 1313 "Dynamics CRM Admin Credentials"](../page/1313.md) (1 call: `PromptForAdminCredentials → (object)`)
- [Page 5332 "SDK Version List"](../page/5332.md) (1 call: `SelectSDKVersion → (object)`)
- [Page 5335 "Integration Table Mapping List"](../page/5335.md) (1 call: `OpenIntegrationTableMappings → (object)`)
- [Page 672 "Job Queue Entries"](../page/672.md) (1 call: `OpenEnableVirtualTablesJobFromNotification → (object)`)
- [Page 7203 "CDS Business Units"](../page/7203.md) (1 call: `SelectBusinessUnit → (object)`)
- [Page extension 9204 "User Settings"](../pageextension/9204.md) (1 call: `GetVirtualTablesAppSourceLink → (object)`)

## Called by

- [Codeunit 7200 "CDS Integration Mgt."](../codeunit/7200.md) (28 calls: `ActivateConnection → ActivateConnection`, `CheckCompanyId → CheckCompanyId`, `CheckOwningTeam → CheckOwningTeam`, …)
- [Codeunit 7205 "CDS Int. Table. Subscriber"](../codeunit/7205.md) (26 calls: `AddCoupledUserToDefaultOwningTeam → AddUsersToDefaultOwningTeam`, `AddCoupledUserToDefaultOwningTeam → IsIntegrationEnabled`, `AddCoupledUserToDefaultOwningTeam → SignInCDSAdminUser`, …)
- [Page 7200 "CDS Connection Setup"](../page/7200.md) (17 calls: `InitializeDefaultProxyVersion → GetLastProxyVersionItem`, `OnInit → GetBaseSolutionDisplayName`, `OnInit → GetBaseSolutionUniqueName`, …)
- [Page 7201 "CDS Connection Setup Wizard"](../page/7201.md) (15 calls: `AddCoupledUsersToDefaultOwningTeam → AddCoupledUsersToDefaultOwningTeam`, `ConfigureCDSSolution → ActivateConnection`, `ConfigureCDSSolution → CheckCredentials`, …)
- [Table 6623 "FS Connection Setup"](../table/6623.md) (13 calls: `DeployFSSolution → GetAccessToken`, `GetConnectionStringWithCredentials → GetCDSConnectionClientId`, `GetConnectionStringWithCredentials → GetCDSConnectionClientSecret`, …)
- [Codeunit 5341 "CRM Int. Table. Subscriber"](../codeunit/5341.md) (12 calls: `OnFindingIfJobNeedsToBeRun → IsIntegrationEnabled`, `OnFindingIfJobNeedsToBeRun → RegisterConnection`, `OnFindingIfJobNeedsToBeRun → UnregisterConnection`, …)
- [Codeunit 5330 "CRM Integration Management"](../codeunit/5330.md) (10 calls: `CheckOrEnableCRMConnection → RegisterAssistedSetup`, `ImportCRMSolution → ActivateConnection`, `ImportCRMSolution → AssignTeamRole`, …)
- [Codeunit 6615 "FS Integration Mgt."](../codeunit/6615.md) (10 calls: `ImportFSSolution → ActivateConnection`, `ImportFSSolution → AssignTeamRole`, `ImportFSSolution → GetAuthenticationTypeToken`, …)
- [Codeunit 7203 "CDS Environment"](../codeunit/7203.md) (9 calls: `GetCDSEnvironmentCount → GetDataverseCloudEndpoints`, `GetGlobalDiscoverabilityOnBehalfTokenAsSecretText → GetDataverseCloudEndpoints`, `GetGlobalDiscoverabilityOnBehalfTokenAsSecretText → GetRedirectURL`, …)
- [Table 5330 "CRM Connection Setup"](../table/5330.md) (8 calls: `DeployCRMSolution → GetAccessToken`, `GetSecretConnectionStringWithCredentials → GetCDSConnectionClientId`, `GetSecretConnectionStringWithCredentials → GetCDSConnectionClientSecret`, …)
- [Table 7200 "CDS Connection Setup"](../table/7200.md) (8 calls: `DisableConnection → UnregisterConnection`, `EnableConnection → CheckIntegrationRequirements`, `EnableConnection → ClearConnectionDisableReason`, …)
- [Codeunit 7202 "Synthetic Relations"](../codeunit/7202.md) (6 calls: `CreateAlternateKeyForColumns → RegisterConfiguredConnection`, `CreateSyntheticRelation → RegisterConfiguredConnection`, `DeleteSyntheticRelation → RegisterConfiguredConnection`, …)
- [Page 7205 "CDS Integration User Roles"](../page/7205.md) (5 calls: `OnInit → CheckConnectionRequiredFields`, `OnInit → GetIntegrationRequiredRoles`, `OnInit → GetIntegrationUserId`, …)
- [Page 7206 "CDS Owning Team Roles"](../page/7206.md) (5 calls: `OnInit → CheckConnectionRequiredFields`, `OnInit → GetIntegrationRequiredRoles`, `OnInit → GetOwningTeamId`, …)
- [Page 7213 "CRM BC Virtual Table Config."](../page/7213.md) (5 calls: `InitAsAdmin → GetAccessToken`, `InitAsAdmin → GetTempConnectionSetup`, `Initialize → GetTempConnectionName`, …)
- [Codeunit 5337 "CDS Int. Table Uncouple"](../codeunit/5337.md) (4 calls: `ResetStuckCompanyId → FindCompanyIdField`, `ResetStuckCompanyId → HasCompanyIdField`, `ResetStuckCompanyId → ResetCompanyId`, …)
- [Page 7204 "CDS Integration Solutions"](../page/7204.md) (4 calls: `OnInit → CheckConnectionRequiredFields`, `OnInit → GetIntegrationSolutions`, `OnInit → GetTempConnectionName`, …)
- [Page 5330 "CRM Connection Setup"](../page/5330.md) (3 calls: `OnOpenPage → SendMultipleCompaniesNotification`, `TryDetectMultipleCompanies → MultipleCompaniesConnected`, `UpdateEnableFlags → IsIntegrationEnabled`)
- [Page 5340 "CRM Systemuser List"](../page/5340.md) (3 calls: `AddUsersToDefaultOwningTeam → AddUsersToDefaultOwningTeam`, `AddUsersToDefaultOwningTeam → GetDefaultOwningTeamMembership`, `OnInit → GetDefaultOwningTeamMembership`)
- [Page 6612 "FS Connection Setup"](../page/6612.md) (3 calls: `OnOpenPage → SendMultipleCompaniesNotification`, `TryDetectMultipleCompanies → MultipleCompaniesConnected`, `UpdateEnableFlags → IsIntegrationEnabled`)
- [Page 7202 "CDS Admin Credentials"](../page/7202.md) (3 calls: `SetConnectionSetupProperties → CheckAdminUserPrerequisites`, `SetConnectionSetupProperties → GetLastProxyVersionItem`, `SetConnectionSetupProperties → UpdateConnectionString`)
- [Page 7209 "CDS Couple Salespersons"](../page/7209.md) (3 calls: `AddUsersToDefaultOwningTeam → AddUsersToDefaultOwningTeam`, `AddUsersToDefaultOwningTeam → GetDefaultOwningTeamMembership`, `OnInit → GetDefaultOwningTeamMembership`)
- [Table 5335 "Integration Table Mapping"](../table/5335.md) (2 calls: `DisableMultiCompanySynchronization → FindCompanyIdField`, `EnableMultiCompanySynchronization → FindCompanyIdField`)
- [Codeunit 5342 "CRM Synch. Helper"](../codeunit/5342.md) (1 call: `FulfillSalesOrder → InitializeConnection`)
- [Codeunit 5343 "CRM Sales Order to Sales Order"](../codeunit/5343.md) (1 call: `SetCompanyId → IsIntegrationEnabled`)
- [Codeunit 5372 "Enable CDS Virtual Tables"](../codeunit/5372.md) (1 call: `OnRun → EnableVirtualTables`)
- [Codeunit 6154 "API Webhook Notification Send"](../codeunit/6154.md) (1 call: `AddTokenToRequestHeader → GetBusinessEventAccessToken`)
- [Codeunit 6610 "FS Int. Table Subscriber"](../codeunit/6610.md) (1 call: `SetCompanyId → CheckCompanyIdNoTelemetry`)
- [Codeunit 7206 "CDS Setup Certificate Auth"](../codeunit/7206.md) (1 call: `OnRun → SetupCertificatetAuthenticationNoPrompt`)
- [Codeunit 8912 "Environment Cleanup Subs"](../codeunit/8912.md) (1 call: `ClearCompanyConfigGeneral → CleanCDSIntegration`)
- [Page 1817 "CRM Connection Setup Wizard"](../page/1817.md) (1 call: `FinalizeSetup → GetAccessToken`)
- [Page 5331 "CRM Full Synch. Review"](../page/5331.md) (1 call: `OnOpenPage → MultipleCompaniesConnected`)
- [Page 5372 "CDS Available Virtual Tables"](../page/5372.md) (1 call: `OnOpenPage → LoadAvailableVirtualTables`)
- [Page 6613 "FS Connection Setup Wizard"](../page/6613.md) (1 call: `FinalizeSetup → GetAccessToken`)
- [Page 7208 "CDS Full Synch. Review"](../page/7208.md) (1 call: `OnOpenPage → MultipleCompaniesConnected`)

## Recent changes

- 2026-10-05 [#9953 Rename AppSource UI text to Marketplace](../../changes/bcapps/9953.md) (main, BC30, other)
- 2026-09-22 [#11171 [Security][Hardening] Validate integration URLs stored in setup tables](../../changes/bcapps/11171.md) (main, BC30, fix)
- 2026-08-19 [#10207 [Dataverse] Use Truncate for CRM Integration Record cleanup during environment copy](../../changes/bcapps/10207.md) (main, BC30, performance)
- 2026-07-09 [#9127 Add Dataverse Cloud endpoints override for sovereign clouds](../../changes/bcapps/9127.md) (main, BC30, feature)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC24-25, BC27-30

Source: AL metadata extracted from the code (names, ids, signatures, properties); no code bodies (D10).

## Ask your agent

Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: `bcatlas_resolve_node(object_type: "codeunit", object_name: "CDS Integration Impl.")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
