Wednesday, June 26, 2019

#712 Migrating ICS to OIC

First question -

Why migrate?

How about the following 3 compelling reasons -

1. OIC is your Swiss Army knife, when it comes to integration.
It contains not only integration, but also Process and Visual Builder.
So now you can also extend your apps and create net new apps on top of your SaaS apis.

2. New Features in OIC - new adapters (e.g. UI Path, Automation Anywhere etc.)
New JET based mapper - the list is exhaustive.

3. It will probably be cheaper.

So now to a simple example of moving your integrations from ICS to OIC.
Essentially what we do it export the repository of your integration artefacts from ICS to OIC.

Here is my ICS real estate -













btw. the relevant Oracle Migration documentation is here

and I strongly suggest you look at it.

We will essentially follow what the docs detail -

1. Create a Storage Cloud Bucket to hold the ICS artefacts
2. Export ICS artefacts to the Bucket
3. Import the artefacts into OIC from the Bucket

Create a Storage Cloud Bucket




Click Object Storage and go ahead and create a new Bucket -

























Edit Visibility to make it public -
















REST APIs for Migrating 

These are the apis discussed in the docs.

1. Export Repository /icsapsi/v2/clonepod/exportArtifacts
curl -k -v -H "Content-Type: application/json" -X POST -d '
{"storageInfo":{"storageUrl":" https://swiftobjectstorage.us-region-1.oraclecloud.com/v1/
paasdevoic/cloneRepo","storageUser":"myemail@company.com",
"storagePassword":"generated_token"}}' -u admin:password
https://host/icsapis/v2/clonepod/exportArtifacts
Please note: Export Repository exports everything.

2. Check the export status - /icsapis/v2/clonepod/exportStatus
curl -k -v  -X GET -u admin:password https://host/icsapis/v2/clonepod/exportStatus

3. Import to OIC - /ic/api/common/v1/importServiceInstanceArchive

curl -k -v -H "Content-Type: application/json" -X POST -d '{"archiveFile": 
"archive_Local_Suite_Instance-67e7358b-077b-420f-9e04-e9b9e8374b68.zip", 
"importActivateMode": "ImportOnly", "storageInfo": { "storageUrl":"https://
swiftobjectstorage.us-region-1.oraclecloud.com/v1/paasdevoic/cloneRepo","storageUser"
:"myemail@company.com", "storagePassword":"generated_token"}}' -u admin:password
https://host/ic/api/common/v1/importServiceInstanceArchive

Note the ability when importing to specify -

  • ImportOnly: Imports, but does not activate, integrations.
  • ActivateOnly: Activates previously imported integrations. This enables you to update connection parameters before activating integrations.
  • ImportActivate: Imports and activates integrations.

Now to my favourite tool - Postman - 
Essentially I execute the 4 operations discussed in the docs -
1. export
2. check export status
3. import
4. check import status

For the export - the payload is as follows -

{
"storageInfo": {
"storageUrl": "https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/yourTenancy/bucket-clone-ICS-NiallC",
"storageUser": "yourStorageUser",
"storagePassword": "yourStorageUserAuthKey"
}
}

All self-explanatory.

For the User Auth Key - you can retrieve this as follows -

Identity > Users > User Details > Auth Tokens > Generate Token

swiftobjectstorage.us-ashburn-1.oraclecloud.com is standard for the Ashburn datacenter.

Again, the REST API used -
https://yourICSPod/icsapis/v2/clonepod/exportArtifacts


The RESPONSE -

{
    "archiveFilename": "archive_Local_Suite_Instance-bc5c5fae-8ef4-4925-ab1d-44f5d10efb5b.zip",
    "jobID": "bc5c5fae-8ef4-4925-ab1d-44f5d10efb5b",
    "location": "https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/yourTenancy/bucket-clone-ICS-NiallC",
    "status": "Starting"

}

The REST api to check on export progress is as follows
https://yourICSPod/icsapis/v2/clonepod/exportStatus

This call does not have any parameters - so you get the result of the last export. i.e. you cannot check based on job id.


I can then look at the Bucket contents -

















Import to OIC 

https://yourOICEnv/ic/api/common/v1/importServiceInstanceArchive


Request -

{ "archiveFile": "yourArchive.zip", "importActivateMode": "ImportOnly", "storageInfo": { "storageUrl":"https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/yourOCITenancy/bucket-clone-ICS-NiallC", "storageUser":"storageuser", "storagePassword":"yourAuthKey"
}
}

Validate in OIC 


10 Integrations have been imported -




















Note: This exp/imp includes the connection security info -











Great stuff!

There are some minor deltas between ICS an OIC

1. ICS supports TLS 1.1 and TLS 1.2 for both invoke and trigger
OIC supports only TLS 1.2 as a trigger
Workaround: Client calling ICS/OIC should use JDK 1.7+ for TLS 1.2 support

2. ICS REST APIS - icsapis/v2/
OIC REST APIS - /ic/api/integration/v1/
Clients e.g. CI/CD scripts need to be amended accordingly.

Before we go... 


Naturally there is more to such a migration -

1. Certificates
2. Client endpoints need to be changed
3. CI/CD scripts will have to be updated
4. Are there any other IaaS or PaaS services that need to be migrated?
5. Also planning, side by side Migration etc.

Thanks to my colleague Harris Q. here for his input.

Thursday, June 13, 2019

#711 Oracle Integration Cloud 19.2.3 Release - New Features

The official doc describing the new features etc. is here

Some things that caught my eye -

Integration Improvements

Inline Activity Stream with timestamps -






















New Automation Anywhere adapter -
















Automation Anywhere provide a 30 day free trial -













Just click here

Ability to edit a Schedule from the Integration design page -















