Software

How to Generate a JSON Web Token (JWT) for Oracle Cloud Applications

IDCS REST API w/ Java

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.MultivaluedHashMap;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;

public class IdcsSample {

  public static void main(String[] args) {
    Client client = ClientBuilder.newClient();

    MultivaluedMap<String, String> params = new MultivaluedHashMap<String, String>();

    params.putSingle("grant_type", "client_credentials");
    params.putSingle("scope", "sampleScope");

    Response res = client.target("https://host/oauth2/v1/token").header("Authorization", "...").post(Entity.form(params));

    if (res.getStatus() == 200)
      out.println(res.readEntity(String.class));

    client.close();
  }

}

IDCS REST API w/ Go

package main

import (
  "fmt"

  "github.com/go-resty/resty/v2"
)

func main() {
  client := resty.New()

  res, _ := client.R().SetHeader("Authorization", "...").SetHeader("Content-Type", "application/x-www-form-urlencoded").SetBody(`grant_type=client_credentials&scope=sampleScope`).Post("https://host/oauth2/v1/token")

  if res.StatusCode() == 200 {
    fmt.Printf("%v\n", res)
  }

}

IDCS REST API w/ Node.js

const https = require('https')

var req = https.request({ headers: { 'Authorization': '...', 'Content-Type': 'application/x-www-form-urlencoded' }, hostname: 'host', method: 'POST', path: '/oauth2/v1/token' }, (res) => {

  if (res.statusCode === 200) {
    var body = ''

    res.on('data', (chunk) => {
      body += chunk.toString()
    })

    res.on('end', () => {
      console.log(body)
    })

  }

})

req.write('grant_type=client_credentials&scope=sampleScope')

req.end()

IDCS REST API w/ Python

import requests

res = requests.post('https://host/oauth2/v1/token', data = { 'grant_type': 'client_credentials', 'scope': 'sampleScope' }, headers = { 'Authorization': '...' })

if res.ok:
  print(res.text)

IDCS REST API w/ Ruby

require 'rest-client'

res = RestClient.post 'https://host/oauth2/v1/token', { grant_type: 'client_credentials', scope: 'sampleScope' }, :authorization => '...'

if res.code == 200
  puts res.body
end

IDCS Java SDK

import static java.lang.System.out;

import java.util.HashMap;
import java.util.Map;

import oracle.security.jps.idcsbinding.api.AuthenticationResult;
import oracle.security.jps.idcsbinding.api.OAuthToken;
import oracle.security.jps.idcsbinding.shared.AuthenticationManager;
import oracle.security.jps.idcsbinding.shared.AuthenticationManagerFactory;
import oracle.security.jps.idcsbinding.shared.IDCSTokenAssertionConfiguration;

public class IdcsSample {

  public static void main(String[] args) {
    Map<String, String> config = new HashMap<String, String>();

    config.put(IDCSTokenAssertionConfiguration.IDCS_CLIENT_ID, "sampleClientId");
    config.put(IDCSTokenAssertionConfiguration.IDCS_CLIENT_SECRET, "sampleClientSecret");
    config.put(IDCSTokenAssertionConfiguration.IDCS_CLIENT_TENANT, "sampleClientTenant");
    config.put(IDCSTokenAssertionConfiguration.IDCS_HOST, "host");
    config.put(IDCSTokenAssertionConfiguration.IDCS_PORT, "443");
    config.put("SSLEnabled", "true");

    AuthenticationManager mgr = AuthenticationManagerFactory.getInstance(new IDCSTokenAssertionConfiguration(config));

    AuthenticationResult res = mgr.clientCredentials("sampleScope");

    out.println(res.getToken(OAuthToken.TokenType.ACCESS_TOKEN).getToken());
  }

}

IDCS Node.js SDK

const IdcsAuthenticationManager = require ('./lib/idcsauthenticationmanager.js')

options = {
  ClientId: 'sampleClientId',
  ClientSecret: 'sampleClientSecret',
  ClientTenant:: 'sampleClientTenant',
  IDCSHost: 'https://host'
}

mgr = new IdcsAuthenticationManager(options)

mgr.clientCredentials('sampleScope').then(function(res) {
  console.log(res)
})

IDCS Python SDK

from IdcsClient import *

options = {
  Constants.BASE_URL: 'https://host'
  Constants.CLIENT_ID: 'sampleClientId',
  Constants.CLIENT_SECRET: 'sampleClientSecret',
}

mgr = AuthenticationManager(options)

res = mgr.clientCredentials('sampleToken')

print(res.getAccessToken())

JWT Java Client

import static java.lang.System.out;

import java.util.HashMap;
import java.util.Map;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;

public class JwtSample {

