We all know that if we call a child workflow from a parent real-time workflow, it runs in context of that parent workflow but what happens if the trigger for the parent real-time workflow is updated using a custom application outside of CRM?
I had a custom .Net application which used to get values from CRM, send them to SAP and update the return values from SAP back into CRM. The custom application used to trigger as an batch application. There was a real-time workflow configured on update of the fields populated by the .Net application in CRM which internally used to call a child workflow process.
One day issue was reported by the .Net application as “[Microsoft.Xrm.Sdk.OrganizationServiceFault]: This workflow cannot run because one or more child workflows it uses have not been published or have been deleted. Please check the child workflows and try running this workflow again. (Fault Detail is equal to Microsoft.Xrm.Sdk.OrganizationServiceFault).”.
As the .Net application used to update the field which then used to trigger the real-time workflow (configured to run “After”) it was not quite obvious behavior for me. I did know that the child workflow was deactivated but my assumption was that the issue will be logged in system jobs and not in .Net application. I was expecting that .Net application will update the field in CRM, after which the parent real-time workflow will trigger which will try to call a deactivated child workflow and fail.
But after digging a bit it was observed that as the parent workflow was configured as real-time it keeps the context with calling .Net application and returns the error back to .Net application. Due to which the .Net application throw an exception. I’m still not sure why, but this is how it works.
Referencing to the original post on CRM 2013 from here.
As Business Rules are created for a particular entity, we can see all the business rules that have been created for any particular entity from the entity customization itself.
This is ok when we need to see all the business rules on an entity. But it does not allow us to pull up a list of business rules across the whole system. Sometimes after deploying a solution, we need to check the business rules to make sure they’re activated, or if there are any errors, and we don’t want to have to go through each entity and check these.
As Business Rules are workflows under the hood, we can do an Advanced Find query with filter criteria on Categories as Business Rule (for CRM 2013, it was PBL) to get the list of all business rules in an organization. The result contains Name, Primary Entity, status and other basic information about the business rule.
While working with a sub-grid in D365, a question was thrown regarding behavior of Add record (plus) button. Many of you must have observed that for few sub-grids, click action of Add record button opens a new form to create a new record while for others a new line is added in sub-grid where one can add the record name and associate it. You might have figured the reason for this earlier but it was now that a college helped to figure out why it happens for me.
For those who were still looking for the reason of this behavior like me, this is all related to requirement level of the look-up field on child record. If Look-up is configured as business required then a new form is opened else the grid provides an inline row to associate the record. My assumption for this behavior is that if the look-up is business required, then it is assumed that all the existing records are already associated with some parent record thus user should create a new record. Always correct me if i’m wrong 🙂