CRM Plug-in / Custom Workflow debugging check list

UPDATE (30/07/2010) : I haved updated few steps based on comments from Andriy Butenko (CRM MVP)

If you got plug in or custom workflow application which is not working as expected on CRM server or giving unexpected error then following is the check list to set up for debugging Plug in/Custom workflow application.

1-Ensure that your plug-in is signed ( For Custom workflow this step is optional)

2-Rebuild the plug-in/Custom workflow

3-Restart CRM web site (i.e. run an iisreset command on server)

4. Also restart CRM Asynchronous Service on CRM server

5-copy the .pdb file and your .dll file to server\bin\assembly

6-Register the Plug-in Registration Tool V2 (

7. Refer to your dll in bin\assembly

8. Make it disk deployment (This step is also optional)

9-Register the step

10-Register the image if needed for relevant Plug-in

11- Open the relevant application in visual studio and click on Debug -> attach and then
select w3wp.exe if Synchronous plug-in or
select CRMAsyncService if asynchronous plug-in or Custom workflow.

12. You must be all set by then and just need to put breakpoint on relevant code line.

Note:- steps 9 & 10 are not needed for custom workflow application.


Hope this helps…


4 thoughts on “CRM Plug-in / Custom Workflow debugging check list

  1. aarch

    Hi Mayank,
    First of all i apologize for using this space for clearing my doubt regarding a solution you gave in .
    You gave the solution using Marketing List and from there you tried to use Advanced Find and removed the accounts having contacts .
    I cannot understand why you used this approach instaed of directly checking accounts having Primary contact as null or contacts having parent customer null instaed of going for Marketing list .I would be grateful if you share the trick with me..thanks in advance

    1. mayankp Post author

      Hi Ajay,
      The reason is simple and restriction of CRM advanced find window..

      In Advanced find as soon as you add related entity then CRM system put inner join behind the screen between those two entity so you will not able to get the record which are not matching condition.

      if you go for account with primary contact as null then CRM will do following query behind the scene

      select * from account inner join contact

      where account.accountid = contact.parentcustomerid

      and <>

      This means CRM will not return any return which does not satisfy default join condition first….

      Marketing List tricks helps solving this problem and I have used this many times successfully..

      Hope this clarifies it..let me know if you need more information for the same..

  2. Andriy Butenko

    It is not required to register assembly as disk-deployed to debug plugins or custom workflow action.

    Also it is not required to strong-name assemblies which contains custom workflow activities.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s