  public static void main(String[] args) {
    Map<String, String> claims = new HashMap<String, String>();

    claims.put(Claims.AUDIENCE, "sampleScope");
    claims.put(Claims.SUBJECT, "sampleClientId");

    out.println(Jwts.builder().setClaims(claims).signWith(Keys.hmacShaKeyFor("sampleClientSecret".getBytes())).compact());
}

JWT Go Client

package main

import (
  "fmt"

  "github.com/SermoDigital/jose/crypto"
  "github.com/SermoDigital/jose/jws"
)

func main() {
  claims := jws.Claims{
    "scopes": []string {
      "sampleScope",
    },
    "sub": "sampleClientId",
  }

  token := jws.NewJWT(claims, crypto.SigningMethodHS256)

  serializedToken, _ := token.Serialize([]byte("sampleClientSecret"))

  fmt.Printf("%s\n", serializedToken)
}

JWT Node.js Client

const jwt = require('jsonwebtoken')

payload = { aud: 'sampleScope', sub: 'sampleClientId' }

console.log(jwt.sign(payload, 'sampleClientSecret')))

JWT Python Client

from authlib.jose import jwt

headers = { 'alg': 'HS256' }

payload = { 'aud': 'sampleScope', 'sub': 'sampleClientId' }

print(jwt.encode(headers, payload, 'sampleClientSecret'))

JWT Ruby Client

require 'jwt'

payload = { aud: 'sampleScope', sub: 'sampleClientId' }

puts JWT.encode payload, 'sampleClientSecret'
Software

How to Register an OAuth Client for Oracle Cloud Applications

1) In the IDCS console, click on “Add an Application”. Click on “Confidential Application”.

2) Enter a name in the “Name” field . Click on “Next”.

3) Select “Configure this application as a client now” and select “Client Credentials”. Click on “+ Add Scope”, check applications and click on “Add”. Save the Scope. Click 2x on “Next”.

4) Click on “Finish”.

5) Save the Client ID and Client Secret. Click on “Close”.

You can find more details here.

Lists

Oracle Integration Cloud Adapters

Oracle

  • Adobe Sign
  • Apache Kafka
  • Automation Anywhere
  • Box
  • DocuSign
  • Eventbrite
  • Evernote
  • FTP
  • Facebook
  • File
  • Gmail
  • Google Calendar
  • Google Tasks
  • IBM DB2
  • IBM MQ JMS
  • LinkedIn
  • Mailchimp
  • Marketo
  • Microsoft 365 Calendar
  • Microsoft 365 Contacts
  • Microsoft 365 Mail
  • Microsoft SQL Server
  • MySQL
  • Oracle Autonomous Data Warehouse
  • Oracle Autonomous Transaction Processing
  • Oracle B2C Service
  • Oracle CPQ Cloud
  • Oracle CX Sales
  • Oracle Commerce Cloud
  • Oracle Database
  • Oracle Database Cloud Service
  • Oracle E-Business Suite
  • Oracle EPM Cloud
  • Oracle Eloqua
  • Oracle Field Service Cloud
  • Oracle HCM Cloud
  • Oracle JD Edwards EnterpriseOne
  • Oracle Logistics Cloud
  • Oracle Monetization Cloud
  • Oracle NetSuite
  • Oracle Policy Automation
  • Oracle Responsys
  • Oracle SOA Suite
  • Oracle Siebel
  • Oracle Talent Acquisition Cloud
  • Oracle Talent Cloud for Midsize
  • Oracle Utilities
  • Oracle WebLogic JMS
  • REST – compatible with OCI API Gateway and Oracle Functions
  • SAP Ariba
  • SAP Commerce Cloud
  • SAP Concur
  • SAP ERP
  • SAP SuccessFactors
  • SOAP
  • Salesforce Sales Cloud
  • ServiceNow
  • Shopify
  • Slack
  • SurveyMonkey
  • Trello
  • Twilio
  • Twitter
  • UiPath
  • Workday

Third-Party

  • Microsoft Dynamics 365

New Ideas (Contribute!)

  • OCI API Gateway
  • Oracle Functions
  • OCI Object Storage
  • Oracle Content and Experience Cloud
  • AWS S3
  • Azure Data Lake Storage
  • Google Cloud Storage
Software

How to Run a Bot in Automation Anywhere

W/o a Queue

Bot Deploy API w/ Java

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;

public class AaeSample {

  public static void main(String[] args) {
    Client client = ClientBuilder.newClient();

    client.target("https://host/v3/automations/deploy").header("X-Authorization", "...").post(Entity.json("{ \"fileId\": \"sampleBotId\", \"runAsUserIds\": [ \"sampleUserId\" ], \"callbackInfo\": { \"url\": \"sampleCallbackUrl\" } }"));

    client.close();
  }


}

Bot Deploy API w/ Go

package main

import "github.com/go-resty/resty/v2"

func main() {
  client := resty.New()

  client.R().SetHeader("X-Authorization", "...").SetBody(`{ "fileId": "sampleBotId", "runAsUserIds": [ "sampleUserId" ], "callbackInfo": { "url": "sampleCallbackUrl" } }`).Post("https://host/v3/automations/deploy")
}

Bot Deploy API w/ Node.js

const https = require('https')

var req = https.request({ headers: { 'X-Authorization': '...' }, hostname: 'host', method: 'POST', path: '/v3/automations/deploy' })

req.write('{ "fileId": "sampleBotId", "runAsUserIds": [ "sampleUserId" ], "callbackInfo": { "url", "sampleCallbackUrl" } }')

