Today while exploring the CRM, I found “status reason transitions” option of status reason field. This option is introduced many years back but I haven’t noticed. Status reason transitions are an optional additional level of filtering to define what the status reason value can be changed to for each status reason. That means it will restrict the users to select the status reason which is not valid based on current status reason. Follow the below steps to configure this in your environment.
Open the Default solution.
Navigate to the entity (Case for example).
Go to Fields and open “statuscode” field.
Click on the “Edit status reason transition” button on the top.
A window will open to configure the status reason transition . The Current Status Reasons are available on the left and for each of the Current Status Reason you can specify the available New Status Reasons.
Select “Enable Status Reason Transitions” check box and add the new status reasons based on your business need.
Save and publish the changes.
In the above example, one of the business scenario is, I will not allow the users to select “Problem Solved” status reason from “On Hold”. User has to change it to “In Progress” in order to move to any other status reason.
Like this you can configure all your scenarios based on your business needs. This can be configured on both System and Custom entities.
This is a common issue everyone would have faced once in a while that the customizations were not getting applied on the target instance through solution deployment. This is due to the direct changes on the component which is part of managed solution.
A component which is managed, gets an unmanaged layer as soon as you edit it directly on the instance. This unmanaged (active) layer lays on top of all other layers, which are coming from the different solutions containing this component. The layer on top is always winning, hence you can’t see the new changes coming from new deployments.
To avoid this issue, Microsoft introduced a new feature called “Solution Layers” where you can see all solutions where this component is part of it. You can see one “Active” solution on top of all solutions if you would have changed something directly on the instance. So, to get rid of the unmanaged customizations on managed component, you have to follow the below steps.
Select the component and Click on “Solution Layers” button (some times you can see this option under “More Actions” drop down menu).
2. On click of this button, it will show the list of all solutions which included selected component, as shown in the below screenshot.
3. Select the 3 dots (…) of “Active” solution row, select “Remove Active Custmoziations” option and confirm.
4. That’s all you have to do to remove all unmanaged customizations, after that the changes will be affected which are coming from new deployments.
I faced this situation so many times, the changes I have done for ex. in web resources in dev instance couldn’t transfer to UAT/Prod instance due to the “Active” solution layer. So with this new feature, you could remove this unwanted solution layer with a single button click.
Note: Microsoft not yet rolled out this feature for some components like Views and Fields. (Thanks Viswanath for highlighting this in your comment)