IronPython CRM 2011 Script for Copying Forms

So I’ve got an entity which has two very similar and very long forms. I made changes to one form which I needed to replicate on the other. I didn’t want to do that manually because that seemed like a very tedious and longwinded piece of work. So instead I used some code.

I did this using an IronPython script and Determination my IronPython/CRM 2011 tool.

Continue reading


IronPython Script for Deleting Waiting CRM 2011 Workflows with an Error Code

So last week I had to clear out 1000’s of waiting workflows which had error codes in a CRM 2011 environment. I did this using an IronPython script and Determination my IronPython/CRM 2011 tool.

Its a pretty straight forward task, first deactivate the workflow (oddly, using an update call and not SetStateDynamic) and then delete the record. For those interested in performing such a task here is the full source.

import clr


import Microsoft.Xrm.Sdk
import Microsoft.Xrm.Client.Services

connection = Microsoft.Xrm.Client.CrmConnection.Parse(r'[connection string goes here]')
service = Microsoft.Xrm.Client.Services.OrganizationService(connection)

query = Microsoft.Xrm.Sdk.Query.QueryExpression('asyncoperation')
query.Criteria = Microsoft.Xrm.Sdk.Query.FilterExpression()
query.Criteria.AddCondition('errorcode', Microsoft.Xrm.Sdk.Query.ConditionOperator.NotNull)
query.Criteria.AddCondition('statuscode', Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, 10)

result = service.RetrieveMultiple(query)

for r in result.Entities:
	print r.Id
	r['statecode'] = Microsoft.Xrm.Sdk.OptionSetValue(3)
	r['statuscode'] = Microsoft.Xrm.Sdk.OptionSetValue(32)
	service.Delete('asyncoperation', r.Id)

CRM 2011 Export Unmanaged Solutions Programatically

A couple of day’s ago I was asked to export all the unmanaged solutions from an environment for the purposes of backup. There was more than a few so to avoid having to do them all manually I hacked out this code; which when given a service and directory will export all the unmanaged from the environment.

Continue reading

CRM 2011 Programatically Finding the Values of Picklists, Optionsets, Statecode, Statuscode and Boolean (Two Options)

When developing for CRM 2011 I’m pretty much always going to be setting the values of picklists (local and global optionsets), statecodes, statuscodes and booleans (two options) – the sorts of fields I’m talking about here are the ones highlighted in orange below. Usually I will know the label off the top of my head but I don’t always have the actual number value which is required to set the attribute correctly.

Continue reading