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

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :
Power Platform Community / Forums / Power Apps / Solutions stored in so...
Power Apps
Unanswered

Solutions stored in source control noise

(0) ShareShare
ReportReport
Posted on by Microsoft Employee

Question for people who use source control (git etc) to store solution files: have you experienced any unnecessary noise when you export solution without any modifications and source control system detects changes you didn't make? For example, autogenerated names have changed, solution.xml have changed, ordering changes or anything else? 

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

    Just asking for a friend? 😉

  • Phil_Cole Profile Picture
    133 on at

    Yes!  Particular paint points (with some fixes)

     

    * AppModules - elements in the appmodule xml often changes order - see https://github.com/microsoft/coe-alm-accelerator-templates/pull/127

    * AI Models - have an environment specific GUID embedded in them 

    * Solution.xml - Missing dependencies are not stable (better than they were), but sometimes come out in different order

    * Solution.xml - especially when dependent solutions are bumped - I built a powershell script to centralise this information - see https://github.com/filcole/SolutionRefs/

    * Solution.xml - the metadata version number (first line of the file)

    * Unpacking canvas apps - especially component libraries often produces different output

    * Business Rules created the first time have zero GUIDS - see fix here: https://github.com/microsoft/coe-alm-accelerator-templates/pull/88 

    * Classic workflows often have differences when imported from source control and exported again

  • Betim Beja Profile Picture
    56 on at

    ConnectionReferences json content comes in different order most of the time in a Custom Page 

    <?xml version="1.0" encoding="utf-8"?>
    <CanvasApp xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <Name>new_custompage_e7176</Name>
     <AppVersion>2022-10-27T07:14:00Z</AppVersion>
     <Status>Ready</Status>
     <CreatedByClientVersion>3.22102.32.0</CreatedByClientVersion>
     <MinClientVersion>3.22102.32.0</MinClientVersion>
     <Tags>{"primaryDeviceWidth":"1366","primaryDeviceHeight":"768","supportsPortrait":"true","supportsLandscape":"true","primaryFormFactor":"Tablet","publisherVersion":"3.22102.32","minimumRequiredApiVersion":"2.2.0","hasComponent":"false","hasUnlockedComponent":"false","isUnifiedRootApp":"false","sienaVersion":"20221026T160951Z-3.22102.32.0"}</Tags>
     <IsCdsUpgraded>0</IsCdsUpgraded>
     <GalleryItemId xsi:nil="true"></GalleryItemId>
     <BackgroundColor>RGBA(0,176,240,1)</BackgroundColor>
     <DisplayName>Resolution Approval</DisplayName>
     <Description xsi:nil="true"></Description>
     <CommitMessage xsi:nil="true"></CommitMessage>
     <Publisher xsi:nil="true"></Publisher>
     <AuthorizationReferences>[]</AuthorizationReferences>
     <ConnectionReferences>{"15ed0f3d-a26f-4b34-92cb-3adae489bfe2":{"id":"/providers/microsoft.powerapps/apis/shared_logicflows","displayName":"Logic flows","iconUri":"https://connectoricons-prod.azureedge.net/releases/v1.0.1534/1.0.1534.2605/logicflows/icon.png","dataSources":["ApproveOrRejectCaseResolution"],"dependencies":["2e94e300-18cf-4d39-8e90-6338460756f1"],"dependents":[],"parameterHints":{"workflowName":{"value":"22e242a6-21b4-4deb-be2f-6af50a064c6c"},"workflowEntityId":{"value":"43b0e403-3225-ed11-b83d-000d3ab9a8a8"},"2e94e300-18cf-4d39-8e90-6338460756f1":{"value":"shared_commondataserviceforapps"}},"parameterHintsV2":{"workflowName":{"value":"22e242a6-21b4-4deb-be2f-6af50a064c6c"},"workflowEntityId":{"value":"43b0e403-3225-ed11-b83d-000d3ab9a8a8"},"shared_commondataserviceforapps":{"value":"2e94e300-18cf-4d39-8e90-6338460756f1"}},"isOnPremiseConnection":false,"bypassConsent":false,"dataSets":{},"apiTier":"Standard","actions":["Run"]},"2e94e300-18cf-4d39-8e90-6338460756f1":{"id":"/providers/microsoft.powerapps/apis/shared_commondataserviceforapps","displayName":"Microsoft Dataverse","iconUri":"https://connectoricons-prod.azureedge.net/releases/v1.0.1588/1.0.1588.2938/commondataserviceforapps/icon.png","dataSources":[],"dependencies":[],"dependents":["15ed0f3d-a26f-4b34-92cb-3adae489bfe2"],"parameterHints":{},"parameterHintsV2":{},"isOnPremiseConnection":false,"bypassConsent":false,"dataSets":{},"apiTier":"Premium"}}</ConnectionReferences>
     <DatabaseReferences>{"default.cds":{"databaseDetails":{"referenceType":"Environmental","environmentName":"default.cds","overrideValues":{"status":"NotSpecified"}},"dataSources":{"Cases":{"entitySetName":"incidents","logicalName":"incident"}}}}</DatabaseReferences>
     <AppComponents>[]</AppComponents>
     <AppComponentDependencies>[]</AppComponentDependencies>
     <CanConsumeAppPass>1</CanConsumeAppPass>
     <CanvasAppType>2</CanvasAppType>
     <BypassConsent>0</BypassConsent>
     <AdminControlBypassConsent>0</AdminControlBypassConsent>
     <EmbeddedApp xsi:nil="true"></EmbeddedApp>
     <IntroducedVersion>1.0</IntroducedVersion>
     <CdsDependencies>{"cdsdependencies":[{"logicalname":"incident","componenttype":1}]}</CdsDependencies>
     <IsCustomizable>1</IsCustomizable>
     <BackgroundImageUri>/CanvasApps/new_custompage_e7176_BackgroundImageUri</BackgroundImageUri>
     <DocumentUri>/CanvasApps/new_custompage_e7176_DocumentUri.msapp</DocumentUri>
    </CanvasApp>




  • cchannon Profile Picture
    4,702 Moderator on at

    New release in the Power Platform Developer Tools: recent updates have been made to ensure these solution components are being sorted during solution export to reduce this noise.
    Power Platform Developers tool &#8211; October update   | Microsoft Power Apps

  • Phil_Cole Profile Picture
    133 on at

    Hi @Andrew7 ,

     

    I'm noticing (and have been for a while) that the GUID in the uniqueid attribute in FormXml differs in case.  See example below.   Should it be upper or lower case?

    filcole_0-1669726011402.png

     

    I've put together a fix/hack for the above issue here: https://github.com/filcole/SolutionFormUniqueId



  • Phil_Cole Profile Picture
    133 on at

    Hi @Andrew7

     

    Sometimes new elements are added to the exports when MS are introducing new capabilities.  Obviously this changes the output.  I have had comments asking why is there a 'diff' here?  While I actually quite like seeing the new capabilities arrive I wonder if it might be possible to only output an element when if it differs from the default, thus eliminating the diff.  Doing this assumes the default will never change though - so I guess it's a balance.

    Some recent examples:

    new <CascadeArchive> in Relationships

    filcole_0-1671288454737.png

    new <IsChildEntity> option in Entity.xml

    filcole_2-1671289093271.png

    templateName in flow JSON

    filcole_1-1671288567736.png

    Would love to know your thoughts on this.

  • Phil_Cole Profile Picture
    133 on at

    * Unpacking canvas apps - especially component libraries often produces different output

    Hi @Andrew7 

    Unpacking canvas apps for new Power Fx command libraries (where a default PowerFx command library is created automatically) have the differing names.  I've reproduced and logged it here: https://github.com/microsoft/powerplatform-vscode/issues/386

     

    There's a workaround/temporary fix here https://github.com/filcole/SolutionFixComponentLibraryFilename that renames the component library files in a determinate way manner.

     
  • Phil_Cole Profile Picture
    133 on at

    Hi @Andrew7,

     

    I'd noticed that some FormXml only had differences in a 'disabled' attribute on the 'Control' element, causing noisy diffs.

    Here's an example.

    filcole_0-1671440497911.png

    I finally managed to reproduce:

    1. Add a solution
    2. Add a new table to the solution
    3. Export and unpack the solution to source control
    4. Note that the 'disabled' attribute is missing for the 'Control' element on the primary attribute (e.g. pgc_name) for the main form.
    5. Go into the maker portal and edit the main form
    6. tick 'Read-Only', Save
    7. untick 'Read-Only', Save  - the form is now unchanged
    8. Export and unpack the solution to source control

    Notice that there's a diff because 'disabled="false"' has been added. 

     

    I suggest that the disabled=false attribute should be automatically added when the form is automatically created at the time the table is created.  

     

    There's similar instances for other attributes in FormXml

  • Konst Profile Picture
    4 on at

    * When MS bought adx they build a nice custom exporter, as I heard.

    * HTML templates is an example of a thing that should be improved -- it's a HTML escaped to fit into XML. All xml-escaped content should be put into dedicated files. There might be other instances

  • Konst Profile Picture
    4 on at

    * `pac modelbuilder` and `pac solution sync` should know about each other. model should be able to build from local unpacked solution.

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

Introducing the 2026 Season 1 community Super Users

Congratulations to our 2026 Super Users!

Kudos to our 2025 Community Spotlight Honorees

Congratulations to our 2025 community superstars!

Leaderboard > Power Apps

#1
Haque Profile Picture

Haque 85

#2
WarrenBelz Profile Picture

WarrenBelz 76 Most Valuable Professional

#3
Kalathiya Profile Picture

Kalathiya 38 Super User 2026 Season 1

Last 30 days Overall leaderboard