req.end()

Bot Deploy API w/ Python

import requests

requests.post('https://host/v3/automations/deploy', json = { 'fileId': 'sampleBotId', 'runAsUserIds': [ 'sampleUserId' ], 'callbackInfo': { 'url': 'sampleCallbackUrl' } }, headers = { 'X-Authorization': '...' })

Bot Deploy API w/ Ruby

require 'rest-client'

RestClient.post 'https://host/v3/automations/deploy', '{ "fileId": "sampleBotId", "runAsUserIds": [ "sampleUserId" ], "callbackInfo": { "url", "sampleCallbackUrl" } }', :x_authorization => '...'

W/ a Queue

Workload Management API w/ Java

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;

public class AaeSample {

  public static void main(String[] args) {
    Client client = ClientBuilder.newClient();

    client.target("https://host/v3/queues/sampleQueueId/workitems").header("X-Authorization", "...").post(Entity.json("{ \"workItems\": [ { \"json\": { ... } ] }"));

    client.close();
  }


}

Workload Management API w/ Go

package main

import "github.com/go-resty/resty/v2"

func main() {
  client := resty.New()

  client.R().SetHeader("X-Authorization", "...").SetBody(`{ "workItems": [ { "json": { ... } ] }`).Post("https://host/v3/queues/sampleQueueId/workitems")
}

Workload Management API w/ Node.js

const https = require('https')

var req = https.request({ headers: { 'X-Authorization': '...' }, hostname: 'host', method: 'POST', path: '/v3/queues/sampleQueueId/workitems' })

req.write('{ "workItems": [ { "json": { ... } ] }')

req.end()

Workload Management API w/ Python

import requests

requests.post('https://host/v3/queues/sampleQueueId/workitems', json = { 'workItems': [ { 'json': { ... } ] }, headers = { 'X-Authorization': '...' })

Workload Management API w/ Ruby

require 'rest-client'

RestClient.post 'https://host/v3/queues/sampleQueueId/workitems', '{ "workItems": [ { "json": { ... } ] }', :x_authorization => '...'
Lists

Automation Anywhere Packages

Automation Anywhere

  • AISense
  • Active Directory
  • Amazon Comprehend – still in beta
  • Analyze
  • App Integration
  • Application
  • Boolean
  • Bot Migration
  • Browser
  • CSV / TXT
  • Clipboard
  • Comment
  • DLL
  • Data Table
  • Database
  • Datetime
  • Delay
  • Dictionary
  • Email
  • Error Handler
  • Excel Advanced
  • Excel Basic
  • FTP / SFTP
  • File
  • Folder
  • Fuzzy Match
  • IQ Bot
  • If
  • Image Recognition
  • Interactive Forms
  • JavaScript
  • LUIS – still in beta
  • List
  • Log to File
  • Loop
  • Message Box
  • Microsoft 365 Authentication
  • Microsoft 365 Calendar
  • Microsoft 365 Excel
  • Microsoft 365 OneDrive
  • Mouse
  • Number
  • OCR
  • PDF
  • PGP
  • Ping
  • Play Sound
  • Printer
  • Prompt
  • Python
  • REST Web Service – compatible with OCI API Gateway, Oracle Functions and Oracle Integration Cloud
  • Recorder
  • SAP ERP
  • SNMP
  • SOAP Web Service – compatible with Oracle Integration Cloud
  • Screen
  • Simulate Keystrokes
  • Step
  • String
  • System
  • Task Bot
  • Terminal Emulator
  • Trigger Loop
  • VBScript
  • Wait
  • Watson Authentication
  • Watson Speech to Text
  • Window
  • Workload
  • XML

New Ideas (Contribute!)

  • OCI API Gateway
  • Oracle Functions
  • Oracle B2C Service
  • Oracle Content and Experience Cloud
  • Oracle Integration Cloud – for processes
  • Status.io
  • Statuspage
  • Microsoft Teams
  • Workplace by Facebook
Software

How to Create a Custom Package for Automation Anywhere

SampleAction.java

package com.wordpress.simplesassim.aae;

import com.automationanywhere.commandsdk.annotations.BotCommand;
import com.automationanywhere.commandsdk.annotations.CommandPkg;
import com.automationanywhere.commandsdk.annotations.Execute;

@BotCommand
@CommandPkg(label = "Sample Action", name = "Sample Action")
public class SampleAction {

  @Execute
  public void doSomething() {
    ...
  }

}

package.template

{
  ...

  "name": "Sample Package",
  "label": "Sample Package",
  "commands": [ "Sample Action" ]
}

build.gradle

buildscript {
  ...

  ext {
    ...

    groupName = 'com.wordpress.simplesassim.aae'
    version '1.0.0'
  }

}

You can find more details here.

Software

How to Migrate Oracle HCM Cloud Configurations

Unified Migration (Default)

Automatically w/ Automation Anywhere Enterprise (AAE) A2019

1) In the AAE Control Room, select “Bots → Credentials” in the left menu. In the “My Credentials” tab, click on the “Create credential…” button, enter “SourceCredential” in the “Credential name” field, enter “user” in the “Attribute name” field, select “Input”, enter the Source User in the “Value” field, enter “password” in the “Attribute name” field, select the “Input” button, enter the Source Password in the “Value” field, select “Masked” and click on the “Create credential” button.

