Loading...
Area: Episerver Add-ons
Applies to versions: 4.18.0 and higher

Multiple external systems

Recommendations [hide]

Note: Episerver Forms is only supported by MVC-based websites and HTML5-compliant browsers.

From version 4.18.0, Episerver Forms can support multiple external systems. Editors can choose one of the registered systems as connected data source in the user interface.

To make Episerver Forms support multiple Marketing Automation connectors:

  1. Create an instance of IExternalSystem and register this with Forms.
    var efmService = ServiceLocator.Current.GetInstance<ExternalSystemService>();
    var custom1 = new CustomExternalSystem("Custom_1");
    custom1.Datasources = GetSomeDatasources(custom1);
    var custom2 = new CustomExternalSystem("Custom_2");
    custom2.Datasources = GetSomeDatasources(custom2);
    efmService.RegisterExternalSystem(custom1);
    efmService.RegisterExternalSystem(custom2);
  2. Forms automatically activates ExternalSystem with the default constructor and registers this with Forms. You can override this default behavior.
  3. Allow the display name of the ExternalSystem by ID. You can get the DisplayName localization resource from the XML path:
    /episerver/forms/externalsystems/{system.Id}/displayname

    If that resource does not exist, fallback to the default one (like previous versions):

    /episerver/forms/externalsystems/{system.GetType().FullName}/displayname

API changes from version 4.18.0:

  1. A new service, ExternalSystemService, is introduced for working with external systems:
    • WorkingExternalSystem. Property to get all currently activated external systems.
    • HasExternalSystems() . Determine there is any an implement of IExternalSystem.
    • ActivateFromTypes(). Automatically try to create instances of IExternalSystem by scanning the assembly. This requires the default constructor of the ExternalSystem. If you do not want to automatically activate your ExternalSystem, override this method and do nothing or do not provide the default constructor for the ExternalSystem.
    • RegisterExternalSystem. Explicitly register an ExternalSystem. Each ExernalSystem must have a unique ID. The ID should not contain spaces or special characters.
    • UnregisterExternalSystem. Remove an ExternalSystem.
    • GetExternalSystem: Return instance of an ExternalSystem by ID.
    • GetAllExternalSystems. Return all instances of ExternalSystem (activated, registered)
  2. The property IPostSubmissionActor.ActiveExternalFieldMappingTable has been obsoleted since the Actors should not know about the mappings. If you want to have a mapping table in Actors, you can use IExternalFieldMappingService.GetActiveFieldMappingTables to retrieve them.
Do you find this information helpful? Please log in to provide feedback.

Last updated: Oct 15, 2018

Recommendations [hide]