So a recent requirement put to me was to send an email to customers with a specific attachment.
There was also a requirement to ensure the right people would get the email but that was fairly straight forward and manageable through Advance Find/Fetch XML.
I was quite keen to avoid development of a custom workflow activity or plugin to cater for this business objective.
After some investigating I found a fairly straight forward solution:
- Create an email template with the body/dynamic tags you wish to and attach the static attachment(in my case a PDF) here
- Create your asynchronous workflow as you normally would with the conditional logic and trigger points
- When adding the send email action, choose to use email template and call in the email template within the workflow
While importing a solution I got a generic SQL error but when i downloaded the log file i saw below error:
0x80044150 – Object reference not set to an instance of an object
I have seen this error in plugins several times but never in import but root cause and underlying issue remains the same.
The import was trying to find something which was not there in target.
There was a relationship in my solution exist as N:1 to an entity which was deleted from target system way back hence this error occurred. Using the relationship given in solution, CRM was trying to find related entity which wasn’t there.
Hope this helps.
When doing Dynamic CRM OnPremise deployment, you might get above error. I am not sure of the actual root cause but there are few fixes that you can apply.
In my recent blog i have showed a fix for CustomControlDefaultConfig related error : https://rawishblog.wordpress.com/2018/05/10/singleton-retrieve-query-should-not-return-more-than-1-record-manged-solution-import-error-onpremise/
For the above error where it talks about duplicate CustomControlDefaultConfig , you can use below method.
Use below query to find out the duplicates:
with lst as (
select CustomControlDefaultConfigId, count(*) cnt
group by CustomControlDefaultConfigId
having count(*) > 1
select ent.name, lst.CustomControlDefaultConfigId, cfg.CustomControlDefaultConfigIdUnique, cfg.*
inner join CustomControlDefaultConfig cfg on cfg.CustomControlDefaultConfigId = lst.CustomControlDefaultConfigId
left join entity ent on ent.ObjectTypeCode = cfg.PrimaryEntityTypeCode
Once you have the duplicates , delete those records from this environment, export the solution again & finally try to import to other environment. Hopefully this will resolve the issue.
I get this question very often – “how do we know when and who imported the solution into CRM?”
Whilst there are so many method of knowing it for e.g looking into database or checking in the XML, there is tool which can be used. Available as a plugin for XRM tool box. It shows something like below:
Download the XRMToolBox from here : https://www.xrmtoolbox.com/ and extract to a folder. Run the application & follow below steps:
- from the main header options , click on tools> plugin store:
- on the next screen search for “Solution History” and select the plugin and click on “Install”:
- post this close this screenshot and open the tool from main xrmtoolbox navigatation.
as soon as you open it – it will give you all the available solutions and as you select the solution it gives the information you need ( showed in the screenshot 1)
i hope this helps!