Latest E-Business Suite Cloud Manager 20.2.1.1

Latest E-Business Suite Cloud Manager 20.2.1.1

Johannes Michler PROMATIS Horus Oracle


Senior Vice President – Head of Platforms & Development

Oracle released a new release of the E-Business Suite last week (on April 23, to be more exact). While so far there are no official announcements in the Oracle Blog, the My Oracle Support Note describing Cloud manager (2517025.1) gives an overview of the new features – so let’s have a closer (first) look at the new release.

Support for automatic time zone setting

In the past every E-Business Suite instance provisioned through Cloud Manager was set up with an “UTC” timezone. For many customers, this did not work well obviously. So far the workaround we used with our customers was to manually run the following command:

timedatectl set-timezone Europe/Berlin on every newly provisioned (e.g restored from a backup) instance. With the latest release this is no longer necessary: The “backup utility” saves the timezone set up in the source system and then during restore, this timezone is automatically preserved:

Support for Environment Rediscovery after 12.2 upgrades

The second new feature is even more important. When previously performing an upgrade from E-Business Suite 12.1.3 to the latest 12.2.10 version the Cloud Manager kind of “lost track” of the E-Business Suite instance it is managing: The tool is still under the impression, that it is managing a 12.1.3 version of E-Business Suite residing in different directories. When then trying to e.g. “scale out” (add a second node) or create a backup or clone of the instance, the operation was failing with all kinds of errors.

This is now fixed with the 20.2.1.1 release of Cloud Manager and it is now possible to rediscover the environment after an upgrade.

In the past we had worked around this by performing a manual backup with the “lift and shift” utility and then restoring it as a new environment. This workaround though has a significant drawback by adding appx. 6-8 hours (depending on the size of the environment) to the downtime needed for the upgrade from 12.1.3 to 12.2.

Summary

Besides the new major features as usual a bunch of smaller bugs have been fixed. And more important: At least for the two customers where we have already given the release a try no new regressions came up and basic backup/restore or cloning operations are still working as expected without any problems.

Latest E-Business Suite Cloud Manager 20.2.1.1

Get away with that paper using SOA Suite and E-Post/Docuguide

Johannes Michler PROMATIS Horus Oracle


Senior Vice President – Head of Platforms & Development

A customer recently told me they would like to get away from having to print, envelope and post mark thousands of invoices manually every month. Even though we have changed their invoicing process to an electronic one for most of their customers years ago by sending out emails through Oracle SOA Suite, they still had a considerable amount of customers insisting on printed invoices delivered by post.

Let’s have a look at how we managed to get away with that paper.

Starting Point

The customer was producing his invoices using the Oracle ERP System Oracle E-Business Suite (EBS) running on OCI. For electronic invoices, EBS has for a long time passed on the invoice and eventually some more additional attachments further detailing the invoices to Oracle SOA Suite 12.2.1.4. Then an integration layer running on SOA Suite delivered the invoices to the customer by sending (in most cases) an email with one or multiple (PDF) attachments.

Customers not opting in for this electronic process got their invoice printed through a traditional E-business Suite concurrent program on a printer at the customer premises. From there, the invoice was eventually enriched with the necessary attachments, then put in an envelope and sent to the customer by post.

Docuguide

Since the process of sending, printing, enveloping and post marking paper is both a lot of work and expensive, the customer thought of outsourcing this task to Deutsche Post and its service docuguide/E-Post. They offer to print, put in an envelope and deliver/postmark a letter with a single page at 0,65€ which is far below the price for the stamp alone (0,80€).

