Job Complete Handler Object Reference

Overview

A Job Complete Handler, once added as an extension and configured, runs when a Keyfactor Orchestrator checks in to the platform with its job status after completing a job.

Below are references for the interface and context object used to create a Job Complete Handler.

IOrchestratorJobCompleteHandler Interface

This interface comes from the NuGet package Keyfactor.Platform.Extensions.IOrchestratorJobCompleteHandler. A new handler class needs to implement this interface to be registered and used as a Job Complete Handler.

namespace Keyfactor.Platform.Extensions
{
    //
    // Summary:
    //     Keyfactor extensibility point to allow additional or custom functionality following
    //     agent job completion.
    public interface IOrchestratorJobCompleteHandler
    {
        //
        // Summary:
        //     A comma separated list of the guid job type ids for which this handler should
        //     run.
        string JobTypes { get; }

        //
        // Summary:
        //     RunHandler is called after an agent job completes.
        //
        // Parameters:
        //   context:
        //     An object containing the details of the job that just completed.
        //
        // Returns:
        //     A boolean indicating whether the handler completed successfully or not.
        bool RunHandler(OrchestratorJobCompleteHandlerContext context);
    }
}

OrchestratorJobCompleteHandlerContext Object

This object also comes from the NuGet package Keyfactor.Platform.Extensions.IOrchestratorJobCompleteHandler. The OrchestratorJobCompleteHandlerContext object comes in as the "context" of the job completion event when the Job Complete Handler executes.

The Client property has a HTTP Client pre-configured to target the Keyfactor API endpoint, and set with UseDefaultCredential = true. This means that the API request will be made from the Keyfactor Server itself using the App Pool user credentials by default.

namespace Keyfactor.Platform.Extensions
{
    //
    // Summary:
    //     Agent and job information given to the handler.
    public class OrchestratorJobCompleteHandlerContext
    {
        //
        // Summary:
        //     AgentId declared by agent
        public Guid AgentId;
        //
        // Summary:
        //     Username declared by agent
        public string Username;
        //
        // Summary:
        //     ClientMachine declared by agent
        public string ClientMachine;
        //
        // Summary:
        //     The final status of the job.
        public OrchestratorJobStatusJobResult JobResult;
        //
        // Summary:
        //     JobId declared by the job.
        public Guid JobId;
        //
        // Summary:
        //     The type of job.
        public string JobType;
        //
        // Summary:
        //     The JobTypeId declared by the job (Id of the JobType).
        public Guid JobTypeId;
        //
        // Summary:
        //     The type of operation for the job.
        public CertStoreOperationType OperationType;
        //
        // Summary:
        //     The Keyfactor id of the certificate being managed (if applicable).
        public int? CertificateId;
        //
        // Summary:
        //     The time the job was requested (if available).
        public DateTime? RequestTimestamp;
        //
        // Summary:
        //     The number of times the current job has retried.
        public int CurrentRetryCount;
        //
        // Summary:
        //     A pre-configured System.Net.Http.HttpClient object for making additional calls
        //     to Keyfactor for more information.
        public HttpClient Client;

        public OrchestratorJobCompleteHandlerContext();
    }
}