2) Click on the “Create credential…” button, enter “TargetCredential” in the “Credential name”, enter “user” in the “Attribute name” field, select the “Input” button, enter the Target User in the “Value” field, enter “password” in the “Attribute name” field, select “Input”, enter the Target Password in the “Value” field, select “Masked” and click on the “Create credential” button.

3) In the “My Lockers” tab, click on the “Create locker…” button, enter “Locker” in the “Locker name” field, check “SourceCredential” and “TargetCredential”, click 4x on the “Next” button, select a role and click on the “Create locker…” button.

4) Select “Bots → My bots” in the left menu, click on the “+ Create new bot” button, enter a name in the “Name” field and click on the “Create & edit” button.

5) In the “Variables” menu, click on the “Create variable…” button, enter “ExportStatus” in the “Name” field and click on the “Create” button.

6) Click on the “Create variable…” button, enter “ImportStatus” in the “Name” field and click on the “Create” button.

7) Click on the “Create variable…” button, enter “ApplyStatus” in the “Name” field and click on the “Create” button.

8) In the “Actions” menu, drag “Step → Step” to the task list, enter “Export” in the “Title (optional)” field and click on the “Apply” button.

9) In the “Actions” menu, drag “Browser → Launch website” to within the step, enter the Source Sign In Page URL in the “URL” field and click on the “Apply” button.

10) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Sign In” window in the “Object detail” dropdown menu, capture the “User ID” field, select “Set text” in the “Action” dropdown menu, select “Select a credential” and click on the “Pick” button. Select “Locker” in the “Locker” dropdown menu, select “SourceCredential” in the “Credential” dropdown menu, select “user” in the “Attribute” dropdown menu and click on the “Confirm” button. Click on the “Apply” button.

11) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Sign In” window in the “Object detail” dropdown menu, capture the “Password” field, select “Set text” in the “Action” dropdown menu, select “Select a credential” and click on the “Pick” button. Select “Locker” in the “Locker” dropdown menu, select “SourceCredential” in the “Credential” dropdown menu, select “password” in the “Attribute” dropdown menu and click on the “Confirm” button. Click on the “Apply” button.

12) In the “Actions” menu, drag “Simulate keystrokes → Simulate keystrokes” to within the step, select the “Sign In” window in the “Object detail” dropdown menu, enter “[ENTER]” in the “Enter keystrokes here or use the on-screen keyboard” field and click on the “Apply” button.

If you are using SSO, you will have to sign in the gateway instead.

13) In the “Actions” menu, drag “Delay → Delay” to within the step, enter “15” in the “Delay” field and select “Seconds”, for example, and click on the “Apply” button.

14) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Oracle Applications” window in the “Object detail” dropdown menu, capture the “Navigator” menu button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

15) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Oracle Applications” window in the “Object detail” dropdown menu, capture the “Configuration” menu item, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

16) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Oracle Applications” window in the “Object detail” dropdown menu, capture the “Migration” button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

17) In the “Actions” menu, drag “Delay → Delay” to within the step, enter “15” in the “Delay” field and select “Seconds”, for example, and click on the “Apply” button.

18) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Oracle Applications” window in the “Object detail” dropdown menu, capture the “Create Migration Set” button in the “Outgoing” infotile, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

19) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “Move All Changes” button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

20) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “Name” field, select “Set text” in the “Action” dropdown menu, enter a name in the “Enter keystrokes here or use the on-screen keyboard” field and click on the “Apply” button.

21) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “Save and Close” button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

22) In the “Actions” menu, drag “Loop → Loop” to within the step, select the “While” button, select “String condition” in the “Condition” dropdown menu, enter “$ExportStatus$” in the “Source value (optional)” field, select “Does not include” in the “Operator” dropdown menu, enter “Ready for Download” in the “Target value (optional)” field, check “Check the condition at the end of the iterator” and click on the “Apply” button.

23) In the “Actions” menu, drag “Delay → Delay” to within the loop, enter “300” in the “Delay” field and select “Seconds”, for example, and click on the “Apply” button.

24) In the “Actions” menu, drag “Recorder → Capture” to within the loop, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “Refresh” button of the first migration set, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

25) In the “Actions” menu, drag “Delay → Delay” to within the loop, enter “15” in the “Delay” field and select “Seconds”, for example, and click on the “Apply” button.

26) In the “Actions” menu, drag “Recorder → Capture” to within the loop, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the status label of the first migration set, select “Get property” in the “Action” dropdown menu, enter “HTML InnerText” in the “Property name” field, select “ExportStatus – String” in the “Assign the output to variable (optional)” dropdown menu and click on the “Apply” button.

27) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “Settings & Actions” menu button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

28) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “Sign out” link, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

If you are using SSO, you may also want to sign out the gateway.

29) In the “Actions” menu, drag “Window → Close” to within the step, select the “Sign In” window in the “Object detail” dropdown menu and click on the “Apply” button.

