Quantcast
Channel: iPaaS@ORACLE.CLOUD
Viewing all 872 articles
Browse latest View live

#701 - OIC REST API for Connectivity Agent DR

$
0
0
A simple scenario here -

Customer has 2 data centers - Production and DR.
For argument sake, just imagine he has EBS running in both DCs.
Customer wants connectivity agent HA in both.

Currently OIC Agent Group supports up to 2 connectivity agents,
so I will need 2 groups














As you can see, I have only 1 agent in each group - just to save time.

So now to a simple example - I do not have access to EBS, so my integration
writes a file to this directory on my laptop -













Here is the Integration -

























Here is the connection definition -





















Note the Agent Group setting - CommiskeyAgentGroup

I test via Postman -



















I see the file has been created -











So now disaster strikes - the Production Data Center goes down.
We lose the Agent(s)








We failover to the DR Site.

CommiskeyDRAgentGroup is already running there.

But the connection is still configured to use the CommiskeyAgentGroup.

The following OIC REST API call sorts that out -

/ic/api/integration/v1/connections/AA_FILE

Payload -
{"agentGroupId":"COMMISKEYDRAGENTGROUP"}









Response -















I can validate this in OIC -

























I re-test in Postman - and see the following error message -

{
  ...
    "title" : "oracle.cloud.cpi.agent.transport.aq.CpiAQException: No response received within response time out window of 260 seconds. Agent may not be running, or temporarily facing connectivity issues to Oracle Integration Cloud Service. Please check the health of the Agent in Agent Monitoring page.",

So I need to bounce the integration - this I can also do via the OIC REST API

POST /ic/api/integration/v1/integrations/AA_WRITEFILE|01.00.0000

Request Payload -
{"status":"CONFIGURED"}

Note the id of the Integration - AA_WRITEFILE|01.00.0000 (name|version nr)

Note, I need to add the header -





I can also validate this action in OIC -

Yes, the Integration has been successfully deactivated -


 





I now activate - same request as above, but with the following payload -

{"status":"ACTIVATED"}

Integration has been activated -








Now back to Postman for the WriteFile test -






























# 702 OIC Integration with Netsuite - initial setup and basic troubleshooting

$
0
0


It's always good to try new things,
so here I am checking out OIC integration with Netsuite.


This post covers the following -

1. Creating a new user in Netsuite, giving them login permissions and assigning roles.
2. Activating that user in Netsuite for web services access.
3. Creating a connection to Netsuite in OIC, leveraging the user created.
4. Creating a simple integration to Netsuite - Contact Creation.
5. Troubleshooting - what permissions does my user need to create a contact in Netsuite.

I begin with a discussion of the OIC connection to Netsuite -

Connecting to Netsuite from OIC

For those who like reading Oracle documentation -
OIC Netsuite adapter documentation is here


Pre-requisite is naturally a Netsuite account/user.
Creating a Netsuite user is discussed in the next section.
 
But let's begin by looking at the the connection definition -

WSDL: This I set to
https://webservices.netsuite.com/wsdl/v2018_1_0/netsuite.wsdl

Netsuite provides a handy schema browser for those interested in viewing
all records, fields, lists, enumerations, operations, warnings,
errors, and faults in Netsuite SOAP web services.














Just click here to view.

Now to the Security settings -
























Email Address is essentially your NetSuite login

Account is your company's Netsuite account - an account will be created for you, when you subscribe to Netsuite.

This is surfaced in your Netsuite URL -
https://yourAccount.app.netsuite.com

Role is the Netsuite role you will use when leveraging the Netsuite adapter in OIC.
Think of it, a Netsuite user can have one or more roles assigned to her. Here you specify
which of these roles you want to use when accessing Netsuite via web services.

Password is the user's Netsuite password.

Now a short introduction to roles in Netsuite -

Roles in Netsuite

There are, of course, a plethora of functional roles within Netsuite -

























Roles have a name e.g. Administrator, CEO etc. and an internal Id.
This Id is used as the role value in my OIC connection to Netsuite.
Just to remind you, I set this to 1047.

One can view the internal id in Netsuite - Manage Roles  -











Per default the internal id is not displayed, but I can do so,
by simply adding it to the search results -






















Now the internal id is visible -














Here is my Ecommerce Manager with the internal Id 1047 -


















Roles have Permissions - specifying what one can do in Netsuite -










e.g. the role Ecommerce Manager has Full permissions on Cash Sales,
but only View rights on Adjust Inventory.

Note the permissions are classified into different groups -
The two that interest me now are Transactions and Lists.








Transactions - e.g. doing something - Adjusting the Inventory

Lists - NetSuite provides lists for all of the major record types,
including customers, transactions, opportunities, and events.

Now to creating a new Employee in Netsuite -

Creating a new Employee in Netsuite





I create a new employee - Niall Mac Cumascaigh -
checking the box - GIVE ACCESS



















I assign a couple of roles - including Ecommerce Manager -














The Netsuite API allows for automated communication between connected systems,
e.g. OIC and Netsuite. But this API Access must be enabled.

Go to Setup -


 


Add my new user - You too may want to create a specific Netsuite
user for OIC integration.


OIC Integration with Netsuite


Back in OIC - I test the Netsuite Connection










Looks good!


I now create a simple integration that will create a Contact in Netsuite -


























I test this via Postman - and see the following error -










Looks like my user - Niall Mac Cumascaigh with the role Ecommerce Manager
doesn't have permissions to create a Contact.

I check in Netsuite - Setup - Users/Roles - Manage Roles














As you can see, only view rights on Contact have been specified.

I now change this.





Ok, so back to my favourite tool - Postman - I re-run the test to create a
Contact in Netsuite.

























The result is the ID from Netsuite.

Now, I check in Netsuite -


























Mapping for Creating a Contact in Netsuite

Finally, let's look at the mapping in OIC for the new contact.
I am no Netsuite expert, so I began by creating a contact in the Netsuite UI,
to work out which fields are mandatory - Name and Subsidiary.

Subsidiary is the division of my company to which this contact belongs.















firstName, lastName and email come from my REST Request Payload.
I have hardcoded the internalId (=1)of the Subsidiary with the id of Honeycomb Mfg.

Where did I find this value?
Setup - Company - Subsidiaries - Search




























Add Internal ID to the Search Results -



































Grand - as we say in Ireland!






#703 Netsuite Integration & Extensibility

$
0
0
Text in bold/italics is taken from the Oracle docs.

Leading on from the previous post,
Netsuite provides it's own integration/extensibility components.

This post is a basic introduction to them - again,
I am not a Netsuite expert and essentially what follows are notes for my own consumption.

So what does Netsuite offer us in terms of integration/extensibility?

Netsuite Integration

SuiteTalk - essentially the SOAP Services leveraged by the OIC adapter.

You can find the documentation in the Netsuite HELP CENTER -




















Netsuite Extensibility

Here we have various components -

  • SuiteBuilder
  • SuiteFlow
  • SuiteScript


SuiteBuilderencompasses all the point and click customisation that is available through the UI. It allows customisation and personalisation of your NetSuite application without requiring you to write any code.

SuiteBuilder Features

Dashboard Personalisation -
Now every user gets their very own software. From key performance indicators to performance snapshots, trend graphs, job reminders, and report and transaction shortcuts, each person in your company gets the tools they need for highest productivity.

Company and Process Configuration -
SuiteBuilder lets you set up NetSuite to your company and industry requirements.

Customise Data Relationships and User Interface -
Fundamentally alter NetSuite's Web-native, on-demand products with the addition of database tables via Custom Records. Custom Records can stand-alone or easily tie in with standard objects such as customers or items in data relationships ranging from one-to-one, one-to-many, to many-to-many.

SuiteBuilder tools include:
  • Color Themes
  • Record Re-naming
  • Custom Roles
  • Custom lists
  • Custom Fields
  • Custom Forms
  • Custom Sub-tabs
  • Custom Records/Objects
  • Custom Tabs
  • Custom Centers

Visit HELP CENTER for the full documentation -

















SuiteFlow-

Use SuiteFlow to create and execute workflows in NetSuite. A workflow is the definition of a custom business process for a standard or custom record in NetSuite. Business processes can include transaction approval, lead nurturing, and record management. A workflow defines and automates the business process.

Again, full docs in the HELP CENTER.


SuiteScript -

SuiteScript is a JavaScript-based API that gives developers the ability to extend NetSuite beyond the capabilities provided through SuiteBuilder point-and-click customization.

The majority of NetSuite forms, records, customization objects and their event/trigger points are programmatically accessible through SuiteScript. What you decide to do with SuiteScript depends on which part of NetSuite you are trying to extend, search, or process.

SuiteScript supports the concept of Restlets -

You can deploy server-side scripts that interact with NetSuite data following RESTful principles. RESTlets extend the SuiteScript API to allow custom integrations with NetSuite. Some benefits of using RESTlets include the ability to:


  • Find opportunities to enhance usability and performance, by implementing a RESTful integration that is more lightweight and flexible than SOAP-based web services.
  • Support stateless communication between client and server.
  • Control client and server implementation.
  • Use built-in authentication based on token or user credentials in the HTTP header.
  • Develop mobile clients on platforms such as iPhone and Android.
  • Integrate external Web-based applications such as Gmail or Google Apps.

#704 OIC - Netsuite Integration - using search

$
0
0
A simple use case here - Create a Contact for a specific Customer in Netsuite

Request payload to OIC is as follows -







So I will need to do a search in Netsuite for the Customer internalId.

Search is available thru the Netsuite adapter -





One can leverage operators in the search query e.g.
Company name = Commiskey Clan

The valid operators are -
























Now to a simple example - Create a Contact for a specific Customer -


























Here is the mapping for the Search Request - GetCustomerId









The response payload from GetCustomerId is as follows -













Here is my OIC REST request -

























I validate in Netsuite -






















#705 Syncing Customers/Contacts from your CRM to Netsuite

$
0
0


Building on from previous posts -
Here I will sync Sales Cloud customer/contacts with Netsuite.

Essentially I will subscribe to the New Contact Event in Sales Cloud.

Here is an excerpt from the payload I receive in OIC -














AccountPartyId is the internal Sales Cloud Id for the Sales Account(Customer) -
MacCumascaigh Clan.

FirstName/LastName refer to the Contact.

First step will be to check whether the Customer already exists in Netsuite.
I do that leveraging the Search supported by the OIC Netsuite adapter,
the workings of which is detailed here

If the customer already exists - I store the internalId from Netsuite in a process variable, I defined previously (Assign).

If not, I invoke the Sales Cloud adapter - SalesAccount (GET) using the
AccountPartyId as key.















































I then create a new Customer in Netsuite, using the data returned from Sales Cloud.






















For this simple example, I just use the OrganizationName.



I then store the internal id of the newly created Customer in the process variable mentioned above.

Finally, for both of the above cases, I create the new contact in Netsuite.






















Very simple and easy to implement.

Sales Cloud Specifics

OIC Sales Cloud Connection - need to specify the EVENT URL -















Don't forget to register your OIC instance with Sales Cloud

https://yourSalesCloud/soa/composer























csf-key is the concatenation of your OIC Identity Domain and your OIC Service Instance.
You can see this in the OIC About Box -












OIC Switch condition




Ok, now to testing -

I create a new Sales Account and contact in Sales Cloud.













I add a new contact -






















Go to Monitoring in OIC -














Check out the audit trail -

























Validate in Netsuite -


#706 OIC Taleo EE / OTAC adapter - Importing Candidates

$
0
0
















Welcome to the world of Taleo EE now known as OTAC -

OTAC = Oracle Talent Acquisition Cloud

Introduction

Today a simple example of leveraging the new Taleo EE adapter in OIC.
This leads on from the previous post on this topic - you can read it here

I am going to import the following candidates into Taleo,
nothing like keeping it in the family.

The input .csv file has a particular format -



That equates nicely to the Taleo candidate format.

This format can be generated from TCC as mentioned in the previous post.
I have such an example here -


























So, just to re-iterate, the adapter documentation specifies TCC as pre-requisite. This is purely to generate the input data formats. TCC connects to Taleo or OTAC and generates the appropriate formats from my Taleo instance. Ergo, TCC is required only at design time and NOT at runtime.

Ok, so now I have the input file with my 2 new candidates -
I also have the candidate definition for Taleo, so now off I go to OIC.

Creating the Taleo Integration in OIC

My simple integration will do the following -
1. download the file from my ftp server via the FTP Adapter
2. read the file using the STAGE FILE Action 
3. Leverage the Taleo EE adapter to import the candidates into Taleo
4. Receive back a MessageKey from Taleo

This key can then be used to query the status of the import.

Here is my Taleo adapter configuration -


























Here is my Integration -
























I will skip the download/read actions and go straight to the Taleo Import -




























Note the use of the file we generated in TCC - this contains the candidate definition.

Now to the Mapping -

























Now let's run it...

























I check out the Activity Stream -









Note the MessageKey returned by Taleo.

Let's check out our new candidates in Taleo -




































Now back to the MessageKey, returned by Taleo.

This can be used to check on the Import Status.
Note the use of a loop here - I check until the Status = 5, i.e. import completed.






















Note the invoke of the Taleo Adapter - getImportStatus

It is configured as follows -



























The Request Mapping is as follows -









Note: I have assigned the MessageKey returned to a variable.

I then update the status with the response from getImportStatus -




























Note the CorrelationKey - this will be used to retrieve the importResult (itself a file) later.

Ok, now the import has completed - let's get the result -






































getImportResult is configured as follows -






















Request mapping as follows -










I save the result to a file on the OIC virtual file system using the STAGE FILE Action -
WriteFile.
















Note the use of a function - oraext:encodeReferenceToBase64

The Write file has been configured to use an xsd -




















The xsd is very simple -







Final step is to Write the file to my FTP Server -












The result of a test -















It is very important to check the file - it may seem in OIC that all has completed successfully -
however, all that it is tell us is that the import has been started and then completed. The result, whether it was successful or not is in this file.

Here is an example, containing errors -




#707 Oracle Process Cloud - linking to a process instance

$
0
0
Use case here - Customer wants a process creator to be notified when a process has completed.
In this case, an email containing a link to the process history in Workspace.















The link should bring me here -
























The link has the following format -
(thanks to my esteemed colleagues Eduardo and Sudhakar for this)

https://yourOIC/ic/process/workspace/faces/jsf/instance/pcsAuditTrailPage.jspx?instanceId=yourProcessInstanceID

I try this out with the my instance id -




















Now to my process - not the most complex of processes, I'm sure you will agree.















I add a Notification activity before Completed















and also a Data Association -

















The variables are then used to construct the email.











#708 OIC Taleo EE (OTAC) - Create Requisition

$
0
0
























As you can see, I am looking to hire a philosopher.
The above "Requisition" was created via the Taleo UI.

But how could I leverage OIC to do the same?

My first port of call was TCC -

As per the previous post - I need a wrapsoap file describing the Requisition.

Now I am just kicking the tyres - I have no sample input csv file, I don't know what a
Requisition looks like; so where do I start?

Taleo Connect Client







































Note the pre-selected columns, these come from the template.




















I save the import file -






















Once saved, I can generate a .csv file -




















You may need to set the path to Excel first -










I rename and amend the file as follows -







Now to the Configuration File -



























I specify my sample csv -
























Save the Configuration file and then run -






































Note that I do not have a link under Wrap SOAP.

Back to the Configuration Definition -

Set the Temporary files folder -














Save and re-execute

Links to the files are now available -

























Click on the Wrap Soap link and save the file -

























Oracle Integration Cloud


Extrapolate from post #705 to create the OIC integration.
Click here




#709 OIC: Process --> Leveraging Machine Learning

$
0
0














Check out the great Machine Learning demo
from my colleague Chris P. here

#710 Oracle HCM from an integration perspective

$
0
0


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.



#711 Oracle Integration Cloud 19.2.3 Release - New Features

$
0
0
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.



















#712 Migrating ICS to OIC

$
0
0
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.

#713 OIC - First Steps with the ATP adapter

$
0
0
ATP = Autonomous Transaction Processing from Oracle.

Oracle Autonomous Transaction Processing delivers a self-driving, self-securing, self-repairing database service that can instantly scale to meet demands of mission critical applications.

More details about ATP here

First step was to get access to an ATP service.
I then connected to this via SQLDeveloper - here I created a new table -












Note, I have entered a test row.

There is a concise, yet detailed post on connecting SQLDeveloper to ATP here

Next step is to create the connection to ATP in OIC -































Note the use of the Cloud wallet for security.

I then leverage this connection in an Integration -


















I then activate and test -
















Validate via SQL Developer -









ATP - Self Driving, Self Repairing, Self Securing at a compelling price -




#714 OIC & Autonomous Transaction Processing CS (ATP) - A Compelling Combination

$
0
0
Leading on from the previous post -

We now have the ATP adapter in OIC integration, how can we leverage this from the other OIC components?

ATP as the Business DB for Process Automation

Process comes with its own Archive and Purge Functionality

















You could, conceivably, use this for compliance purposes. But there are some pre-requisites/caveats -

1. You need Storage Cloud Services














2. You will need to consider the format/level of detail of what is archived.

So one should consider using an external DB for this purpose.
Benefits include -
1. Full control of what data is stored.
2. Full access to that data, in a format that you have decided upon.
3. All of the benefits of ATP - highlighted in the previous post.

So it is very easy to add a call to the integration, created in the previous post.
That integration updated an Order Approvals table in ATP.




















Note the StoreCompliancyData activity above. This called the aforementioned integration.





Now to a test - I enter an order and approve it



 





and above you see the salient data in ATP.

ATP as the Business DB for Visual Builder Apps

Similar modus operandi here - leverage the Integration in VB CS


Here is a simple example - check out the Order Business Object I have
defined in in Visual Builder 























I have created the following simple flow -
Browse Orders - Create Orders - Approve Orders























Let's use the ATP Integration for the "Approve" functionality -
I can add a connection to the aforementioned very easily -

This I do via Visual Builder Service Connections






















































I select the appropriate integration -










































I can easily add a service call to the following page  - via Events





































So what's the value add of ATP here?

1. VB CS has its own persistence layer. Business Objects are persisted,
but can only be accessed via the Business Object REST APIs.

2. The VB CS persistence layer has a fixed size. You cannot change this.

ATP addresses both of the above.



#715 Visual Builder SaaS Look & Feel

$
0
0
I just noticed this today, while playing around with OIC.

Here I create a new VB application -



























I define my usual Orders Business Object -


























I then add it to a page and run the app -


















Nice!

So what about customising this?










Instead of Flow2 and Flow3, I want HR and Finance.




















root pages - shell









I re-run the app -













Clicking on HR will activate Flow 2 - so I need to amend that flow as well -










I then test -
















The only thing that's bugging me now is the My Application title.

I need to amend the root pages - shell again -
























Visual Builder - very intuitive, rich functionality.




#716 OIC Process Forms & Rules - some Q&A

$
0
0
Question I often get now that we have Visual Builder as part of the OIC toolkit -

VB has OOTB integration with Process -


















So why do we need web forms in Process?


Simple answer -

There are different use cases that each can address -
We have customers that are using our external UI capabilities for external Users -
for this area, they have their own UI team.
Process webForms are then used for the backOffice facing applications.


Can I use Decisions (Rules) outside of Process?































Yes, you can - via the Services panel above -









































I copy the URL and test via Postman - I want the discount for an iBike -



















Great stuff!




# 717 OIC Process - Decision Tables or, as we say in Ireland, Táblaí Rialacha!

$
0
0
I have only touched on this feature superficially in previous posts - now to some more detail!

Again, all quotes lifted from the docs are in italics.

Decisions is a very powerful feature in OIC.
Rules can be created within OIC Process applications, and are easily leveraged within your processes,
via the Decision Activity.

























Not only that, Decisions can operate standalone; you can expose your Decision Model as a REST service to the outside world. Ergo, you can leverage rules from OIC Integrations, Visual Builder or any REST aware 3rd party app.

So let's begin...




















Again - the business value add -
Decision Models allow you to automate the decision logic inherent in your business processes.

These models adhere to the DMN standard 1.1.and are FEEL aware - Friendly Enough Expression Language.This makes it easier for you to define your rules.

So now to some simple examples - as you can see Decisions can be of different types.
















Before I start with the ubiquitous Decision Table, how about looking at what else is on offer?

Expressions


Expressions - here's where you can use FEEL to create logic that evaluates to a single value.

You can check out the FEEL documentation here





















Here's an example - checking someone's age -
Note: I have defined age(Number) as input data.








































I can now test this simple expression -





















I now test with 17 -























IF THEN - ELSE
























self explanatory!

Decision Tables

Here I leverage a decision table to compute discount levels.
Discount is based on number of products ordered and total order price.





































I have created 2 input items (see on the left)
- countOfOrderItems
- price

See above how I can leverage these in the DT.

I can easily add an extra column for price.








I can then build out the conditions -







Easy to add more rows -











The finished DT -


I can then test this -


























Now I expose this as a Service -




















































I then drag and drop the following -




















I click on the Payload menu option -




















I see the Endpoint etc. -













Test in Postman -











The Response -


Leverage from a Process

first activate -



























I create a BusinessObject (Order) and a WebForm -


I now leverage the Decision Model -


















Next step is to create the Process -
I use the following template -




































I amend as follows -




















Automatically set -















I complete the data associations for Input/Output












Note: I specified Number as the return type when defining the decision table.
This results in a double being returned by the Decisions Engine.


Activate and Test the process -























I then log in to Workspace as the Approver and see the discount -


























Now let's play around with the DT configuration -
















The Decision Table Hit Policy


F(First) 
The First hit policy is used when multiple rules can match the input.
The first hit by rule order is returned.
Note: this makes one totally dependent on the order of the rules - so one needs to be sure
one designs accordingly.



















I have added a new rule (line 5).

I then update the definition in my process -


























The 16% rule is still applied, because I selected "F".


























C+
The Collect with sum hit policy is used when multiple rules can match the input, and the sum of the output values for all the matching rules is desired
















Testing...


























As you can see, the discount applied is 41% (25 + 16).

C>
The Collect with max hit policy is used when multiple rules can match the input, and the largest output value for all matching rules is desired

I apply this and re-test with the same payload -

























Well 25 is larger than 16.

The other Hit Policies are -

A(ny)

Here n+ rules can fire. However, all of these rules must deliver the same output.
If multiple rules are fired generating different results, then hit policy is violated.

A simple example, I change the Hit Policy to A -














It highlights rules 4 and 5 as being conflicting -






I now change the output of rule 4 to 25 -

No more error/warning message -

















C>
The Collect with min hit policy is used when multiple rules can match the input, and the smallest output value for all matching rules is desired.

Simple example -











I test with an order for 12 items and a total price of 1234.
This satisfies rules 4 and 5.

The lower value is returned -












C#
The Collect with count hit policy is used when multiple rules can match the input, and the count of the matching rules is desired.
Again a simple example with the same payload as previously used. Remember, 2 rules will be satisfied.












Complex Types in Decision Tables


You can also leverage complex types in Decision Tables -


























This type definition can then be leveraged, when defining input data -




















which can be then used in the DT -














And finally...
You can add Annotations to your DT -




#718 OIC Process - Decisions - Contexts and other features

$
0
0
Leading on from the previous post -

There are a couple of more goodies in the Decisions pack.

Contexts

A context is a collection of one or more key-value pairs with an optional result field. Each pair is called a context entry. The key attribute within a context entry acts as an identifier to its corresponding value attribute. You can use a context to collectively document all decision logic related to a particular scenario or entity. Say you need to determine the loan eligibility of an applicant, based on the applicant’s net monthly income and expense. For this purpose, you can create a decision named Loan Eligibility using the Context notation and add expressions or
logic for gross monthly income, monthly expense, and net monthly income. Then, you can either add a result field (within the context) that evaluates the net income and expense for loan eligibility, or you can choose to evaluate these within another decision.

Ok, so let's try this out -



I can now test this -

first with a small order...










then with a large order...










Very succinct and easy to use.

Contexts can be referenced from Decision Tables -























Lists

A list notation is a vertical list of elements, where each element is an independent logical
notation. The output of a list notation contains outputs of all its elements. You can
also invoke the output of a particular list element from another decision.


Now did you understand the above?
Let's make it a bit more tangible.


Relations















Think of a DB table e.g. Products relation


























So now to a simple test - using the Decision table from the previous post -


















Line 6 makes no functional sense, but demonstrates how one can leverage
relations in a DT.

I will enter an order for 123 items with a total value of 12000.
As this has a hit policy of C+ we should get a final discount based on the
values for the 3 rules which will fire (Rules 4,5,6) so that is
16+25 + price of the iBike, 1300 = 1341

Test -



 
























#719 OIC - Salesforce Adapter - Querying data

$
0
0


Pre-requisites


OIC leverages the SFDC enterprise wsdl to connect to SFDC.
First step is to login to SFDC and download the aforementioned -









































Save this file locally.

Create the SFDC Connection in OIC















I then add the user/password - that's it.


Now to a simple example...

Leveraging the SFDC Connection in OIC to Query Data


Here is a simple example where I query SFDC Leads.




















Let's look at the options here -

Query -






















Query is based on Salesforce Object Query Language (SOQL)

Retrieve is based on object ID

Search -









Search leverages Salesforce Object  Search Language (SOSL)

SOQL

For those new to it - akin to ROQL from Service Cloud.

Here is a simple example - first to my Lead in SFDC














Now to query Jimmy via the OIC SFDC adapter -





















For those new to SOQL, note the query reference link -













Now to add a couple of more fields to the query -
A complete LEAD field list is available here







































Retrieve

Now that I have Jimmy's Id I can leverage it to retrieve his data -














Simple stuff!

Search / SOSL

Note: 2 rows returned.

...
         The Hare of the Dog Pub
         jimmy@hotd.ie
         Jimmy Keenahan
         ...  
         Delphi Chemicals
         tom.james@delphi.chemicals.com
         Tom James
         Working - Contacted

Well Jim is short for James.

SOSL docs can be found here 




#720 OIC - Salesforce Adapter - Updating Data

$
0
0

Updating a lead in SFDC























Very simple example here - I update my Lead Jimmy's email address.








Here is my orchestration logic -










I used SOQL, as discussed in the previous post, to check whether the lead already exists.











If so, I update accordingly -









I test with the following payload -










I validate in SFDC









Viewing all 872 articles
Browse latest View live