-->

How to manage CRM Form field and Ribbon button if

2019-07-30 01:19发布

问题:

I am beginner of CRM. I have few basic confusion. I want to clear it before I go for something big. I have 2 cases where I am getting confuse.

Case 1: I have a Managed Solution with 2 version. MyAccount 1.0.0.0 and MyAccount 1.0.1.0. In version 1.0.0.0 I have field in CRM Account form. In version 1.0.1.0, I have added a field Address FAX and removed a field Website. So, when user add version 1.0.1.0, it will overwrite the design. Can I change this behavior if I want to keep older design?

Case 2: I have 2 different Managed Solutions. MyAccount 1.0.0.0 and ManageBankAccount 1.0.0.0. In first Managed Solution I have field in CRM Account form. In second Managed Solution, I have added a field Address FAX and removed a field Website. So, what will be the result if A- User add first Managed Solution and then second Managed Solution? B- User add second Managed Solution and then first Managed Solution?

Can anybody suggest me for Case 1, Case 2-A, Case 2-B?

(Here, Plugin means Managed Solution.)

回答1:

Note: These are my understandings based on below content from MSDN:

Merging Form Customizations

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 organization, 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.

When you add new elements to a form that is to be merged, we recommend that you include your new elements within new container elements (tabs or sections). Additions to any container will be appended to the end of the container. For example, fields added to a section will be positioned at the end of the section. It is expected that a customizer installing a solution will then modify the form to re-arrange elements after it is installed.

Also read Conflict resolution.

Top Wins

For all other solution components any conflict is calculated in favor of the customization that is applied last. For managed solutions this usually means that the last solution installed is applied.

Now coming to your questions:

Case 1: I have a Managed Solution with 2 version. MyAccount 1.0.0.0 and MyAccount 1.0.1.0. In version 1.0.0.0 I have field in CRM Account form. In version 1.0.1.0, I have added a field Address FAX and removed a field Website. So, when user add version 1.0.1.0, it will overwrite the design. Can I change this behavior if I want to keep older design?

No, you cannot change this overwrite behavior as such. This is default CRM product behavior of Managed solution component import.

Assuming you already imported 1.0.0.0 (form with "Website" field / without "Fax" field), then don't import 1.0.1.0 (form with "Fax" field / without "Website" field), or delete the managed solution 1.0.1.0, this will revert the form layout to 1.0.0.0 solution.

Deleting managed solution will rollback to previous version of any component(form). This way you can keep the older design.

Case 2: I have 2 different Managed Solutions. MyAccount 1.0.0.0 and ManageBankAccount 1.0.0.0. In first Managed Solution I have field in CRM Account form. In second Managed Solution, I have added a field Address FAX and removed a field Website. So, what will be the result if A- User add first Managed Solution and then second Managed Solution? B- User add second Managed Solution and then first Managed Solution?

Case 2-A:
MyAccount (form with "Website" field / without "Fax" field) is installed first & then ManageBankAccount (form with "Fax" field / without "Website" field) is installed.

End result would be form rendering based on ManageBankAccount (form with "Fax" field / without "Website" field)

Case 2-B:
ManageBankAccount (form with "Fax" field / without "Website" field) is installed first & then MyAccount (form with "Website" field / without "Fax" field) is installed.

End result would be form rendering based on MyAccount (form with "Website" field / without "Fax" field)