Skip to content

Commit 6778eab

Browse files
Live Publish (02/04/2025 05:00:01 PM)
2 parents a3b5d08 + ab2e06d commit 6778eab

12 files changed

+173
-214
lines changed

power-platform/alm/alm-for-developers.md

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,22 @@
11
---
2-
title: "ALM for developers | Microsoft Docs"
2+
title: "ALM for developers in Power Platform"
33
description: "Learn what ALM tools, APIs, and services are available to developers when creating and publishing solutions for Microsoft Dataverse."
44
author: marcelbf
55
ms.author: marcelbf
66
ms.subservice: alm
7-
ms.date: 02/17/2023
7+
ms.date: 02/04/2025
88
ms.reviewer: pehecke
99
ms.topic: article
1010
search.audienceType:
1111
- developer
1212
---
13-
1413
# ALM for developers
1514

1615
The articles in this section describe how you as a developer can use available APIs, tools, and other resources to implement application lifecycle management (ALM) using Microsoft Power Platform.
1716

1817
We'll start off talking a little about team development and then dive into Azure DevOps and available build tools.
1918

20-
To learn more about key ALM concepts and working with solutions, see [Overview of application lifecycle management](overview-alm.md) and watch the following video.<p/>
19+
To learn more about key ALM concepts and working with solutions, go to [Overview of application lifecycle management](overview-alm.md) and watch the following video.<p/>
2120

