Write Custom Action Handlers
Any HTTP-capable technology can be used to implement a custom action handler. It must have the ability to receive HTTP requests, validate the hashed signature of the message, and respond appropriately via HTTP. One example is Azure Functions, a serverless cloud-based platform for running small pieces of code. Many out-of-the-box action handlers make use of this platform for its ease of use and flexibility.
Publishing a webhook varies greatly based on what type of technology you use to write the webhook. For instructions on how to publish Azure Functions, refer to Microsoft’s topic Publish your function to Azure.
The webhook invoked for your action handler contains a standard payload of data with information about the version being processed. The standard payload is sent in an HTTP request and includes information such as the current action (e.g., before reconcile, on reconcile conflict, etc.), and any custom properties specified during configuration in Solution Center. Below is a description of that data model:
-
workflowSessionId: This is used by Azure Service Bus internally for message ordering. This property is needed to put a message on Azure Service Bus back to GDBM XI.
-
featureServiceUrl: This is the URL of the feature service that the version is represented by.
-
tenantID: This is used primarily for out-of-the-box action handlers and represents your organization name. This is useful for distinguishing between environments (dev, test, or prod).
-
arcFMSessionId: This ID is used to provide the ID of the session If the version is associated with Session Manager.
-
orchestrationId: This ID is the unique ID of the schedule processing this version. Each independently configured schedule has its own unique ID.
-
action: This represents the status of the version being processed (e.g., Before Reconcile, After Successful Post).
-
versionName: This is name of the geodatabase version including the owner.
-
versionID: This is the ID of the geodatabase version.
-
properties: These are custom properties that are passed through from configuration in Solution Center.