Skip to main content

Solutions in Dynamics 365

A solution is a bucket where all the customization components of a particular project are stored. Creating a solution helps in moving these components from one environment to another. There are three different types of solutions: default, managed and unmanaged.
  • Default Solution. The out-of-the-box Microsoft Dynamics CRM software as well as the pre-deployment customizations are part of the default solution. You can access a default solution by navigating to SettingsCustomizations, and Customize the system:solutions img1
  • Unmanaged Solution. The beginning state of solution is the unmanaged solution state. During this phase, you can add, edit, update, remove, delete, and test any of the components of the solution. You also have the ability to create restrictions on the components within the solution. Any number of these unmanaged customized solution components can be associated with any number of unmanaged solutions.
  • Managed Solution. A managed solution is a finalized solution that can be distributed and installed. They are created by exporting an unmanaged solution by setting restrictions to prevent any further customizations. They are installed in addition to the system solution. They can also be layered on top of other managed solutions as well. The unrestricted components of the solution are still customizable.

Solution Components

(http://msdn.microsoft.com/en-us/library/gg334576.aspx)

Schema:

  • Entities
  • Attributes
  • Relationships
  • Global Option Sets

Analytics:

  • Dashboards
  • Reports
  • Visualizations

User Interface:

  • Application Ribbon
  • SiteMap
  • Forms
  • Entity Ribbons
  • Web Resources

Process/Code:

  • Processes – Dialogs and Workflows
  • Plug-ins – Assemblies and Processing Steps

Templates:

  • Mail-merge
  • E-mail
  • Contract
  • Article

Security:

  • Security Roles
  • Field Level Security Profiles

Comments

Popular posts from this blog

Microsoft Dynamics 365 CRM Troubleshooting Solution Import Errors

Remember when CRM life was so much simpler that solutions did not yet exist? If you had separate development and production environments and you wanted to move your customizations, you simply clicked  Export Customizations  and voila! It was done. Those were the days. Nostalgia Warning – in case you’ve forgotten, here’s a screenshot to jog your memory: With CRM 2011, the concept of solutions was introduced, giving us a new set of powers – by picking individual entities, workflows, etc., we now had the ability to group together and move only those customizations we wanted to include in our solution. The next great solutions advancement came with CRM 2016: we can now select specific components within each individual entity – so instead of moving the entire contact entity, for example, we have the option of moving only a certain view or field within the entity. And we can do this without having to hack the xml in the zip file. (By the way, if you want to learn more abou...

How to Filter SubGrid Lookup view in Dynamics 365 CRM

How to Filter SubGrid Lookup view in Dynamics 365 CRM.  Please check the comments in the below code and do follow the steps accordingly and call the  filterSubGrid() funtion on onload. var LastQuery = ""; function filterSubGrid() { debugger; setSubgridLookupFiltering(); } function AddLookupFilter(entity_type, customFilter) { var subgridLookup = Xrm.Page.getControl("lookup_Contacts_Participants"); subgridLookup.addCustomFilter(customFilter, entity_type); } function setSubgridLookupFiltering() { var subgridAddButtonId = "Contacts_Participants_addImageButton"; //Try to get the element from both the current and the parent document. var subgridAddButton = document.getElementById(subgridAddButtonId) || window.parent.document.getElementById(subgridAddButtonId); //This script may run before the subgrid has been fully loaded on the form. If this is the case, //delay and retry until the subgrid has been loaded. if (subg...

How to prevent record from saving in Dynamics CRM using Javascript

  From time to time you might need to add some validation to the save event of an entity, this actually used to be an approach I would use on a regular basis but since the introduction of business rules have found myself doing this less and less. But still, knowing the ability is available is handy. When you define the onsave event function, you must tick the “Pass execution contact as first parameter” option. (See below) Having done that you can create an onSave function with code similar to the example I have shown below. Note forgetting the “(context)”, which will take the context parameter allowing you to prevent the save when needed. function onSave(context) { var saveEvent = context.getEventArgs(); if (Xrm.Page.getAttribute("telephone1").getValue() == null) { // *** Note: I am using an alert for testing a notification maybe better! alert("Put in a phone number!"); saveEvent.preventDefault(); } } Note: This simple example might be better achi...