2221
> [!VIDEO https://learn-video.azurefd.net/vod/player?ev=powerful-devs-conference&session=how-to-do-alm-with-power-platform]
2322
@@ -33,20 +32,15 @@ More information: [Scenario 5: Supporting team development](team-development-alm
3332

3433
For team development, the goal is to avoid conflict when making changes to
3534
shared code. With a source control system, branching and merging help to
36-
avoid change conflicts and keep team members from affecting each other with partially completed
37-
work in a shared repo.
35+
avoid change conflicts and keep team members from affecting each other with partially completed work in a shared repo.
3836

39-
Another method is to use strategies to avoid conflict. For example, you can have only one person
40-
at a time work on a complex component, to avoid a merge conflict that a
41-
source control system might not automatically be able to resolve.
37+
Another method is to use strategies to avoid conflict. For example, you can have only one person at a time work on a complex component, to avoid a merge conflict that a source control system might not automatically be able to resolve.
4238

4339
## Working with complex components
4440

45-
What are complex components? Examples include forms,
46-
canvas apps, flows, and workflows.
41+
What are complex components? Examples include forms, canvas apps, flows, and workflows.
4742

48-
Coordinate efforts with other team members to avoid having more than one developer
49-
work on the same form or component at a time. If you do have multiple
43+
Coordinate efforts with other team members to avoid having more than one developer work on the same form or component at a time. If you do have multiple
5044
developers working on the same canvas app, have them work on separate components
5145
to avoid conflict.
5246

Lines changed: 23 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
---
2-
title: "How managed solutions are merged (Microsoft Dataverse)"
2+
title: "How managed solutions are merged in Power Platform"
33
description: "To avoid multiple installed solutions from interfering with one another, follow best practices while constructing a solution."
44
ms.custom: ""
5-
ms.date: 09/21/2023
5+
ms.date: 02/04/2025
66
ms.reviewer: ""
77
ms.topic: "article"
8-
author: "shmcarth"
8+
author: "caburke"
99
ms.subservice: alm
1010
ms.author: "matp"
1111
search.audienceType:
@@ -14,57 +14,54 @@ search.audienceType:
1414
---
1515
# Understand how managed solutions are merged
1616

17-
When you prepare your managed solution to be installed, remember that an environment might already have multiple solutions installed or that other solutions might be installed in the future. Construct a solution that follows best practices so that your solution won't interfere with other solutions.
17+
When you prepare your managed solution to be installed, remember that an environment might already have multiple solutions installed or that other solutions might be installed in the future. Construct a solution that follows best practices so that your solution doesn't interfere with other solutions.
1818

1919
The processes that Microsoft Dataverse uses to merge customizations emphasize maintaining the functionality of the solution. Although every effort is made to preserve the presentation, some incompatibilities between customizations might require that the computed resolution change some presentation details in favor of maintaining the customization functionality.
2020

21-
<a name="BKMK_MergingFormCustomizations"></a>
22-
2321
## Merge form customizations
2422

25-
The only form customizations that have to be merged are those that are performed on any entity forms that are already in the environment. Typically, this means that form customizations only have to be merged when your solution customizes the forms that were included for entities created when Dataverse was installed. One way to avoid form merging is to provide new forms for any Dataverse entities. Forms for custom entities won't require merging unless you're creating a solution that updates or modifies an existing managed solution that created the custom entities and their forms.
23+
The only form customizations that have to be merged are those that are performed on any table forms that are already in the environment. Typically, this means that form customizations only have to be merged when your solution customizes the forms that were included for tables created when Dataverse was installed. One way to avoid form merging is to provide new forms for any Dataverse tables. Forms for custom tables won't require merging unless you're creating a solution that updates or modifies an existing managed solution that created the custom tables and their forms.
2624

27-
When a solution is packaged as a managed solution, the form definitions stored in FormXML are compared to the original FormXML and only the differences are included in the managed solution. When the managed solution is installed in a new environment, the form customization differences are then merged with the FormXML for the existing form to create a new form definition. This new form definition is what the user sees and what a system customizer can modify. When the managed solution is uninstalled, only those form elements found in the managed solution are removed.
25+
When a solution is packaged as a managed solution, the form definitions stored in `FormXML` are compared to the original `FormXML` and only the differences are included in the managed solution. When the managed solution is installed in a new environment, the form customization differences are then merged with the `FormXML` for the existing form to create a new form definition. This new form definition is what the user sees and what a system customizer can modify. When the managed solution is uninstalled, only those form elements found in the managed solution are removed.
2826

29-
Form merge occurs on a section-by-section basis. When you add new elements to an existing tab or section, your changes can affect or conceal the elements from the managed layers, including when the managed element is updated. This behavior occurs because the managed layers are underneath the unmanaged layer you're introducing with your customization. If you don't want to affect or conceal managed elements on the form, we recommend that you include your new elements within new container elements, such as a section or tab. This isolates your elements and reduces the possibility of affecting or concealing the elements from the managed layers. More information: [Solution layers](solution-layers-alm.md)
27+
Form merge occurs on a section-by-section basis. When you add new elements to an existing tab or section, your changes can affect or conceal the elements from the managed layers, including when the managed element is updated. This behavior occurs because the managed layers are underneath the unmanaged layer you're introducing with your customization. If you don't want to affect or conceal managed elements on the form, we recommend that you include your new elements within new container elements, such as a section or tab. This isolates your elements and reduces the possibility of affecting or concealing the elements from the managed layers. More information: [Solution layers](solution-layers-alm.md)
3028

31-
Managed solutions that contain forms that use new security roles depend on those roles. You should include these security roles with your managed solution.
32-
29+
Managed solutions that contain forms that use new security roles depend on those roles. You should include these security roles with your managed solution.
30+
3331
When you import a solution that includes table forms, the **Overwrite Customizations** option, even if selected, doesn't apply. The form being imported merges with any existing solution layers for the form.
3432

3533
> [!NOTE]
36-
> When a managed solution entity contains multiple forms and the environment entity form also contains multiple forms, the new forms aren't appended to the bottom of the list of available forms&mdash;they're interleaved with the original entity forms.
34+
> When a managed solution table contains multiple forms and the environment table form also contains multiple forms, the new forms aren't appended to the bottom of the list of available forms&mdash;they're interleaved with the original table forms.
3735
3836
### Identifying and resolving form merge conflicts
3937

40-
After you import a solution that includes a form, you may notice that the imported form displays a tab named **Conflicts Tab**. This is an autogenerated tab, which is created when certain form components are unable to merge. To avoid any data loss, the form components that aren’t able to merge are placed under the Conflicts Tab. Merge conflicts usually happen when the source and target customizations are out of sync, which leads to conflicting form customizations.
38+
After you import a solution that includes a form, you might notice that the imported form displays a tab named **Conflicts Tab**. This is an autogenerated tab, which is created when certain form components are unable to merge. To avoid any data loss, the form components that aren’t able to merge are placed under the **Conflicts** tab. Merge conflicts usually happen when the source and target customizations are out of sync, which leads to conflicting form customizations.
4139

4240
:::image type="content" source="media/conflicts-tab.png" alt-text="Conflicts tab on imported form.":::
4341

4442
Avoid these situations that can cause form merge conflicts:
4543

4644
- You import two different solutions that add a component, such as a form tab, that uses the same ordinal value.
47-
4845
- You customize a component of the form, such as a section, in the source environment but also make the same or similar customization to the component in the target environment. Then, you export the customization from the source environment and import it into the target environment.
4946

50-
When the Conflicts Tab appears on an imported form, you can move the component displayed somewhere on the form. Once all the components are moved from the Conflicts Tab, you can delete or hide the Conflicts Tab.
47+
When the **Conflicts** tab appears on an imported form, you can move the component displayed somewhere on the form. Once all the components are moved from the **Conflicts** tab, you can delete or hide the **Conflicts** tab.
5148

52-
<a name="BKMK_MergingNavigationCustomizations"></a>
53-
## Merge navigation (SiteMap) customizations
54-
When a solution is packaged as managed, the SiteMap XML is compared to the original SiteMap XML and any other customizations made to the SiteMap. Only the differences are included in the managed solution. These differences include items that are changed, moved, added, or removed. When the managed solution is installed in a new environment, the SiteMap changes are merged with the SiteMap XML found for the environment where the managed solution is being installed. A new SiteMap definition is what people see.
49+
## Merge navigation (SiteMap) customizations
50+
51+
When a solution is packaged as managed, the SiteMap XML is compared to the original SiteMap XML and any other customizations made to the site map. Only the differences are included in the managed solution. These differences include items that are changed, moved, added, or removed. When the managed solution is installed in a new environment, the site map changes are merged with the SiteMap XML found for the environment where the managed solution is being installed. A new site map definition is what people observe.
5552

56-
At this point, a customizer can export the SiteMap to an unmanaged solution and that SiteMap definition will include all the elements of the active SiteMap. A customizer can then modify the SiteMap and reimport it as an unmanaged customization. Later, if the managed solution is uninstalled, the SiteMap XML that was imported with the managed solution will be referenced to remove the changes introduced with that managed solution. A new active SiteMap is then calculated.
53+
At this point, a customizer can export the site map to an unmanaged solution and that site map definition includes all the elements of the active site map. A customizer can then modify the site map and reimport it as an unmanaged customization. Later, if the managed solution is uninstalled, the SiteMap XML that was imported with the managed solution will be referenced to remove the changes introduced with that managed solution. A new active site map is then calculated.
5754

58-
Whenever a new visible element is added to the SiteMap, it appears at the bottom of whatever container it belongs in. For example, a new area will appear at the bottom of the navigation area. To position the elements that have been added, you must export the SiteMap, edit it to set the precise position of the elements, and then import it again as an unmanaged solution.
55+
Whenever a new visible element is added to the site map, it appears at the bottom of whatever container it belongs. For example, a new area appears at the bottom of the navigation area. To position the elements that have been added, you must export the site map, edit it to set the precise position of the elements, and then import it again as an unmanaged solution.
5956

6057
> [!NOTE]
61-
> Only one SiteMap customization can be applied between publishing. Any unpublished SiteMap customizations will be lost when a new SiteMap definition is imported.
58+
> Only one site map customization can be applied between publishing. Any unpublished site map customizations are lost when a new site map definition is imported.
6259
63-
<a name="BKMK_MergingOptionSetOptions"></a>
64-
## Merge option set options
65-
Each new option set option is initialized with an integer value assigned that includes an option value prefix. The option value prefix is a set of five digits prepended to the option value. An option value prefix is generated based on the solution publisher's customization prefix, but can be set to any value. The option value prefix helps differentiate new option set options created in the context of a specific solution publisher and reduces the opportunity for collisions of option values. Using the option value prefix is recommended but not required.
60+
## Merge choice columns options
61+
62+
Each new choice column option is initialized with an integer value assigned that includes an option value prefix. The option value prefix is a set of five digits prepended to the option value. An option value prefix is generated based on the solution publisher's customization prefix, but can be set to any value. The option value prefix helps differentiate new option set options created in the context of a specific solution publisher and reduces the opportunity for collisions of option values. Using the option value prefix is recommended but not required.
6663

67-
A managed solution usually updates or adds options for option sets that are already in the environment, for example, the Category or Industry option sets for an account. When a managed solution modifies the options available in an option set, all the options defined in the managed solution are available in the environment. When the managed solution is uninstalled, the options in the option set will be returned to their original state.
64+
A managed solution usually updates or adds options for choice columns that are already in the environment, for example, the Category or Industry choice columns for an account. When a managed solution modifies the options available in a choice column, all the options defined in the managed solution are available in the environment. When the managed solution is uninstalled, the options in the choice column are returned to their original state.
6865

6966
## Merge security role privileges
7067

@@ -73,11 +70,10 @@ When a security role is imported from a managed solution into an environment, al
7370
> [!TIP]
7471
> Use the same custom solution to manage updating security roles. If you use a new custom solution to update a security role that was previously updated in another solution, some of the privilege updates won't be applied.
7572
>
76-
> Don't use a custom Solution to modify [predefined security roles](/power-platform/admin/database-security#predefined-security-roles). These updates will be removed when the predefined roles are updated by the system. Create a copy of the predefined role and manage the copied role in your custom solution.
73+
> Don't use a custom solution to modify [predefined security roles](/power-platform/admin/database-security#predefined-security-roles). These updates are removed when the predefined roles are updated by the system. Create a copy of the predefined role and manage the copied role in your custom solution.
7774
7875
### See also
7976

8077
[Use a solution to customize](use-solutions-for-your-customizations.md)
8178

82-
8379
[!INCLUDE[footer-include](../includes/footer-banner.md)]

power-platform/alm/implement-healthy-alm.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,22 @@
11
---
2-
title: "Use scenarios to implement healthy ALM with Microsoft Power Apps"
2+
title: "Use scenarios to implement healthy ALM with Microsoft Power Platform"
33
description: "Learn about the scenarios that can help you implement healthy application lifecycle management (ALM) by using Microsoft Power Apps and Power Automate."
44
keywords:
55
author: Mattp123
66
ms.subservice: alm
77
ms.author: matp
88
ms.custom: ""
9-
ms.date: 05/05/2020
9+
ms.date: 02/04/2025
1010
ms.reviewer: ""
11-
1211
ms.topic: "article"
1312
search.audienceType:
1413
- maker
1514
---
16-
1715
# About healthy ALM
18-
This section provides information about the various scenarios that will help you reach the end goal of implementing and practicing healthy application lifecycle management (ALM) by using Power Apps, Power Automate, and Microsoft Dataverse in your organization.
1916

20-
The scenarios range from people who are new to Microsoft Power Platform to existing users practicing unhealthy ALM, and show how you can move to a recommended, successful ALM implementation.
17+
This section provides information about the various scenarios that help you reach the end goal of implementing and practicing healthy application lifecycle management (ALM) by using Power Apps, Power Automate, and Microsoft Dataverse in your organization.
18+
19+
The scenarios range from people who are new to Microsoft Power Platform to existing users practicing unhealthy ALM, and show how you can move to a recommended, successful ALM implementation.
2120

2221
> [Scenario 0: ALM for a new project](new-project-alm.md)
2322
@@ -36,6 +35,7 @@ The scenarios range from people who are new to Microsoft Power Platform to exist
3635
> [Scenario 7: Add canvas apps in solutions by default](canvas-apps-solution-default.md)
3736
3837
### See also
38+
3939
[ALM basics in Power Apps](basics-alm.md)
4040

4141

0 commit comments

Comments
 (0)