Today’s  video is about Solutions this is useful for Developers and people who are studying for the CRM Customizations and Configuration exam.  Solutions are one of the fundamental parts of CRM customization and CRM Development, they  provide a way to manage and package your changes in CRM and importantly a way to move customizations between CRM instances.

Exam criteria

 Create and Customize Solutions (10-15 percent)

  • Plan for customization.

    • This topic may include: differentiate between configuration, customization, extending, and development; design appropriate customizations

  • Manage solutions.

    • This topic may include: understand business requirements; understand the benefits of Solutions; create Solutions; export managed and unmanaged Solutions; import Solutions; specify a Publisher; work with multiple Solutions; describe Solution components; describe component dependencies

  • Manage customizations.

    • This topic may include: describe customization concepts for entities, fields, forms, views, and charts; publish customizations

 

Plan for customization is odd because it would seem rather difficult to create questions for, it is very important because one of the important skills of a good CRM developer is choosing the right tool for the right moment and you need knowledge of configuration, Customization and extending

Config – teams, security roles, business units

Customization – standard GUI changes, forms, entities, views, workflows, business rules

extending – javascript, .NET, plugins, workflows etc.

To be honest I’m not entirely sure what they are getting

 

What is a solution

Solutions in Microsoft Dynamics CRM lets you package together a set of custom components that work with one another to provide functionality that some or all users must have

but remember solutions are optional, you don’t need to have them and you can if you wish just edit the default solution.

 

Default Solution

You don’t have to have a solution file you can edit the DEFAULT solution by going to

SETTINGS → Customizations → Customize the system

DON’T RECOMMEND THIS

1.  You could only export these changes as unmanaged which would overwrite the other systems with no way of removing them

2.  It would be hard to tell what changes you had made

3.  it would take longer and longer to deploy them, manage and update them.


Solution best practice is use it to split up business requirements probably either in Sprints/releases or in business requirements.

 

When an Organization is created in Microsoft Dynamics CRM, the system creates a Solution named the Default Solution that contains all the components in the system. You can modify the components of the system directly in the Default

Solution, or create new Solutions for your customizations. The Default Solution can be exported from the application and then imported into another Microsoft Dynamics CRM Organization.

Note: You cannot export the Default Solution as a Managed Solution, and you cannot deploy a complete Default Solution from Microsoft Dynamics CRM onpremises to Microsoft Dynamics CRM Online or the other way around. You can deploy a custom Solution between two Microsoft Dynamics CRM 2013 systems that use either platform.

Why Use solution, how do people use solutions

A solution is a way to package a group of customization’s.  There is no limit to the number of solutions and you can package them up and deliver a whole set of changes in one solution.

Solutions provide ways to organize the deployment and development of customization’s.  You can provide releases or new functionality.

How do you group the changes, this is personal preference

you can group the changes in terms of functionality e.g. reports, project management solution, easy navigation changes

Or you can group the changes in terms of a release or sprint

you can create solutions for different types of changes, e.g. workflows, entities, plugins

 

Publishers and Prefixes

Before you can create a solution you must create a publisher.

When you create an entity, field or relationship in any Solution that is linked to this Publisher, the prefix that you define is added before the schema name that is used internally in the system for that component.

This means if you have two different customizers changing the system with different publishers then they will create components with different prefixes.

If you export your Solution as a Managed Solution, the publisher is especially important because after the solution is imported in the target system only solutions with the same publisher will be able to update those components.  So either you can update the components with the same publisher with an unmanaged solution or you can delete the solutions.

Work with Multiple Solutions

Important concept

Solutions are containers, on the original (DEV) system they do not stop anyone changing anything

Solutions are containers to manage and show the changes but on on the original system.  What these means is if  you had a solution, and you changed the Account entity in your solution.  These changes would show in the Default solution, your new solution and any other solutions which had the account entity in.M

Your new Solution is a container for a set of components that work together to provide the functionality for which you are asked. To modify the components, you can create new components in your Solution, or add existing components from the system to your Solution.

Even when you are working in your own Solution, any components you create or modify are changed in the Default Solution, because your Solution only contains references to these components, not copies of the components. This means that if you delete the Solution that you are customizing this removes the “wrapper” around the components – the components remain in the system.

This means two customizers can modify components, these changes will automatically be changed in the default solution.  In programming terms this is because solutions only contain references to the components not copies.   Solutions can be seen as wrappers.

IF YOU DELETE AN UNMANAGED SOLUTION THE CHANGES WILL STILL BE THERE.  To remove those changes you have to edit those components

Managed and unmanaged solutions