The data can be transmitted to docuguide over various interfaces, e.g. by a special printer driver, but also using (s)ftp upload or a modern web service API (https://api.epost.docuguide.com/swagger/index.html#/Letter/LETTER_POST).

Implementation

The basic implementation was quite trivial: I modified the E-business Suite process to not only pass electronic invoices over to SOA Suite, but instead to pass everything along. Furthermore, we deactivated the printing of the invoices in EBS itself.

In the SOA Suite process, we then performed a simple “if” to send invoices that need to be delivered physically to docuguide. This can be done by using either the REST Web Service or the SFTP Adapter. Since Docuguide confirmed the traditional SFTP channel to be more flexible for now, we applied this approach for the time being:

Attachment challenges

As mentioned earlier, we had cases where not only a single invoice had to be delivered to the customer but instead we had to add 1 or even multiple additional documents to the letter. In the electronic case, this was trivial since we simply attached multiple documents (PDF) to the Email.

However, with the Deutsche Post interfaces we had to merge all these documents into a single, combined PDF. SOA Suite unfortunately does not provide any out of the box functionality to merge PDFs. Using a Java Embedding and one of many libraries to merge PDFs using Java Source Code, this can be achieved easily with the following steps:

  1. Load the appropriate PDF merging library (.jar files) into WEB-INF/lib of the soa composite sending the invoices:
  2. Implement a Java embedding Activity in the BPEL process similar as the following :

Integer numsI = ( Integer) getVariableData( “numAttachs”);

int num = numsI.intValue();

java.io.ByteArrayOutputStream bos = new java.io.ByteArrayOutputStream();

org.apache.pdfbox.multipdf.PDFMergerUtility PDFmerger = new org.apache.pdfbox.multipdf.PDFMergerUtility();

PDFmerger.setDestinationStream( bos);

 

for ( int i = 1; i <= num; i++) {

oracle.xml.parser.v2.XMLElement xmle = ( oracle.xml.parser.v2.XMLElement) getVariableData(

“Read_Attachment_OutputVariable”, “XxArDigitalInvoicesDocVCollection”,

“//ns10:XxArDigitalInvoicesDocV[” + i + “]/ns10:fileData”);

String nextBase64 = xmle.getTextContent().replace( “\n”, “”).replace( “\r”, “”);

java.io.InputStream is1 = new java.io.ByteArrayInputStream(

java.util.Base64.getDecoder().decode( nextBase64));

PDFmerger.addSource( is1);

}

 

PDFmerger.mergeDocuments( org.apache.pdfbox.io.MemoryUsageSetting.setupMainMemoryOnly());

String result = java.util.Base64.getEncoder().encodeToString( bos.toByteArray());

setVariableData( “base64_out”, result);

This combines all the PDFs to be sent to one customer into a single pdf that can then be sent to docuguide for delivery to the customer.

We used the https://pdfbox.apache.org/download.cgi library because it is under the Apache License 2, which is quite permissive also in a commercial environment. Be aware e.g. of libraries under GPL or even AGPL depending on your environment (e.g. itext).

Summary

The above procedure allowed us to replace a manual, expensive and error prone process (the number of pages per invoice varies making it difficult to correctly put the matching pages into an envelope) with a more convenient and way cheaper process within days. Especially, the flexibility of SOA Suite in combination with the powerful document printing means of Oracle E-Business Suite helped to implement a way better solution than the customer was running before.

Latest E-Business Suite Cloud Manager 20.2.1.1

OCI I/O-Performance with E-Business Suite (Part 2/3)

Johannes Michler PROMATIS Horus Oracle


Senior Vice President – Head of Platforms & Development

While moving a customer from On-Premises to Oracle Cloud Infrastructure, we recently conducted some performance testing before the final cutover. For the E-Business Suite database server, a physical box with 16 CPU cores was migrated to a VMStandard E3.Flex VM with 12 OCPU. From a CPU performance perspective, the new VM was much faster than the old box. Unfortunately, this was not the case on the I/O performance side. The first blog post (part 1) contains some general information about I/O performance in the Oracle Cloud Infrastructure.

In this part we'll see how we can migrate an E-Business Suite on an OCI database instance to Automatic Storage Management (ASM) and what impact this has from a performance perspective.

Oracle Automatic Storage Management (ASM)

Oracle ASM is the Oracle recommended storage management solution that provides an alternative to conventional volume managers, file systems, and raw devices.

Oracle ASM is a volume manager and a file system for Oracle Database files that supports single instance configurations of Oracle databases and Oracle Real Application Clusters (Oracle RAC).

Oracle ASM uses disk groups to store data files. An Oracle ASM disk group is a collection of disks that Oracle ASM manages as a single unit. Within a disk group, Oracle ASM provides a file system interface for Oracle Database files. The contents of files stored in a disk group are evenly distributed to eliminate hotspots and to maintain uniform performance across the disks. The performance is comparable to the performance of raw devices. See the documentation for more details.

Installing ASM on an E-Business Suite instance provisioned through Cloud Manager

Unfortunately, E-Business Suite instances deployed through Oracle Cloud Manager (whether for new installations or when restoring a backup) "on Compute" do not leverage ASM for storing Database content. Fortunately, this can be changed with the following sequence of steps outlined below:

  1. In the Oracle Cloud Infrastructure Console create 7 new Block Volumes (asm1-asm7) with 500 GB each and attach them to the database compute instance.
  2. Execute the iscsi-attach commands displayed in OCI console for each of the volumes (and make them available in the linux vm).
  3. Configure asmlib
    yum install oracleasm-support kmod-oracleasm
    groupadd -g 54327 asmdba
    groupadd -g 54328 asmoper
    groupadd -g 54329 asmadmin
    useradd -u 54331 -g oinstall -G dba,asmdba,asmoper,asmadmin grid
    oracleasm configure -I (accept defaults)
    oracleasm init
    oracleasm createdisk DATA1 /dev/sdc1
    oracleasm createdisk DATA2 /dev/sdd1
    oracleasm createdisk DATA3 /dev/sde1
    oracleasm createdisk DATA4 /dev/sdf1
    oracleasm createdisk DATA5 /dev/sdg1
    oracleasm createdisk DATA6 /dev/sdh1
    oracleasm createdisk DATA7 /dev/sdi1
  4. Verify using oracleasm listdisks that 7 Disks are now managed by asm:
  5. Make sure to modify the system.d unit for oracleasm to startup only after iscsid has been loaded.
  6. Give appropriate file-limits to the "grid" user and grant it access to ORACLE_BASE:
    chmod g+w /u01/install/APPS/admin/
  7. Install the Clusterware as the "grid" user using runInstaller
  8. Create a datagroup +DATA out of the 7 disks created. Use "external redundancy" since data is already redundant on the OCI Block Storage level.
  9. Patch Clusterware to the latest DBBP.
  10. Verify using asmcmd that the +DATA disk group is working as expected.

 

Moving data to ASM

After the installation of Clusterware and configuration of an ASM diskgroup +DATA, all data that was previously on a local EXT3 partition must be moved to ASM. The steps to be performed are well explained in the oracle documentation. On a high level:

  1. Create an spfile backup
  2. Use RMAN to create a "BACKUP as COPY" to ASM
  3. Shut down the database
  4. Bring it up while configuring control-file and db_create_file_dest to +DATA
  5. Restore the control files to ASM
  6. Switch database to copy using RMAN
  7. Recover and Open the database
  8. Replace temporary tablespace files and redo logs with new files on ASM

Performance

The Measuring Performance gives us an I/O-Performance, which is by factor 6.5 (from the theoretical maximum of 7) higher than the performance with a single drive. The throughput is slightly more than factor 3 higher than with a single drive:

Max IOPS = 161.620

Max MBPS = 1.412

This worse than expected increase in throughput is due to the fact that we have hit the networking speed of our 12 OCPU VM: With "only" 12 GBps of network bandwidth we can reach no more than appx. 1400 MByte per second.

Summary

Using ASM provides a convenient and reliable way to store the contents of an Oracle Database. In the Oracle Cloud Infrastructure, this allows using more than a single block volume to store data easily.

By automatically distributing data across multiple volumes, you can achieve much better I/O performance than using a single block volume as provided by Oracle "out of the box". For a database with several terabytes of storage, this means a massive performance improvement without additional OCI costs.

There are only three major drawbacks of this approach:

  • Unfortunately, it is not yet possible to perform a fast-clone using E-Business Suite Cloud manager. It is also unlikely to be "on the roadmap", as Oracle would suggest using the Database Cloud Service (BYOL) as backend for the E-Business Suite in such cases.
  • Clusterware installation containing ASM is something that needs to be maintained in addition to the database home. Furthermore, "traditional DBAs" tend to prefer "dbf-files" over ASM.
  • It is possible to create a backup and restore this backup (e.g. for the cloning production to be tested) with Cloud Manager tools. However, the target will not have ASM as a storage option. As a result, the test environment will differ from the production environment.

In the third part of this series we will see how the Linux Volume Manager can serve as a lightweight alternative to ASM.