Integrate Server & Online Interoperability

Overview

Users of Loome Integrate Server can transition from Integrate Server to Integrate Online by incorporating Integrate Online tasks with their Integrate Server tasks. This will allow you to start tasks that you have created in Online while using Server.

In Server, you can use a PowerShell script to run a task in Online. It will notify you in this PowerShell task of its success and will cause this PowerShell script task to succeed or fail depending on the result of the job in Online.

It is useful when you want to use the new features of Loome Integrate Online, but still use tasks in Server. For example, you can create and use two incremental data migration tasks in Online, but use them alongside SSIS tasks in Server. Server can run a PowerShell script that will start those tasks in sequence with the tasks in Online.

These tasks can be run in your preferred order. For example, if I had three tasks overall and one was a task in Online and the other two were tasks in Server, I could run them in the following sequence. The first data migration task would run in Server, then a PowerShell script for the second task in Online will run and the status of the PowerShell task in Server will succeed or fail depending on the outcome of this Online task. If successful, the third task will run in Server.

How to configure the script for your Online task

First, create a client ID for your tenant. Read a guide on how to create a client ID here.

Copy the script below to paste into your Server script task. Once you have pasted it into your task, you can edit it to include your details, including the client ID of your Loome Integrate Online tenant we created in the linked guide above.


$AU = @{
    "idsHostname" = "datagovernor-dev-id.azurewebsites.net";    "apiHostname" = "datagovernor-dev-api.azurewebsites.net";
};

# Change this to your selected host respectively.
$selectedHost = $AU;

# Provide your preferred clientId 
$clientId = "clientId";

$accessHeaders = @{
    "grant_type"    = "client_credentials";
    "client_id"     = $clientId;
    "client_secret" = $clientId;
    "scope"         = "webApi"
};
$baseUrl = "https://$($selectedHost['apiHostname'])/api/v1/";

$accessToken = ((Invoke-WebRequest -Uri 
"https://$($selectedHost['idsHostname'])/connect/token" -Method Post -Body $accessHeaders).Content | ConvertFrom-Json).access_token;
$accessHeaders = @{"Authorization" = "bearer $accessToken" }

# Provide the job Number you want to execute
$jobNumber = "124";

$runOnceReq = (Invoke-WebRequest -Uri 
"$($baseUrl)Jobs/$jobNumber/JobExecutions/RunOnce" -Headers $accessHeaders);

# If 200, you ran the job.
if ($runOnceReq.StatusCode -eq 200) {    
    Write-Host -ForegroundColor Green "Job with ID $jobNumber successfully queued for execution!";
}
do{
    Start-Sleep -Seconds 3;    
    
    # Retrieves the JobExecutionId based on the job Number provided
    $lastExecution = ((Invoke-WebRequest -Uri "$($baseUrl)Jobs/$jobNumber" -Headers$accessHeaders).Content | ConvertFrom-Json).lastExecution;
    $status = $lastExecution.status;
} until ($status -eq "Success" -Or $status -eq "Failure")
if($status -eq "Failure"){
throw "This job has failed."
}
else {
Write-Output "This job has succeeded.";
}

The host will depend on the region of Integrate you are using, and you will also need to set the following three variables according to your Loome Integrate instance.

As well as your Client ID, you will also have to provide your Project ID and Job ID.

IdHostName

  • For AU Clients this will be identity-au.perspectiveilm.com
  • For US Clients this will be identity-us.perspectiveilm.com

ApiHostName

  • For AU Clients this will be dg-api-au.perspectiveilm.com
  • For US Clients this will be dg-api-us.perspectiveilm.com

ClientId

  • This is the Client ID you created above.

You can then schedule this script as a task in your Integrate Server pipeline and it will execute the Online task along with your Server tasks.