30) In the “Actions” menu, drag “Step → Step” to the task list, enter “Import” in the “Title (optional)” field and click on the “Apply” button.

31) In the “Actions” menu, drag “Browser → Launch website” to within the step, enter the Target Sign In Page URL in the “URL” field and click on the “Apply” button.

32) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Sign In” window in the “Object detail” dropdown menu, capture the “User ID” field, select “Set text” in the “Action” dropdown menu, select the “Select a credential” button and click on the “Pick” button. Select “Locker” in the “Locker” dropdown menu, select “TargetCredential” in the “Credential” dropdown menu, select “user” in the “Attribute” dropdown menu and click on the “Confirm” button. Click on the “Apply” button.

33) In the “Actions” menu, drag “Recorder → Capture” to within the step select the “Sign In” window in the “Object detail” dropdown menu, capture the “Password” field, select “Set text” in the “Action” dropdown menu, select the “Select a credential” button and click on the “Pick” button. Select “Locker” in the “Locker” dropdown menu, select “TargetCredential” in the “Credential” dropdown menu, select “password” in the “Attribute” dropdown menu and click on the “Confirm” button. Click on the “Apply” button.

34) In the “Actions” menu, drag “Simulate keystrokes → Simulate keystrokes” to within the step, select the “Migration – Migration” or “Sign In” window in the “Object detail” dropdown menu, enter “[ENTER]” in the “Enter keystrokes here or use the on-screen keyboard” field and click on the “Apply” button.

If you are using SSO, you will have to sign in the gateway instead.

35) In the “Actions” menu, drag “Delay → Delay” to within the step, enter “15” in the “Delay” field and select “Seconds”, for example, and click on the “Apply” button.

36) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Oracle Applications” window in the “Object detail” dropdown menu, capture the “Navigator” menu button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

37) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Oracle Applications” window in the “Object detail” dropdown menu, capture the “Configuration” menu item, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

38) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Oracle Applications” window in the “Object detail” dropdown menu, capture the “Migration” button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

39) In the “Actions” menu, drag “Delay → Delay” to within the step, enter “15” in the “Delay” field and select “Seconds”, for example, and click on the “Apply” button.

40) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Oracle Applications” window in the “Object detail” dropdown menu, capture the “Apply Migration Set” button in the “Incoming” infotile, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

41) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Oracle Applications” window in the “Object detail” dropdown menu, capture the “Import” button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

42) In the “Actions” menu, drag “Recorder → Capture”, select the “Oracle Applications” window in the “Object detail” dropdown menu, capture the “Yes” button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

43) In the “Actions” menu, drag “Loop → Loop” to within the step, select the “While” button, select “String condition” in the “Condition” dropdown menu, enter “$ImportStatus$” in the “Source value (optional)” field, select “Does not include” in the “Operator” dropdown menu, enter “Successfully Imported” in the “Target value (optional)” field, check “Check the condition at the end of the iterator” and click on the “Apply” button.

44) In the “Actions” menu, drag “Delay → Delay” to within the loop, enter “300” in the “Delay” field and select “Seconds”, for example, and click on the “Apply” button.

45) In the “Actions” menu, drag “Recorder → Capture” to within the loop, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “Refresh” button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

46) In the “Actions” menu, drag “Delay → Delay” to within the loop, enter “15” in the “Delay” field and select “Seconds”, for example, and click on the “Apply” button.

47) In the “Actions” menu, drag “Recorder → Capture” to within the loop, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the status label, select “Get property” in the “Action” dropdown menu, enter “HTML InnerText” in the “Property name” field, select “ImportStatus – String” in the “Assign the output to variable (optional)” dropdown menu and click on the “Apply” button.

48) Optionally, in the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Oracle Applications” window in the “Object detail” dropdown menu, capture the “Preview” button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

49) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Oracle Applications” window in the “Object detail” dropdown menu, capture the “Apply” button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

50) In the “Actions” menu, drag “Recorder → Capture”, select the “Oracle Applications” window in the “Object detail” dropdown menu, capture the “Yes” button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

51) In the “Actions” menu, drag “Loop → Loop” to within the step, select the “While” button, select “String condition” in the “Condition” dropdown menu, enter “$ApplyStatus$” in the “Source value (optional)” field, select “Does not include” in the “Operator” dropdown menu, enter “Applied” in the “Target value (optional)” field, check “Check the condition at the end of the iterator” and click on the “Apply” button.

52) In the “Actions” menu, drag “Delay → Delay” to within the loop, enter “300” in the “Delay” field and select “Seconds”, for example, and click on the “Apply” button.

53) In the “Actions” menu, drag “Recorder → Capture” to within the loop, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “Refresh” button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

54) In the “Actions” menu, drag “Delay → Delay” to within the loop, enter “15” in the “Delay” field and select “Seconds”, for example, and click on the “Apply” button.

55) In the “Actions” menu, drag “Recorder → Capture” to within the loop, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the status label, select “Get property” in the “Action” dropdown menu, enter “HTML InnerText” in the “Property name” field, select “ApplyStatus – String” in the “Assign the output to variable (optional)” dropdown menu and click on the “Apply” button.

56) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “Settings & Actions” menu button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

57) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “Sign out” link, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

If you are using SSO, you may also want to sign out the gateway.

58) In the “Actions” menu, drag “Window → Close” to within the step, select the “Migration – Migration” or “Sign In” window in the “Object detail” dropdown menu, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

59) Click on the “Save” button.

60) Click on the “Run” button.

Automatically w/ Jenkins Pipeline & Automation Anywhere Enterprise (AAE) A2019

pipeline {
 agent any

 stages {

   stage('Migrate') {

    steps {
      ...

      httpRequest customHeaders: [ [ name: 'X-Authorization', value: '...' ] ], httpMode: 'POST', requestBody: '{ "fileId": sampleBotId, "runAsUserIds": [ sampleUserId ], "callbackInfo": { "url": "sampleCallbackUrl" } }', url: 'https://host/v3/automations/deploy' // runs the bot in AAE

      input ... // may be submitted by the callback w/ the Jenkins Pipeline REST API
    }

   }

  }

}

You may also use a custom plugin.

Automatically w/ HCM Cloud REST API / Applications Cloud Common REST API

Not supported.

Manually

1) Launch the Source Sign In Page URL, enter the Source User and Source Password in the “User ID” and “Password” fields, respectively, and click on the “Sign In” button.

If you are using SSO, you will need to sign in the gateway instead.

2) Select “Configuration → Migration” in the “Navigator” and click on the “Create Migration Set” button. Click on the “Move All Changes” button.

3) Enter a name in the “Name” field and click on the “Save and Close” button.

4) Click on the “Refresh” button until the status changes to “Ready for Download”.

5) Launch the Target Sign In Page URL, enter the Target User and Target Password in the “User ID” and “Password” fields, respectively, and click on the “Sign In” button.

6) Select “Configuration → Migration” in the “Navigator” menu and click on the “Apply Migration Set” button.

7) Click on the “Import” button. Click on the “Yes” button.

8) Click on the “Refresh” button until the status changes to “Successfully Imported”.

9) Optionally, click on the “Preview” button. Click on the “Apply” button. Click on the “Yes” button.

10) Click on the “Refresh” button until the status changes to “Applied”.

Classic Migration

Automatically w/ Automation Anywhere Enterprise (AAE) A2019

1) In the AAE Control Room, select “Bots → Credentials” in the left menu. In the “My Credentials” tab, click on the “Create credential…” button, enter “SourceCredential” in the “Credential name” field, enter “user” in the “Attribute name” field, select “Input”, enter the Source User in the “Value” field, enter “password” in the “Attribute name” field, select the “Input” button, enter the Source Password in the “Value” field, select “Masked” and click on the “Create credential” button.

2) Click on the “Create credential…” button, enter “TargetCredential” in the “Credential name”, enter “user” in the “Attribute name” field, select the “Input” button, enter the Target User in the “Value” field, enter “password” in the “Attribute name” field, select “Input”, enter the Target Password in the “Value” field, select “Masked” and click on the “Create credential” button.

3) In the “My Lockers” tab, click on the “Create locker…” button, enter “Locker” in the “Locker name” field, check “SourceCredential” and “TargetCredential”, click 4x on the “Next” button, select a role and click on the “Create locker…” button.

4) Select “Bots → My bots” in the left menu, click on the “+ Create new bot” button, enter a name in the “Name” field and click on the “Create & edit” button.

5) In the “Variables” menu, click on the “Create variable…” button, enter “ExportStatus” in the “Name” field and click on the “Create” button.

6) Click on the “Create variable…” button, enter “ImportStatus” in the “Name” field and click on the “Create” button.

7) Click on the “Create variable…” button, enter “ApplyStatus” in the “Name” field and click on the “Create” button.

8) In the “Actions” menu, drag “Step → Step” to the task list, enter “Export” in the “Title (optional)” field and click on the “Apply” button.

9) In the “Actions” menu, drag “Browser → Launch website” to within the step, enter the Source Sign In Page URL in the “URL” field and click on the “Apply” button.

10) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Sign In” window in the “Object detail” dropdown menu, capture the “User ID” field, select “Set text” in the “Action” dropdown menu, select “Select a credential” and click on the “Pick” button. Select “Locker” in the “Locker” dropdown menu, select “SourceCredential” in the “Credential” dropdown menu, select “user” in the “Attribute” dropdown menu and click on the “Confirm” button. Click on the “Apply” button.

11) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Sign In” window in the “Object detail” dropdown menu, capture the “Password” field, select “Set text” in the “Action” dropdown menu, select “Select a credential” and click on the “Pick” button. Select “Locker” in the “Locker” dropdown menu, select “SourceCredential” in the “Credential” dropdown menu, select “password” in the “Attribute” dropdown menu and click on the “Confirm” button. Click on the “Apply” button.

12) In the “Actions” menu, drag “Simulate keystrokes → Simulate keystrokes” to within the step, select the “Sign In” window in the “Object detail” dropdown menu, enter “[ENTER]” in the “Enter keystrokes here or use the on-screen keyboard” field and click on the “Apply” button.

