Create a Custom Workflow Activity

[Applies to: Microsoft Dynamics CRM 2011]

This topic describes how to create a custom workflow activity and register it for use in Microsoft Dynamics CRM 2011. For Microsoft Dynamics CRM Online, custom workflow activities can only be registered to execute in the sandbox (partial trust). Microsoft Dynamics CRM Online support for sandbox execution of custom workflow activities was added in the Microsoft Dynamics CRM December 2012 Service Update. For more information about the sandbox and partial trust, see Plug-in Isolation, Trusts, and Statistics.

The Developer Toolkit for Microsoft Dynamics CRM 2011 and Microsoft Dynamics CRM Online provides a streamlined experience for development of custom workflow activities. For more information, see Create and Deploy Workflow Libraries Using the Developer Toolkit.

If your organization has been updated to Microsoft Dynamics CRM Online Fall ’13, please use the latest version of the SDK. Download the updated SDK package for Microsoft Dynamics CRM 2013 and CRM Online Fall ‘13.

In This Topic

Required Software and Assemblies

To develop Windows Workflow Foundation 4 custom activities, you must develop them on Microsoft .NET Framework 4. If you plan to register your custom workflow activities with Microsoft Dynamics CRM Online, you must build them using the Microsoft .NET Framework 4 PU3 (platform update 3) or a later revision. A best practice is to simply make sure your .NET Framework 4.0 installation is up to date with any released Windows Update patches.

The following assemblies must be added as references in your project. They can be found in the SDK\Bin folder in Microsoft Dynamics CRM SDK.

  • Microsoft.Xrm.Sdk.dll

  • Microsoft.Xrm.Sdk.Workflow.dll

Use the CodeActivity Workflow Base Class

To create a custom workflow activity, create a class that inherits from the CodeActivity workflow base class. This class is available in the System.Activities namespace. Activities that inherit from the CodeActivity class can override the Execute method to produce custom functionality.

To create a custom activity that inherits from CodeActivity

  1. Start Microsoft Visual Studio 2010.

  2. On the File menu, click New, and then click Project.

  3. In the New Project dialog box, select Workflow under Visual C# in the Installed Templates pane, and then select Activity Library.

  4. Specify a name and location for the solution, and then click OK.

  5. Navigate to the Project menu and select Properties. On the Application tab, specify .NET Framework 4 as the target framework.

  6. Add references to the Microsoft.Xrm.Sdk.dll and Microsoft.Xrm.Workflow.dll assemblies.

  7. Delete the Activity1.xaml file in the project.

  8. Add a class file (.cs) to the project. In Solution Explorer, right-click the project, select Add, and then click Class. In the Add New Item dialog box, type a name for the class, and then click Add.

  9. Open the class file, and add the following using directives:

    using System.Activities;
    using Microsoft.Xrm.Sdk;
    using Microsoft.Xrm.Sdk.Workflow;
  10. Make the class inherit from the CodeActivity class and give it a public access modifier as shown here:

    public class SampleCustomActivity : CodeActivity
  11. Add functionality to the class by adding an Execute method:

    protected override void Execute(CodeActivityContext context)
        //Activity code

    For more information, see Add Metadata to a Custom Workflow Activity.

  12. Specify input and output parameters. For more information, see Add Metadata to a Custom Workflow Activity.

  13. In the project properties under the Signing tab, select Sign the assembly and provide a key file name. Custom workflow activity (and plug-in) assemblies must be signed.

  14. Compile the project to create an assembly (.dll).

To view a code sample that demonstrates how to create a custom workflow activity, see Sample: Create a Custom Workflow Activity.

For improved performance, Microsoft Dynamics CRM caches custom workflow activity instances. The custom workflow activity’s Execute method should be written to be stateless because the constructor is not called for every invocation of the custom workflow activity. Also, multiple system threads could execute the custom workflow activity at the same time. All per invocation state information is stored in the context, so it is not recommended to use global variables or member variables to pass data from one invocation to the next.

Specify the Name and Group Name for a Custom Workflow Activity

When you register a custom workflow activity assembly, specify the name and group name. The name property specifies the name of the workflow activity. The group name property specifies the name of the submenu added to the main menu in the Microsoft Dynamics CRM process designer. These properties link the custom workflow activity with the Microsoft Dynamics CRM process designer, so that the custom activity name will appear in the user interface.

To specify the name and group name for a custom workflow activity, use the PluginType.Name and PluginType.WorkflowActivityGroupName attributes when you register the custom workflow activity assembly. For more information about registering custom workflow activities, see Register and Use a Custom Workflow Activity Assembly. If the PluginType.Name and PluginType.WorkflowActivityGroupName attributes are set to null, the custom activity is hidden from the Microsoft Dynamics CRM workflow designer and is only accessible from XAML workflows.

If you are using the Plug-in Registration tool to register the custom workflow activity assembly, you can specify appropriate values in the Name and WorkflowActivityGroupName boxes, under the Editable region. For more information about using the Plug-in Registration tool, see Walkthrough: Register a Plug-in Using the Plug-in Registration Tool.

Specify the Group Name and Name while registering

After this custom workflow activity is registered, you can use it from the Microsoft Dynamics CRM process designer for workflows or dialogs. For more information, see Register and Use a Custom Workflow Activity Assembly.

See Also

Microsoft Dynamics CRM 2011
Send comments about this topic to Microsoft.
© 2013 Microsoft Corporation. All rights reserved.

Community Additions