web
You’re offline. This is a read only version of the page.
close
Skip to main content

Notifications

Announcements

Community site session details

Community site session details

Session Id :
Power Platform Community / Forums / Power Apps / Exporting N:N relation...
Power Apps
Unanswered

Exporting N:N relationships to Azure Synapse Link

(0) ShareShare
ReportReport
Posted on by 2

We are in the process of trialling Azure Synapse Link with a view to retire the Dynamics Data Export Service.  Our key blocker is the lack of support for N:N relationships, how can N:N relationships in Dataverse be exported to Azure Synapse?

I have the same question (0)
  • Verified answer
    cchannon Profile Picture
    4,702 Moderator on at

    I haven't done it myself, but I ran a quick test and it looks like yes, you can enable this.

     

    What happens is that tables only show up in Synapse link once they have been enabled for Change Tracking but all custom entities--including the background intersect entity Dataverse creates for N:N relationships--are by default NOT enabled for Change Tracking. Unfortunately, that intersect entity doesn't show up in the PowerApps or classic management UIs so it is tough to work with.

     

    But there is good news: You can check the Change Tracking feature enablement for a table by checking the entity metadata at:

    GET [Organization URI]/api/data/v9.0/$metadata?annotations=true

    I just checked one of my own N:N entities and indeed, the annotation "Org.OData.Capabilities.V1.ChangeTracking" is present on that intersect entity. That tells me that it is possible to enable Change Tracking, you just need to do it by the WebAPI instead of the UI. 

    So this part will take a bit of gymnastics, which is why I haven't tested it for you, but you will either need to:

    In either case, ChangeTrackingEnabled is an available property you can set to true in order to enable the feature for your intersect entity.

     

    Now, I am not 100% certain this will cause the intersect entity to show up for Synapse Link, but it is certainly worth a try. Give it a shot and let us know if it works!

     

  • kthyri Profile Picture
    23 on at

    hi cchannon,

    I tried your solution and it works! I was able to enable change tracking for the intersect table with a postman request.

    here the documentation: Create and update table definitions using the Web API (Microsoft Dataverse) - Power Apps | Microsoft Docs

     

  • cchannon Profile Picture
    4,702 Moderator on at

    Great to hear!

     

    Please mark the solution so others see this post as resolved in the future.

  • Verified answer
    kthyri Profile Picture
    23 on at

    This is my postman request:

     

    PUT: {{webapiurl}}/EntityDefinitions(<yourmetadataid>)

    BODY:

    { "@odata.context": "https://<yourorg>.crm4.dynamics.com/api/data/v9.1/$metadata#EntityDefinitions/$entity", "ActivityTypeMask": 0, "AutoRouteToOwnerQueue": false, "CanTriggerWorkflow": false, "EntityHelpUrlEnabled": false, "EntityHelpUrl": null, "IsDocumentManagementEnabled": false, "IsOneNoteIntegrationEnabled": false, "IsInteractionCentricEnabled": false, "IsKnowledgeManagementEnabled": false, "IsSLAEnabled": false, "IsBPFEntity": false, "IsDocumentRecommendationsEnabled": false, "IsMSTeamsIntegrationEnabled": false, "SettingOf": null, "DataProviderId": null, "DataSourceId": null, "AutoCreateAccessTeams": false, "IsActivity": false, "IsActivityParty": false, "IsAvailableOffline": false, "IsChildEntity": false, "IsAIRUpdated": false, "IconLargeName": null, "IconMediumName": null, "IconSmallName": null, "IconVectorName": null, "IsCustomEntity": true, "IsBusinessProcessEnabled": false, "SyncToExternalSearchIndex": false, "IsOptimisticConcurrencyEnabled": false, "ChangeTrackingEnabled": true, "IsImportable": false, "IsIntersect": true, "IsManaged": false, "IsEnabledForCharts": true, "IsEnabledForTrace": false, "IsValidForAdvancedFind": false, "DaysSinceRecordLastModified": 9999, "MobileOfflineFilters": "", "IsReadingPaneEnabled": true, "IsQuickCreateEnabled": false, "LogicalName": "cr801_interest_contact", "ObjectTypeCode": 11461, "OwnershipType": "None", "PrimaryNameAttribute": null, "PrimaryImageAttribute": null, "PrimaryIdAttribute": "cr801_interest_contactid", "RecurrenceBaseEntityLogicalName": null, "ReportViewName": "Filteredcr801_Interest_Contact", "SchemaName": "cr801_Interest_Contact", "IntroducedVersion": "1.0.0.0", "IsStateModelAware": true, "EnforceStateTransitions": false, "ExternalName": null, "EntityColor": null, "LogicalCollectionName": null, "ExternalCollectionName": null, "CollectionSchemaName": null, "EntitySetName": "cr801_interest_contactset", "IsEnabledForExternalChannels": false, "IsPrivate": false, "UsesBusinessDataLabelTable": false, "IsLogicalEntity": false, "HasNotes": false, "HasActivities": false, "HasFeedback": false, "IsSolutionAware": false, "CreatedOn": "2022-01-10T13:43:39Z", "ModifiedOn": "2022-01-10T13:43:39Z", "HasEmailAddresses": false, "OwnerId": null, "OwnerIdType": 8, "OwningBusinessUnit": null, "MetadataId": "<yourMetadataId>", "HasChanged": null, "Description": { "LocalizedLabels": [], "UserLocalizedLabel": null }, "DisplayCollectionName": { "LocalizedLabels": [], "UserLocalizedLabel": null }, "DisplayName": { "LocalizedLabels": [], "UserLocalizedLabel": null }, "IsAuditEnabled": { "Value": false, "CanBeChanged": true, "ManagedPropertyLogicalName": "canmodifyauditsettings" }, "IsValidForQueue": { "Value": false, "CanBeChanged": true, "ManagedPropertyLogicalName": "canmodifyqueuesettings" }, "IsConnectionsEnabled": { "Value": false, "CanBeChanged": true, "ManagedPropertyLogicalName": "canmodifyconnectionsettings" }, "IsCustomizable": { "Value": false, "CanBeChanged": true, "ManagedPropertyLogicalName": "iscustomizable" }, "IsRenameable": { "Value": false, "CanBeChanged": true, "ManagedPropertyLogicalName": "isrenameable" }, "IsMappable": { "Value": false, "CanBeChanged": false, "ManagedPropertyLogicalName": "ismappable" }, "IsDuplicateDetectionEnabled": { "Value": false, "CanBeChanged": true, "ManagedPropertyLogicalName": "canmodifyduplicatedetectionsettings" }, "CanCreateAttributes": { "Value": true, "CanBeChanged": false, "ManagedPropertyLogicalName": "cancreateattributes" }, "CanCreateForms": { "Value": true, "CanBeChanged": true, "ManagedPropertyLogicalName": "cancreateforms" }, "CanCreateViews": { "Value": true, "CanBeChanged": true, "ManagedPropertyLogicalName": "cancreateviews" }, "CanCreateCharts": { "Value": true, "CanBeChanged": true, "ManagedPropertyLogicalName": "cancreatecharts" }, "CanBeRelatedEntityInRelationship": { "Value": true, "CanBeChanged": true, "ManagedPropertyLogicalName": "canberelatedentityinrelationship" }, "CanBePrimaryEntityInRelationship": { "Value": true, "CanBeChanged": true, "ManagedPropertyLogicalName": "canbeprimaryentityinrelationship" }, "CanBeInManyToMany": { "Value": true, "CanBeChanged": true, "ManagedPropertyLogicalName": "canbeinmanytomany" }, "CanBeInCustomEntityAssociation": { "Value": false, "CanBeChanged": true, "ManagedPropertyLogicalName": "canbeincustomentityassociation" }, "CanEnableSyncToExternalSearchIndex": { "Value": false, "CanBeChanged": false, "ManagedPropertyLogicalName": "canenablesynctoexternalsearchindex" }, "CanModifyAdditionalSettings": { "Value": true, "CanBeChanged": true, "ManagedPropertyLogicalName": "canmodifyadditionalsettings" }, "CanChangeHierarchicalRelationship": { "Value": false, "CanBeChanged": false, "ManagedPropertyLogicalName": "canchangehierarchicalrelationship" }, "CanChangeTrackingBeEnabled": { "Value": false, "CanBeChanged": false, "ManagedPropertyLogicalName": "canchangetrackingbeenabled" }, "IsMailMergeEnabled": { "Value": false, "CanBeChanged": true, "ManagedPropertyLogicalName": "canmodifymailmergesettings" }, "IsVisibleInMobile": { "Value": false, "CanBeChanged": false, "ManagedPropertyLogicalName": "canmodifymobilevisibility" }, "IsVisibleInMobileClient": { "Value": false, "CanBeChanged": true, "ManagedPropertyLogicalName": "canmodifymobileclientvisibility" }, "IsReadOnlyInMobileClient": { "Value": false, "CanBeChanged": true, "ManagedPropertyLogicalName": "canmodifymobileclientreadonly" }, "IsOfflineInMobileClient": { "Value": false, "CanBeChanged": true, "ManagedPropertyLogicalName": "canmodifymobileclientoffline" }, "Privileges": [], "Settings": [] }

     

    You can get the metadata id with a Retrieve Entity Metadata Request: 

     

    GET: {{webapiurl}}/EntityDefinitions(LogicalName='cr801_interest_contact')

     

    After that, I was able to add the intersect table to the Azure Synapse Link.

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Forum hierarchy changes are complete!

In our never-ending quest to improve we are simplifying the forum hierarchy…

Ajay Kumar Gannamaneni – Community Spotlight

We are honored to recognize Ajay Kumar Gannamaneni as our Community Spotlight for December…

Leaderboard > Power Apps

#1
WarrenBelz Profile Picture

WarrenBelz 717 Most Valuable Professional

#2
Michael E. Gernaey Profile Picture

Michael E. Gernaey 329 Super User 2025 Season 2

#3
Power Platform 1919 Profile Picture

Power Platform 1919 268

Last 30 days Overall leaderboard