You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: power-platform/alm/alm-for-developers.md
+7-13Lines changed: 7 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,23 +1,22 @@
1
1
---
2
-
title: "ALM for developers | Microsoft Docs"
2
+
title: "ALM for developers in Power Platform"
3
3
description: "Learn what ALM tools, APIs, and services are available to developers when creating and publishing solutions for Microsoft Dataverse."
4
4
author: marcelbf
5
5
ms.author: marcelbf
6
6
ms.subservice: alm
7
-
ms.date: 02/17/2023
7
+
ms.date: 02/04/2025
8
8
ms.reviewer: pehecke
9
9
ms.topic: article
10
10
search.audienceType:
11
11
- developer
12
12
---
13
-
14
13
# ALM for developers
15
14
16
15
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.
17
16
18
17
We'll start off talking a little about team development and then dive into Azure DevOps and available build tools.
19
18
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/>
@@ -33,20 +32,15 @@ More information: [Scenario 5: Supporting team development](team-development-alm
33
32
34
33
For team development, the goal is to avoid conflict when making changes to
35
34
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.
38
36
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.
42
38
43
39
## Working with complex components
44
40
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.
47
42
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
50
44
developers working on the same canvas app, have them work on separate components
title: "How managed solutions are merged (Microsoft Dataverse)"
2
+
title: "How managed solutions are merged in Power Platform"
3
3
description: "To avoid multiple installed solutions from interfering with one another, follow best practices while constructing a solution."
4
4
ms.custom: ""
5
-
ms.date: 09/21/2023
5
+
ms.date: 02/04/2025
6
6
ms.reviewer: ""
7
7
ms.topic: "article"
8
-
author: "shmcarth"
8
+
author: "caburke"
9
9
ms.subservice: alm
10
10
ms.author: "matp"
11
11
search.audienceType:
@@ -14,57 +14,54 @@ search.audienceType:
14
14
---
15
15
# Understand how managed solutions are merged
16
16
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.
18
18
19
19
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.
20
20
21
-
<aname="BKMK_MergingFormCustomizations"></a>
22
-
23
21
## Merge form customizations
24
22
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.
26
24
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.
28
26
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)
30
28
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
+
33
31
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.
34
32
35
33
> [!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—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—they're interleaved with the original table forms.
37
35
38
36
### Identifying and resolving form merge conflicts
39
37
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.
41
39
42
40
:::image type="content" source="media/conflicts-tab.png" alt-text="Conflicts tab on imported form.":::
43
41
44
42
Avoid these situations that can cause form merge conflicts:
45
43
46
44
- You import two different solutions that add a component, such as a form tab, that uses the same ordinal value.
47
-
48
45
- 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.
49
46
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.
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.
55
52
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.
57
54
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.
59
56
60
57
> [!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.
62
59
63
-
<aname="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.
66
63
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.
68
65
69
66
## Merge security role privileges
70
67
@@ -73,11 +70,10 @@ When a security role is imported from a managed solution into an environment, al
73
70
> [!TIP]
74
71
> 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.
75
72
>
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.
77
74
78
75
### See also
79
76
80
77
[Use a solution to customize](use-solutions-for-your-customizations.md)
Copy file name to clipboardExpand all lines: power-platform/alm/implement-healthy-alm.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,23 +1,22 @@
1
1
---
2
-
title: "Use scenarios to implement healthy ALM with Microsoft Power Apps"
2
+
title: "Use scenarios to implement healthy ALM with Microsoft Power Platform"
3
3
description: "Learn about the scenarios that can help you implement healthy application lifecycle management (ALM) by using Microsoft Power Apps and Power Automate."
4
4
keywords:
5
5
author: Mattp123
6
6
ms.subservice: alm
7
7
ms.author: matp
8
8
ms.custom: ""
9
-
ms.date: 05/05/2020
9
+
ms.date: 02/04/2025
10
10
ms.reviewer: ""
11
-
12
11
ms.topic: "article"
13
12
search.audienceType:
14
13
- maker
15
14
---
16
-
17
15
# 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.
19
16
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.
21
20
22
21
> [Scenario 0: ALM for a new project](new-project-alm.md)
23
22
@@ -36,6 +35,7 @@ The scenarios range from people who are new to Microsoft Power Platform to exist
36
35
> [Scenario 7: Add canvas apps in solutions by default](canvas-apps-solution-default.md)
0 commit comments