Note the 3rd icon above - clicking on this will bring you to the schedule edit page.



















Monday, June 3, 2019

#710 Oracle HCM from an integration perspective



Before one jumps into integrating with HCM, I suggest spending some time looking at HCM more holistically. What are the ways in and out of HCM, and which of these relevant to OIC.

A big thanks to my appsTech colleagues, Nev and Leon, here.

Spreadsheet Loader

This functionality is aimed at the HR professional and can be used for tasks such as loading new departments, job codes etc. The data is loaded into the HCM Data Loader stage tables. From there they are loaded into the application tables.






















As you can see, it leverages HCM Data Loader under the hood.
Here is a succinct description of the spreadsheet loader from my HCM colleagues -

Spreadsheet Loader is designed to be used by non-technical end users who wish to upload data from their desktops. That data could be reference model or even transactional and given the capabilities of Excel, data sets could be quite large.
The individual fields within the spreadsheet and pre-programmed defaults are designed by a technical person who creates a Spreadsheet Loader Template.
The process required to create the Template requires a fairly deep understanding of the data model and how fields will be used and presented in the application, therefore creating the Templates is a technical task.

There are many business processes which require data to be corrected in bulk and Spreadsheet Loader is a great way for the business to this without too much technical help.

The docs are available here


Not relevant to OIC.

Data Loaders - HCM Data Loader

HCM Data Loader is a powerful tool for bulk-loading and maintaining data. The data can be from any source. You can use HCM Data Loader for data migration, ongoing maintenance of HCM data, and coexistence scenarios, where core HR data is uploaded regularly. 

You can load data from either delimited data (.dat) files or spreadsheets. You can load most supported business objects using either method. You can generate business-object templates to use as the basis of your own .dat files. For a selected business-object component, the template includes every attribute, including those for configured flexfields. When using spreadsheets, you define spreadsheet templates to suit business needs and generate spreadsheets from those templates.






















Data Loader files are known as HDL files (HCM Data Loader).






























Above, you see an example of a zip file containing HDL files. The main file is Worker.dat, but as you can well imagine, the other files are referenced by it - e.g. Job, Location etc. The loader is pretty intelligent. When importing a worker, you need a valid job id. This job id could be in Job.dat, the loader will validate as necessary.

You can initiate HCM Data Loader using a web-service call, 
which enables you to automate data upload. This is used by the OIC HCM adapter.



Data Extracts - HCM Data Extract

The HCM Extracts feature is a flexible tool for generating data files and reports.
An extract definition refers to the complete setup of an extract, that consists of extract data groups, criteria, records, attributes, advanced conditions and output delivery options. An extract definition consists of:

One or more extract data groups, depending on how many logical entities you want to extract.
(Data extract group - business area or logical entity e.g. benefits, employee.)

One or more extract records depending on how many groups of information you want to collect.
(e.g. Employee data group can have records such as Basic Details, Pay Details, Location Details, and Primary Contact)
One or more attributes depending on how many individual fields of data you want to collect.

You use HCM extracts to extract, archive, transform, report, and deliver high volumes of HCM data from the Oracle Fusion HCM database. You can generate the output in the following formats:

CSV, XML, Excel, HTML, RTF, PDF.

You can distribute the extracted information by email, fax and other delivery modes. Some common examples of extracts are: PDF payslips delivered to employees' mailboxes, payroll or benefits data transferred to third-party service providers, HR and talent data exchange between Oracle Fusion and legacy applications, for example in a coexistence scenario.

Check out the docs here for more information.

Supported by the HCM adapter in OIC.


SOAP API - 

2 broad groups of SOAP APIs are available -

1. Business Object Services: Services that expose data and operations on a business object such as an opportunity or a marketing campaign. These services are implemented using the Application Development Framework (ADF). Therefore, the services share interface structure, common types, and standard create, read, update, and delete (CRUD) operations.

2. Process Services: Services that orchestrate business processes and not centered around any particular business object. These services are typically implemented using Service-Oriented Architecture (SOA) composites.

Programmatically Initiate HCM Extract or HDL

Data Loader – Bulk Load automation 
Extracts Action –Extracts Automation 
Flow Action-Extracts Automation 

SOAP Services are defined via the following ServiceCatalog WSDL -















This wsdl is used by OIC and is part of the OIC HCM adapter configuration.

REST API - Oracle HCM Synchronous API


















So to a simple example -













We can use the REST api to update an employee's email address.


























This change can be "pushed" to Oracle Integration (Customer Orchestration Layer)
via Atom Feeds and then disseminated to other 3rd party systems.

REST API is supported by the OIC HCM adapter.














Atom Events

Atom feeds enable you to keep track of any changes made to feed-enabled resources in Oracle HCM Cloud.
So what are these resources?






































Check out the full docs here

Atom Feeds are supported by the OIC HCM adapter.



Deep Linking - initiate actions in HCM Cloud from external apps

Deep links provide easy navigation directly to a page in the HCM Cloud application. Many deep links are now available for new mobile responsive pages that can be embedded in your intranet, a custom or third-party application, or in a document so employees can quickly access their HCM information or initiate transactions in HCM Cloud.


























So essentially, Oracle HCM supports certain URLs that provide a direct access to specific actions within product. For example, users can click on a hyperlink in an email, portal or other environments outside HCM, allowing them to navigate directly to a screen in the application.
If single sign-on (SSO) is used, users are directed directly where the URL points to, without having to go through the User Sign In page. If SSO is not used, users are first prompted to enter their credentials in the User Sign In page before being able to access the page defined by the URL.

For example, the following URL directs users to their profile page
https://host:port/fndSetup/faces/deeplink?objType=VIEW_MY_DETAILS

Naturally - deep links are not supported by OIC integrations.