Oracle Financials Cloud IntegrationPublished on: Author: Stefan van Glabbeek Category: Oracle
For one of our clients we built a proof of concept for integration with the Oracle Financials Cloud using web services. The client used BizTalk for the integration, but for our proof of concept we used SOAPUI.
One of the requested services was an outbound interface from Oracle to a data warehouse. A report had already been created in OTBI, and the output had to be sent to the data warehouse as a CSV file.
According to the Oracle documentation, the web service erpIntegrationService – operation exportBulkData should be used. With this operation, you can specify the necessary process, which will then run in Oracle as a scheduled process. Within the SOAP message, there is also a tag for a callback service. This tag should include a URL of a callback web service that still needs to be created. In this case, in BizTalk. After the message is fired to Oracle, Oracle will send a message to the callback service when the OTBI process is ready. Now you need to use another operation: getDocumentForDocumentId. This operation allows us to download the output of our OTBI process and send it to the data warehouse.
However, in this setup we need to create a callback web service, which wasn’t the desired option. An alternative was to run the process and send a polling message to request the status of the process to find out when it was ready. We did the following:
- Used submitESSJobRequest to start the OTBI process. The operation answers with the unique request-id.
- Used getESSJobStatus to retrieve the status of the request-id and repeat this until the status is “succeeded”.
- Used downloadExportOutput to get the output of the report. The output file is an attachment to this message.
Import of journal entries
Another request was an inbound interface with journal entries that need to be imported into the general ledger. In this case, we used the web service importBulkData. We could make use of a callback service. Again, we didn’t use the tag and just left it out of our message. In the operation importBulkData you can specify the ZIP file you want to upload, as well as details about the JournalImportLauncher process (the name and directory of this process and the specification of its parameters). The specified file will be uploaded to UCM, the content management server, and then directly imported as journal entries. The zipped file must be in the import format that Oracle expects.
Since we didn’t use the callback service we simply retrieved the status of the import using the operation getESSJobStatus again. In the event of an error, someone would need to check what went wrong in Oracle. In the operation importBulkData, you also need to specify the content within the content-tags. The content is a base64 version of the ZIP file. The whole outcome of this must be put in the message between the content start and end tag. This appears to be an unnecessary amount of data, but Oracle Support has acknowledged that this content has to be entered into the message. Leaving it out generates an error response.
We used a similar method to create an import for invoices in table AP_INVOICE_OPEN_INTERFACE. Some of the message details differ, but the concept is the same.
The last request was a combination of the two. The output of an OTBI report needed to be imported as journal entries. In our POC we ran the OTBI report to retrieve the output CSV file. The OTBI report was created in such a way that the output is already in the format of the journal entry import. Then, when you have the output file, you can import the same file again using the same method for importing journal entries (as described above). You can also import the journal entries one by one, with messaging instead of importing a file. This can be done via the web service JournalImportService.