Orchestrator Function: Validate Workflow or Function Input Validation

by Simon Sparks · 20 January 2026

To use this function add it to the class library file named Utilities.ts

GitHub Repository: https://github.com/SimonSparksUK/Orchestrator

Filename: Utilities.ts

Function: validateWorkflowInputs

Description: This function will validate all inputs to a workflow.

public static validateWorkflowInputs(strResourceActionType: string, strResourceActionName: string, objWorkflowToken: WorkflowToken): void {
  let strWorkflowName: string = `${strResourceActionType} - ${strResourceActionName}`;

  let objLogger: Logger = Logger.getLogger(`${strWorkflowName} - validateWorkflowInputs`);

  let objProperties: Properties = objWorkflowToken.getInputParameters();

  let objWorkflow: Workflow = objWorkflowToken.currentWorkflow;

  let arrParameter: Parameter[] = objWorkflow.inParameters;

  arrParameter.forEach((objParameter: Parameter): void => {
    Utilities.validateParameter(objParameter, objProperties, objLogger);
  });
}

Function: validateFunctionInputs

Description: This function allows you to pass in a Properties object which Automation sends to workflows that are executed either as a Day 2 Resource Action or as a Subscription.

  public static validateFunctionInputs(objProperties: Properties, strResourceActionType: string, strResourceActionName: string, objWorkflowToken: WorkflowToken): void {
    let strWorkflowName: string = `${strResourceActionType} - ${strResourceActionName}`;

    let objLogger: Logger = Logger.getLogger(`${strWorkflowName} - validateFunctionInputs`);

    let objWorkflow: Workflow = objWorkflowToken.currentWorkflow;

    let arrParameter: Parameter[] = objWorkflow.inParameters;

    arrParameter.forEach((objParameter: Parameter): void => {
      Utilities.validateParameter(objParameter, objProperties, objLogger);
    });
  }

Function: validateParameter

Description: This is the actual engine of the input validation it uses the custom classes which you can find in the Extensions post e.g. Error_RequiredParameter_Null.

public static validateParameter(objParameter: Parameter, objProperties: Properties, objLogger: Logger): void {

  objLogger.info(`Input Parameter: ${objParameter.name}:${objParameter.type} ( ${objParameter.description} ).`);

  let objValue: any = objProperties.get(objParameter.name);

  let strType: string = System.getObjectType(objValue);

  strType = strType.toLowerCase();

  if (strType === "string" && objValue === null) {
    throw new Error_RequiredParameter_Null(objParameter.name);

  } else if (strType === "string" && objValue === "") {
    throw new Error_RequiredParameter_EmptyString(objParameter.name);

  } else if (strType === "number" && objValue === null) {
    throw new Error_RequiredParameter_Null(objParameter.name);

  } else if (strType === "number" && Number.isNaN(objValue)) {
    throw new Error_RequiredParameter_NotANumber(objParameter.name);

  } else if (strType === "boolean" && objValue === null) {
    throw new Error_RequiredParameter_Null(objParameter.name);

  } else if (strType === "boolean" && (objValue !== true || objValue !== false)) {
    throw new Error_RequiredParameter_NotTrueOrFalse(objParameter.name);

  } else if (strType === "date" && objValue === null) {
    throw new Error_RequiredParameter_Null(objParameter.name);

  } else if (strType === "date" && !(objValue instanceof Date)) {
    throw new Error_RequiredParameter_NotADate(objParameter.name);

  } else if (strType === "array" && objValue === null) {
    throw new Error_RequiredParameter_Null(objParameter.name);

  } else if (strType === "array" && objValue.length === 0) {
    throw new Error_RequiredParameter_EmptyArray(objParameter.name);

  } else if (strType === "array" && Array.isArray(objValue) === false) {
    throw new Error_RequiredParameter_NotAnArray(objParameter.name);

  } else if (strType === "object" && objValue === null) {
    throw new Error_RequiredParameter_Null(objParameter.name);

  } else if (strType === "object" && objValue instanceof eval(strType)) {
    throw new Error_RequiredParameter_Missing(objParameter.name);
  }
}

Discover more from Cloud Build Tools

Subscribe to get the latest posts sent to your email.

You may also like