There are two different types of solutions, Managed and unmanaged.  I usually remember this by the fact managed solutions are read only when imported into the target system.  What I mean by this is you cannot edit or change any of components.

When you import a unmanaged solution all the changes are really changing the default solution, all your changes are copied to the default solution.  Then if you delete the unmanaged solution later the changes will remain.

Importing unmanaged solutions will overwrite any changes you had previously made and this cannot be undone and I wouldn’t recommend import unmanaged solutions unless it is from an unmanaged solution from people you work with (and even then think twice)

 

Managed solutions

Managed solutions on the other hand can be edited and only removed by uninstalling/removing the solution, all the components and all the data.  It’s all gone permanently, even if you then remimported the managed solution all the data would be gone

 

Solution versions – Minor changes

one of those questions which once again personal opinion

small changes to a current set of functionality or solution then you can modify the solution and increment the version number.

if it is new functionality then you have to decide whether to add it into an existing solution with version number increment or create a new solution

 

Removing Components from your Solution

To remove a component from a Solution, you must first select the component on the main list or on the relevant node of the solution explorer. You can then select to delete or remove the component. When you select Remove, this removes the reference from your Solution. However, the component remains in the Default Solution. When you select Delete, this tries to remove the component from the whole system. Some components cannot be deleted, such as system entities (those that are built into the system, such as the Account or Contact entity) or the System Administrator Security Role. A component that depends on another component cannot be deleted.

Dependent Components

The dependent components dialog box lists the other system components that prevent you from deleting the component that you are checking. To delete one item, you might have to track back through several layers of dependencies to achieve your goal.

Required Components

The required components list shows the components that are required by the component that you select to show dependencies for. However, these required components will not prevent you from deleting the entity.  They are often things like Webresources with JavaScript, plugin, a view.  You don’t need these things in your solutions every time but you will need these components to have been imported into the target system at some point.

If you are missing a required component you will get the Missing Required Components Dialog When Adding Components to a Solution.  This won’t stop you exporting the solution.

What Can be Added to a Solution?

The following is a list of solution components that you can view within a solution: taken from this blog

  1. Application Ribbon
  2. Article Template
  3. Business Rule
  4. Chart
  5. Connection Role
  6. Contract Template
  7. Dashboard
  8. Email Template
  9. Entity
  10. Entity Relationship
  11. Field
  12. Field Security Profile
  13. Form
  14. Mail Merge Template
  15. Message
  16. Option Set
  17. Plug-in Assembly
  18. Process
  19. Report
  20. Sdk Message Processing Step
  21. Security Role
  22. Service Endpoint
  23. Site Map
  24. Web Resource

 

What cannot be added

Some changes you make to the system cannot be added to a Solution. Exceptions include users, Teams, Business Units, Queues, Goals, the Subject hierarchy, and anything that relates to the product catalog, because these are data records, and they must be created independently in each Organization that you use.

If you want to create manual data and use the same guids between systems then you will need to export and import the data so you can specify the guids used.

 

How solutions are applied: taken from this great blog post, although I think I have seen the picture on the CRM SDK somehwere but I can’t remember where

All solutions are evaluated as layers to determine what your CRM application will actually do. The following diagram shows how managed and unmanaged solutions are evaluated and how changes in them will appear in your organization.
Solutions2

 

Publishing

A quick note to say that when you make changes to components the usual system is you save the changes and then when you are ready for all users to see the changes you publish the changes.

When you import a managed solution it will publish the changes automatically but if you import an unmanaged solution then you will need to publish those changes.

Just a warning there are some components do not need publishing

Note: Publishing customizations can interfere with normal system operation. In a production environment we recommend that you schedule publishing customizations when it’s least disruptive to users.
The following solution components require publishing when they are updated:

  • Application Ribbon
  • Entity
  • Entity Relationship
  • Field
  • Form
  • Message
  • Option Set
  • Site Map
  • Web Resource

 

Export and Import Solutions

After you have completed a set of customizations, you can export your Solution. This exported solution package is a compressed file that has a zip file name extension (.zip). The .zip file contains several XML files and other types of content such as .xaml, .dll and image files, depending on the components in the Solution. You should keep a copy of this solution package in a secure location as part of your change management process.

 

Don’t forget there are more videos on the youtube channel Hosk Dev CRM or if you are just interested in Videos for the MB2-703 Certification – CRM 2013 Customization and Configuration exam there is a playlist you will find useful

https://www.youtube.com/playlist?list=PLsOVDEkdRUuyY0xRq8flZ-ePOcBvZ-XpJ

 

 


Filed under: CRM 2011, CRM 2013, Hosk CRM Dev, Hosk’s Microsoft Dynamic CRM Development, MB2-703, Online