Skip to main content

Inject your own activity type service


How to create a service and add to the activity type constructor.

You can use your own service in the context of an activity type. You must register custom services  in configuration and inject them in the activity type constructor. 

  1. Create an interface and a concrete implementation for your service. The following example uses an IExampleService interface and an ExampleService concrete class:

    using System;
    namespace Documentation.Examples
        public interface IExampleService
            void DoSomething();
        public class ExampleService() : IExampleService
            public void DoSomething()
                // Does something
  2. Add the service interface to the constructor of your activity type and set a private service property as shown:

    using Sitecore.Xdb.MarketingAutomation.Core.Activity;
    using Sitecore.Xdb.MarketingAutomation.Core.Processing.Plan;
    using Microsoft.Extensions.Logging;
    namespace Documentation.Examples
        public class DoNothingActivity : IActivity
            private IExampleService ExampleService { get; set; }
            public IActivityServices Services { get; set; }
            public DoNothingActivity(IExampleService exampleService)
                ExampleService = exampleService;
            public ActivityResult Invoke(IContactProcessingContext context)
                return new SuccessMove();
  1. Navigate to the following folder in the Automation Engine root: \App_Data\Config\sitecore\MarketingAutomation


    In a local instance, the Automation Engine is located in the C:\path\to\xconnect\App_data\jobs\continuous\AutomationEngine folder.

  2. Create a new XML file that extends sc.MarketingAutomation.ActivityServices.xml and registers your custom services:

        Marketing Automation Activity Services configuration
                    <Type>Documentation.Examples.ExampleService, Documentation.Examples</Type>
                    <As>Documentation.Examples.IExampleService, Documentation.Examples</As>


    Node names must be unique - for example, there can only be one Documentation.ExampleService node. The node name is up to you - it does not need to be the full namespace of the service.