I want to share with you a funny situation while writing extremely long and complex SharePoint workflow. I was creating a workflow that controls deployment requests and there is a requirement to throw an approval for 9 stages. After each stage, there is couple of email notifications and web services to call.
The code got extremely big that when I tried to publish my workflow code inside SharePoint designer, I got this message:
“The request message is too big. The server does not allow messages larger than 2097152 bytes.”
It seems I reached the maximum allowed size for a workflow code definition :). After opening a case with Microsoft, we came up with couple of workarounds:
- Divide the workflow to smaller workflows
- Re-write the workflow code in a way that redundant code can be removed.
- Increase the upload limit of 2097152 bytes.
I worked with Microsoft engineer to apply the third workaround by applying the following PowerShell code on all SharePoint front end servers, and doing IIS reset after that:
$ws = [Microsoft.SharePoint.Administration.SPWebService]::ContentService $ws.ClientRequestServiceSettings.MaxReceivedMessageSize = 5120000 $ws.ClientRequestServiceSettings.MaxParseMessageSize = 5120000 $ws.Update()
This will increase the upload limit to 5 MB instead of the default 2 MB. When I initially try to get the default value of the above values, I got empty values, so me and Microsoft support engineer assumed that empty value is actually 2 MB.
I hope this will help someone out there. Of course, the best practice is to do smart coding for workflows so that the code never exceed 2 MB for performance reasons as per my talk with Microsoft engineer.
Tip: How you can know the size of your workflow code?
Open SharePoint designer, Go to Workflows, pick your workflow, click Save As Template. This will save the template to “Site Assets“.
Next go to Site Assets, you will see your workflow file with WSP extension, along with its size. This size does not reflect the actual size of your workflow code. Now go and click Export File, and save it to your desktop.
Now go to your desktop, and change the extension of the exported file to .CAB , then double click the file to open it: