Codeunit 7233 "Master Data Management"
MasterDataManagement · Microsoft.Integration.MDM
Across versions
- BC23-28not present
- BC29present
- BC30changed
Neighbourhood 23 connected objects and pages
MasterDataManagement · Microsoft.Integration.MDM · BC29-30 · source at ea08af5e · facts from BC29
Properties
| Property | Value |
|---|---|
| SingleInstance | true |
| Permissions | tabledata “Master Data Mgt. Coupling” = rimd, tabledata “Integration Field Mapping” = ri, tabledata “Integration Table Mapping” = rimd, tabledata “Integration Synch. Job” = r, tabledata “Job Queue Entry” = rimd, tabledata “Scheduled Task” = rm, tabledata “Master Data Management Setup” = rimd |
Events published
OnBeforeGetIntegrationTableMapping(var IntegrationTableMapping: Record "Integration Table Mapping"; TableID: Integer)(integration)OnBeforeHandleCustomIntegrationTableMapping(var IsHandled: Boolean; IntegrationTableMappingName: Code[20])(integration)OnBeforeSynchronyzeNowQuestion(var AllowedDirection: Integer; var IsHandled: Boolean)(integration)OnIsDataSynchRecord(TableID: Integer; var isIntegrationRecord: Boolean)(integration)OnEnabledDatabaseTriggersSetup(TableID: Integer; var Enabled: Boolean)(integration)OnGetIntegrationSystemIdFromRecRef(IntegrationRecordRef: RecordRef; var IntegrationRecordSystemId: Guid; var IsHandled: Boolean)(integration)OnGetIntegrationRecordRefByIntegrationSystemId(var IntegrationTableMapping: Record "Integration Table Mapping"; ID: Variant; var IntegrationRecordRef: RecordRef; var Found: Boolean; var IsHandled: Boolean)(integration)OnGetIntegrationRecordRefFromCoupling(IntegrationTableID: Integer; var MasterDataMgtCoupling: Record "Master Data Mgt. Coupling"; var RecRef: RecordRef; var Found: Boolean; var IsHandled: Boolean)(integration)OnRemoveSubsidiarySubscriptionFromMasterCompany(MasterCompanyName: Text[30]; SubsidiaryCompanyName: Text[30]; var IsHandled: Boolean)(integration)OnAddSubsidiarySubscriptionToMasterCompany(MasterCompanyName: Text[30]; SubsidiaryCompanyName: Text[30]; var IsHandled: Boolean)(integration)OnGetIntegrationRecordSystemId(var SourceRecordRef: RecordRef; var IntegrationTableUid: Guid; var IsHandled: Boolean)(integration)OnSetIntegrationTableFilter(IntegrationTableMapping: Record "Integration Table Mapping"; var RecRef: RecordRef; var IsHandled: Boolean)(integration)OnGetIntegrationRecordRef(IntegrationTableMapping: Record "Integration Table Mapping"; var SourceRecordRef: RecordRef; var IsHandled: Boolean)(integration)OnGetIntegrationRecordRefBySystemId(IntegrationTableMapping: Record "Integration Table Mapping"; var SourceRecordRef: RecordRef; IntRecSystemId: Guid; var IsHandled: Boolean)(integration)OnUpdateChildContactsParentCompany(var SourceRecordRef: RecordRef; var IsHandled: Boolean)(integration)OnHandleOnAfterDeleteIntegrationTableMapping(var IntegrationTableMapping: Record "Integration Table Mapping"; RunTrigger: Boolean; var IsHandled: Boolean)(integration)OnHandleRecreateJobQueueEntryFromIntegrationTableMapping(var JobQueueEntry: Record "Job Queue Entry"; var IntegrationTableMapping: Record "Integration Table Mapping"; var IsHandled: Boolean)(integration)OnLocalRecordChangeOverwrite(var SourceFieldRef: FieldRef; var DestinationFieldRef: FieldRef; var ThrowError: Boolean; var IsHandled: Boolean)(integration)OnIsRecordRefModifiedAfterRecordLastSynch(var SourceRecordRef: RecordRef; LastModifiedOn: DateTime; var IsModified: Boolean; var IsHandled: Boolean)(integration)OnAfterSetIntegrationTableMappingFilterForInitialSynch(var IntegrationTableMappingFilter: Text)(integration)OnSetSourceCompanyName(var SourceCompanyName: Text[30]; TableID: Integer)(integration)OnBeforeRescheduleJobQueueEntries(TableNo: Integer; var RescheduleOffSetInMs: Integer)(integration)OnRenameDestination(var RenamedDestinationRecordRef: RecordRef; var SourcePrimaryKeyRef: KeyRef; var Handled: Boolean)(integration)
Event subscriptions
- OnDeletionConflictDetected subscribes to Codeunit “Integration Rec. Synch. Invoke” OnDeletionConflictDetected
- OnInitializingNotificationWithDefaultState subscribes to Page “My Notifications” OnInitializingNotificationWithDefaultState
- HandleOnIsDataIntegrationEnabled subscribes to Table “Integration Synch. Job Errors” OnIsDataIntegrationEnabled
- ForceSynchronizeDataIntegration subscribes to Table “Integration Synch. Job Errors” OnForceSynchronizeDataIntegration
- ForceSynchronizeRecords subscribes to Table “Integration Synch. Job Errors” OnForceSynchronizeRecords
- HandleOnAfterGetDatabaseTableTriggerSetup subscribes to Codeunit “GlobalTriggerManagement” OnAfterGetDatabaseTableTriggerSetup
- HandleOnAfterOnDatabaseInsert subscribes to Codeunit “GlobalTriggerManagement” OnAfterOnDatabaseInsert
- HandleOnDatabaseModify subscribes to Codeunit “GlobalTriggerManagement” OnAfterOnDatabaseModify
- HandleOnDatabaseRename subscribes to Codeunit “GlobalTriggerManagement” OnAfterOnDatabaseRename
- HandleOnIsIntegrationRecordSkipped subscribes to Codeunit “Integration Record Management” OnIsIntegrationRecordSkipped
- HandleOnUpdateIntegrationRecordTimestamp subscribes to Codeunit “Integration Rec. Synch. Invoke” OnUpdateIntegrationRecordTimestamp
- HandleOnUpdateIntegrationTableTimestamp subscribes to Codeunit “Integration Record Management” OnUpdateIntegrationTableTimestamp
- HandleOnIsRecordModifiedAfterRecordLastSynch subscribes to Codeunit “Integration Record Management” OnIsRecordModifiedAfterRecordLastSynch
- HandleOnIsRecordRefModifiedAfterRecordLastSynch subscribes to Codeunit “Integration Record Management” OnIsRecordRefModifiedAfterRecordLastSynch
- HandleOnIsModifiedAfterIntegrationTableRecordLastSynch subscribes to Codeunit “Integration Record Management” OnIsModifiedAfterIntegrationTableRecordLastSynch
- HandleOnUpdateIntegrationTableCouplingForRecordID subscribes to Codeunit “Integration Record Management” OnUpdateIntegrationTableCouplingForRecordID
- HandleOnRemoveIntegrationTableCouplingForRecordId subscribes to Codeunit “Integration Record Management” OnRemoveIntegrationTableCouplingForRecordId
- HandleOnFindIntegrationTableUIdByRecordRef subscribes to Codeunit “Integration Record Management” OnFindIntegrationTableUIdByRecordRef
- HandleOnFindIntegrationTableUIdByRecordId subscribes to Codeunit “Integration Record Management” OnFindIntegrationTableUIdByRecordId
- HandleOnFindRecordIdByIntegrationTableUid subscribes to Codeunit “Integration Record Management” OnFindRecordIdByIntegrationTableUid
- HandleOnMarkLastSynchAsFailure subscribes to Codeunit “Integration Record Management” OnMarkLastSynchAsFailure
- HandleOnRemoveIntegrationTableCouplingForRecordRef subscribes to Codeunit “Integration Record Management” OnRemoveIntegrationTableCouplingForRecordRef
- HandleOnRemoveIntegrationTableCoupling subscribes to Codeunit “Int. Rec. Uncouple Invoke” OnRemoveIntegrationTableCoupling
- HandleOnUpdateIntegrationTableCouplingForRecordRef subscribes to Codeunit “Integration Record Management” OnUpdateIntegrationTableCouplingForRecordRef
- HandleOnUpdateIntegrationRecordCoupling subscribes to Codeunit “Integration Rec. Synch. Invoke” OnUpdateIntegrationRecordCoupling
- HandleOnSynchronizeNow subscribes to Table “Integration Table Mapping” OnSynchronizeNow
Procedures
GetFeatureName(): Text(internal)GetTelemetryCategory(): Text(internal)LogSynchronizationUsage()(internal)IsEnabled(): Boolean(internal)UpdateMultipleNow(RecVariant: Variant)(internal)UpdateMultipleNow(RecVariant: Variant; IsOption: Boolean)(internal)UpdateOneNow(RecordID: RecordID)(internal)GetIntegrationSystemIdFromRecRef(IntegrationRecordRef: RecordRef): Guid(internal)GetIntegrationRecordRef(var IntegrationTableMapping: Record "Integration Table Mapping"; ID: Variant; var IntegrationRecordRef: RecordRef): Boolean(internal)CreateNewRecordsInLocalSystem(var IntegrationIdListDictionary: Dictionary of [Code[20], List of [Guid]])(internal)CreateNewRecords(var LocalIdListDictionary: Dictionary of [Code[20], List of [Guid]]; var IntegrationSystemIdListDictionary: Dictionary of [Code[20], List of [Guid]])(internal)RepairBrokenCouplings()(internal)RepairBrokenCouplings(UseLocalRecordsOnly: Boolean)(internal)RemoveCoupling(TableID: Integer; IntegrationTableID: Integer)(internal)MatchBasedCoupling(TableID: Integer): Boolean(internal)MatchBasedCoupling(TableID: Integer; SkipSettingCriteria: Boolean; IsFullSync: Boolean; InForeground: Boolean): BooleanRemoveCoupling(RecordID: RecordID; Schedule: Boolean): Boolean(internal)RemoveCoupling(TableID: Integer; IntegrationTableID: Integer; IntegrationSystemId: Guid; Schedule: Boolean): Boolean(internal)GetIntegrationTableMapping(var IntegrationTableMapping: Record "Integration Table Mapping"; TableID: Integer)(internal)EnqueueFullSyncJob(Name: Code[20]): Guid(internal)EnqueueSyncJob(IntegrationTableMapping: Record "Integration Table Mapping"; SystemIds: List of [Guid]; IntegrationSystemIds: List of [Guid]; Direction: Integer; SynchronizeOnlyCoupledRecords: Boolean): Boolean(internal)AddIntegrationTableMapping(var IntegrationTableMapping: Record "Integration Table Mapping")(internal)AddIntegrationTableMapping(var IntegrationTableMapping: Record "Integration Table Mapping"; SynchOnlyCoupledRecords: Boolean)(internal)ResetIntTableMappingDefaultConfiguration(var IntegrationTableMapping: Record "Integration Table Mapping")(internal)HandleOnDeletionConflictDetected(var IntegrationTableMapping: Record "Integration Table Mapping"; var SourceRecordRef: RecordRef; var DeletionConflictHandled: Boolean)(internal)DisableNotification(HostNotification: Notification)(internal)GetCommonNotificationID(): Guid(internal)OpenIntegrationSynchronizationJobsFromNotification(HostNotification: Notification)(internal)IsEventDrivenReschedulingDisabled(TableID: Integer; CompanyName: Text[30]): Boolean(internal)IsDataSynchRecord(TableID: Integer; CompanyName: Text[30]): Boolean(internal)ReactivateJobForTable(TableNo: Integer)(internal)UserCanRescheduleJob(): Boolean(internal)GetIntegrationRecordRef(IntegrationTableID: Integer; var MasterDataMgtCoupling: Record "Master Data Mgt. Coupling"; var RecRef: RecordRef): Boolean(internal)RemoveSubsidiarySubscriptionFromMasterCompany(MasterCompanyName: Text[30]; SubsidiaryCompanyName: Text[30])(internal)GetIntegrationRecRefCount(var IntegrationTableMapping: Record "Integration Table Mapping"): Integer(internal)AddSubsidiarySubscriptionToMasterCompany(MasterCompanyName: Text[30]; SubsidiaryCompanyName: Text[30])(internal)FindMappingByIntegrationRecordId(var IntegrationTableMapping: Record "Integration Table Mapping"; var MasterDataMgtCoupling: Record "Master Data Mgt. Coupling"): Boolean(internal)CheckSetupPermissions()(internal)CheckUsagePermissions()(internal)CheckTaskSchedulePermissions()(internal)
Plus 45 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 7230 “Master Data Mgt. Setup Default” (37 calls:
EnqueueCouplingJob → CreateCoupleJobQueueEntry,EnqueueFullSyncJob → CreateJobQueueEntry,EnqueueSyncJob → CreateJobQueueEntry, …) - Codeunit 8703 “Feature Telemetry” (4 calls:
EnqueueFullSyncJob → LogUptake,EnqueueSyncJob → LogUptake,LogSynchronizationUsage → LogUptake, …) - Codeunit 10 “Type Helper” (3 calls:
HandleOnIsModifiedAfterIntegrationTableRecordLastSynch → CompareDateTime,HandleOnIsRecordModifiedAfterRecordLastSynch → CompareDateTime,HandleOnIsRecordRefModifiedAfterRecordLastSynch → CompareDateTime) - Codeunit 5336 “Integration Record Synch.” (3 calls:
GetTableViewForIntegrationSystemIds → JoinIDs,GetTableViewForSystemIds → JoinIDs,UpdateIntRecords → GetIdFilterList) - Codeunit 5335 “Integration Table Synch.” (2 calls:
GetSelectedSingleSyncDirection → CheckTransferFields,HandleOnUpdateIntegrationRecordTimestamp → GetRowLastModifiedOn) - Codeunit 5338 “Integration Record Management” (2 calls:
HandleOnUpdateIntegrationRecordCoupling → UpdateIntegrationTableCoupling,HandleOnUpdateIntegrationRecordTimestamp → UpdateIntegrationTableTimestamp) - Codeunit 5345 “Integration Rec. Synch. Invoke” (2 calls:
GetSelectedSingleSyncDirection → WasModifiedAfterLastSynch,WasRecordModifiedAfterLastSynch → WasModifiedAfterLastSynch) - Codeunit 7235 “Master Data Mgt. Table Couple” (1 call:
PerformCoupling → PerformScheduledCoupling) - Codeunit 7237 “Master Data Mgt. Subscribers” (1 call:
HandleOnUpdateIntegrationRecordTimestamp → GetRowLastModifiedOn) - Codeunit 7249 “MDM Cross-Env Data Source” (1 call:
GetIntegrationRecRefCount → SourceHasRecords) - Codeunit 9900 “Data Upgrade Mgt.” (1 call:
ReactivateJobForTable → IsUpgradeInProgress)
Called by
- Codeunit 7237 “Master Data Mgt. Subscribers” (30 calls:
FixPrimaryContactNo → IsEnabled,GetRowLastModifiedOn → OnGetIntegrationRecordRefBySystemId,HandleOnAfterDeleteIntegrationTableMapping → OnHandleOnAfterDeleteIntegrationTableMapping, …) - Table 7231 “Master Data Mgt. Coupling” (6 calls:
GetTableID → GetTelemetryCategory,IsIntegrationRecordRefCoupled → GetIntegrationSystemIdFromRecRef,RepairTableIdByIntegrationRecord → FindMappingByIntegrationRecordId, …) - Codeunit 7231 “Integration Master Data Synch.” (5 calls:
FindFailedNotSkippedIntegrationRecords → OnSetSourceCompanyName,FindModifiedCrossEnvironmentRecords → GetTelemetryCategory,FindModifiedIntegrationRecords → GetTelemetryCategory, …) - Table 7230 “Master Data Management Setup” (5 calls:
DisableConnection → RemoveSubsidiarySubscriptionFromMasterCompany,EnableConnection → AddSubsidiarySubscriptionToMasterCompany,EnableConnection → GetFeatureName, …) - Table 7233 “Master Data Full Synch. R. Ln.” (5 calls:
GenerateDataSynchReviewLines → OnAfterSetIntegrationTableMappingFilterForInitialSynch,GetInitialSynchRecommendation → GetIntegrationRecRefCount,InsertOrModifyMasterDataFullSynchRLns → GetTelemetryCategory, …) - Codeunit 7235 “Master Data Mgt. Table Couple” (4 calls:
CoupleRecords → CreateNewRecordsInLocalSystem,CoupleRecords → GetTelemetryCategory,SynchronizeCoupledRecords → EnqueueSyncJob, …) - Codeunit 7249 “MDM Cross-Env Data Source” (3 calls:
LogConsentRequired → GetTelemetryCategory,LogParseFailure → GetTelemetryCategory,LogProbeFailure → GetTelemetryCategory) - Page 7230 “Master Data Management Setup” (3 calls:
OnOpenPage → GetFeatureName,TryExportSetup → GetTelemetryCategory,TryImportSetup → GetTelemetryCategory) - Codeunit 7236 “Master Data Mgt. Tbl. Uncouple” (2 calls:
UncoupleAllCoupledRecords → GetIntegrationRecordRef,UncoupleFilteredIntegrationRecords → OnSetSourceCompanyName) - Codeunit 7245 “MDM Cross-Env Change Detector” (2 calls:
DetectChanges → GetTelemetryCategory,ProcessDetectionResponse → GetTelemetryCategory) - Codeunit 7240 “MDM Local Data Source” (1 call:
OpenSourceRecordRef → OnSetSourceCompanyName) - Codeunit 7246 “MDM Source Capabilities” (1 call:
RaiseCapabilitiesParseError → GetTelemetryCategory) - Codeunit 7248 “MDM Source Response” (1 call:
LogSkippedField → GetTelemetryCategory) - Page 7232 “MDM Connection Details” (1 call:
OnOpenPage → GetFeatureName) - Page 7233 “Master Data Synch. Tables” (1 call:
SetDataSynchEnabledState → IsEnabled)
Recent changes
- 2026-09-22 #11626 [Master Data Management] Fixing synchronization of contacts, media, date, datetime, source watermarking, permission issue and minor UX issues (main, BC30, fix)
- 2026-09-10 #10753 Cross-environment Master Data synchronization (same tenant) (main, BC30, feature)
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: "Master Data Management"), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.