If you are using SSO, you will have to sign in the gateway instead.

13) In the “Actions” menu, drag “Delay → Delay” to within the step, enter “15” in the “Delay” field and select “Seconds”, for example, and click on the “Apply” button.

14) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Oracle Applications” window in the “Object detail” dropdown menu, capture the “Navigator” menu button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

15) In the “Actions” menu, drag “Recorder → Capture” to within the stfep, select the “Oracle Applications” window in the “Object detail” dropdown menu, capture the “Configuration” menu item, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

16) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Oracle Applications” window in the “Object detail” dropdown menu, capture the “Migration” button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

17) In the “Actions” menu, drag “Delay → Delay” to within the step, enter “15” in the “Delay” field and select “Seconds”, for example, and click on the “Apply” button.

18) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Oracle Applications” window in the “Object detail” dropdown menu, capture the “Create Configuration Set” button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

19) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “Name” field, select “Set text” in the “Action” dropdown menu, enter a name in the “Enter keystrokes here or use the on-screen keyboard” field and click on the “Apply” button.

20) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “Save and Close” button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

21) In the “Actions” menu, drag “Loop → Loop” to within the step, select the “While” button, select “String condition” in the “Condition” dropdown menu, enter “$ExportStatus$” in the “Source value (optional)” field, select “Does not include” in the “Operator” dropdown menu, enter “Ready for Download” in the “Target value (optional)” field, check “Check the condition at the end of the iterator” and click on the “Apply” button.

22) In the “Actions” menu, drag “Delay → Delay” to within the loop, enter “300” in the “Delay” field and select “Seconds”, for example, and click on the “Apply” button.

23) In the “Actions” menu, drag “Recorder → Capture” to within the loop, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “Refresh” button of the first configuration set, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

24) In the “Actions” menu, drag “Delay → Delay” to within the loop, enter “15” in the “Delay” field and select “Seconds”, for example, and click on the “Apply” button.

25) In the “Actions” menu, drag “Recorder → Capture” to within the loop, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the status label of the first configuration set, select “Get property” in the “Action” dropdown menu, enter “HTML InnerText” in the “Property name” field, select “ExportStatus – String” in the “Assign the output to variable (optional)” dropdown menu and click on the “Apply” button.

26) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “Settings & Actions” menu button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

27) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “Sign out” link, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

If you are using SSO, you may also want to sign out the gateway.

28) In the “Actions” menu, drag “Recorder → Capture” to the task list, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “Download” button, select “Click” in the “Action” dropdown menu and click on the “Apply” button. Save the Configuration Set File Path.

29) In the “Actions” menu, drag “Delay → Delay” to the task list, enter “300” in the “Delay” field and select “Seconds”, for example, and click on the “Apply” button.

30) In the “Actions” menu, drag “Window → Close” to within the step, select the “Sign In” window in the “Object detail” dropdown menu and click on the “Apply” button.

31) In the “Actions” menu, drag “Step → Step” to the task list, enter “Import” in the “Title (optional)” field and click on the “Apply” button.

32) In the “Actions” menu, drag “Browser → Launch website” to within the step, enter the Target Sign In Page URL in the “URL” field and click on the “Apply” button.

33) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Sign In” window in the “Object detail” dropdown menu, capture the “User ID” field, select “Set text” in the “Action” dropdown menu, select the “Select a credential” button and click on the “Pick” button. Select “Locker” in the “Locker” dropdown menu, select “TargetCredential” in the “Credential” dropdown menu, select “user” in the “Attribute” dropdown menu and click on the “Confirm” button. Click on the “Apply” button.

34) In the “Actions” menu, drag “Recorder → Capture” to within the step select the “Sign In” window in the “Object detail” dropdown menu, capture the “Password” field, select “Set text” in the “Action” dropdown menu, select the “Select a credential” button and click on the “Pick” button. Select “Locker” in the “Locker” dropdown menu, select “TargetCredential” in the “Credential” dropdown menu, select “password” in the “Attribute” dropdown menu and click on the “Confirm” button. Click on the “Apply” button.

35) In the “Actions” menu, drag “Simulate keystrokes → Simulate keystrokes” to within the step, select the “Migration – Migration” or “Sign In” window in the “Object detail” dropdown menu, enter “[ENTER]” in the “Enter keystrokes here or use the on-screen keyboard” field and click on the “Apply” button.

If you are using SSO, you will have to sign in the gateway instead.

36) In the “Actions” menu, drag “Delay → Delay” to within the step, enter “15” in the “Delay” field and select “Seconds”, for example, and click on the “Apply” button.

37) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Oracle Applications” window in the “Object detail” dropdown menu, capture the “Navigator” menu button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

38) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Oracle Applications” window in the “Object detail” dropdown menu, capture the “Configuration” menu item, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

39) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Oracle Applications” window in the “Object detail” dropdown menu, capture the “Migration” button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

40) In the “Actions” menu, drag “Delay → Delay” to within the step, enter “15” in the “Delay” field and select “Seconds”, for example, and click on the “Apply” button.

41) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “Browse” button, select “Click” in the “Action” dropdown menu and click on the “Apply button”.

42) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “File name” button, select “Set text” in the “Action” dropdown menu, enter the Configuration Set File Path in the “Enter keystrokes here or use the on-screen keyboard” field and click on the “Apply” button.

43) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “Open” button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

44) In the “Actions” menu, drag “Loop → Loop” to within the step, select the “While” button, select “String condition” in the “Condition” dropdown menu, enter “$ImportStatus$” in the “Source value (optional)” field, select “Does not include” in the “Operator” dropdown menu, enter “Ready to Apply Configurations” in the “Target value (optional)” field, check “Check the condition at the end of the iterator” and click on the “Apply” button.

45) In the “Actions” menu, drag “Delay → Delay” to within the loop, enter “300” in the “Delay” field and select “Seconds”, for example, and click on the “Apply” button.

46) In the “Actions” menu, drag “Recorder → Capture” to within the loop, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “Refresh” button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

47) In the “Actions” menu, drag “Delay → Delay” to within the loop, enter “15” in the “Delay” field and select “Seconds”, for example, and click on the “Apply” button.

48) In the “Actions” menu, drag “Recorder → Capture” to within the loop, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the status label, select “Get property” in the “Action” dropdown menu, enter “HTML InnerText” in the “Property name” field, select “ImportStatus – String” in the “Assign the output to variable (optional)” dropdown menu and click on the “Apply” button.

49) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Oracle Applications” window in the “Object detail” dropdown menu, capture the “Apply” button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

50) In the “Actions” menu, drag “Recorder → Capture”, select the “Oracle Applications” window in the “Object detail” dropdown menu, capture the “Yes” button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

51) In the “Actions” menu, drag “Loop → Loop” to within the step, select the “While” button, select “String condition” in the “Condition” dropdown menu, enter “$ApplyStatus$” in the “Source value (optional)” field, select “Does not include” in the “Operator” dropdown menu, enter “Applied” in the “Target value (optional)” field, check “Check the condition at the end of the iterator” and click on the “Apply” button.

52) In the “Actions” menu, drag “Delay → Delay” to within the loop, enter “300” in the “Delay” field and select “Seconds”, for example, and click on the “Apply” button.

53) In the “Actions” menu, drag “Recorder → Capture” to within the loop, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “Refresh” button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

54) In the “Actions” menu, drag “Delay → Delay” to within the loop, enter “15” in the “Delay” field and select “Seconds”, for example, and click on the “Apply” button.

55) In the “Actions” menu, drag “Recorder → Capture” to within the loop, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the status label, select “Get property” in the “Action” dropdown menu, enter “HTML InnerText” in the “Property name” field, select “ApplyStatus – String” in the “Assign the output to variable (optional)” dropdown menu and click on the “Apply” button.

56) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “Settings & Actions” menu button, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

57) In the “Actions” menu, drag “Recorder → Capture” to within the step, select the “Migration – Migration” window in the “Object detail” dropdown menu, capture the “Sign out” link, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

If you are using SSO, you may also want to sign out the gateway.

58) In the “Actions” menu, drag “Window → Close” to within the step, select the “Migration – Migration” or “Sign In” window in the “Object detail” dropdown menu, select “Click” in the “Action” dropdown menu and click on the “Apply” button.

59) Click on the “Save” button.

60) Click on the “Run” button.

Automatically w/ Jenkins Pipeline & Automation Anywhere Enterprise (AAE) A2019

pipeline {
 agent any

 stages {

   stage('Migrate') {

    steps {
      ...

      httpRequest customHeaders: [ [ name: 'X-Authorization', value: '...' ] ], httpMode: 'POST', requestBody: '{ "fileId": sampleBotId, "runAsUserIds": [ sampleUserId ], "callbackInfo": { "url": "sampleCallbackUrl" } }', url: 'https://host/v3/automations/deploy' // runs the bot in AEE

      input ... // may be submitted by the callback w/ the Jenkins Pipeline REST API
    }

   }

  }

}

You may also use a custom plugin.

Automatically w/ HCM Cloud REST API / Applications Cloud Common REST API

Not supported.

Manually

1) Launch the Source Sign In Page URL, enter the Source User and Source Password in the “User ID” and “Password” fields, respectively, and click on the “Sign In” button.

If you are using SSO, you will need to sign in the gateway instead.

2) Select “Configuration → Migration” in the “Navigator” menu and click on the “Create Configuration Set” button.

3) Enter a name in the “Name” field and click on the “Save and Close” button.

4) Click on “Refresh” until the status changes to “Ready for Download”.

5) Click on “Download”.

6) Launch the Target Sign In Page URL, enter the Target User and Target Password in the “User ID” and “Password” fields, respectively, and click on the “Sign In” button.

7) Select “Configuration → Migration” in the “Navigator” menu, click on the “Browse” button, select the configuration set file and click on the “Open” button.

8) Click on the “Refresh” button until the status changes to “Ready to Apply Configurations”.

9) Click on the “Apply” button. Click on the “Yes” button.

10) Click on the “Refresh” button until the status changes to “Applied”.

You can find more information here.