Friday Nov 20, 2015

Using ODI Exchange to Share ODI Objects

In the previous blog post in this series we had a look at the new ODI Exchange functionality available in ODI 12.2.1 and how to use it. In this blog post we will be focusing on how to share your global ODI objects with the rest of the ODI community.

Step 1: Prepare Global ODI Objects

  1. Connect to the ODI Repository containing the desired Global Knowledge Modules or User Functions (Note: Only Global objects are supported)
  2. In the Designer Navigator expand the Global Objects accordion to select the desired object

  3. Export the Global KM or User Function via Context Menu “Export…”

  4. Specify the Export directory and Export name (Note: Export key is NOT supported)

  5. Press OK (and answer Yes to Export Key warning if shown)
  6. Press OK on Export finished dialog
  7. Obtain the GlobalId by examining the export file content.  The first <Object> should contain the exported object definition (class=”com.sunopsis.dwg.dbobj.SnpUfunc” or class=” com.sunopsis.dwg.dbobj.SnpTrt”).  A few more lines down should be one called <Field name=”GlobalId”…>…[CDATA[##-##-##-##]…  Make note of the value of the GlobalId you will need it again!  (Hint: you should probably copy it to the clipboard) 

    Here is an example:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <Admin …
    <Encryption …
    <Object class="com.sunopsis.dwg.dbobj.SnpUfunc">
      <Field name="ExtVersion" …
      <Field name="FirstDate" …
      <Field name="FirstUser" …
      <Field name="GlobalId" … [CDATA[99f49a0e-096d-407f-b423-a7f0fbb258da]]>
      <Field name="GroupName" …
      <Field name="IndChange" …

Step 2: Prepare Update Bundle

  1. Place the exported Global ODI Objects into an empty directory
  2. Create under that directory a “META-INF” sub-directory

  3. Create a file called “bundle.xml” in the “META-INF” directory as follows:
    • [mandatory] globalId: MUST exactly match the one in the export xml
    • [mandatory] name: the ‘name’ of the object which will be displayed by Check For Updates
    • [mandatory] version: the version number (in the form #.#[.#.#])
    • author: the value to show as “Author”, this information will appear within ODI Studio so make sure to fill it in!
    • authorUrl: the value to show as the “Author Url” (http://... ) , this information will appear within ODI Studio so make sure to fill it in!
    • description: the description to show in the description field, this information will appear within ODI Studio so make sure to fill it in!
    You can also download a sample bundle.xml file from here: link

  4. Utilize a ‘zip’ tool (zip, winzip, 7zip, etc…) to create a single .zip file containing the update contents in the ‘root’ directory and META-INF/bundle.xml
    Ex: in Linux:    zip -9 –r {bundleZipFile}.zip *

Step 3: Upload the bundle zip file to the Oracle Data Integration project on

  1. Go to and create an account if you don't have one yet

  2. Click on Join This Project
  3. Click on Downloads in the Project Features menu on the left hand-side

  4. Click on ODI

  5. Click on Knowledge Modules

  6. Click on 12c

  7. Finally click on Add File / Link for Download, specify the file to upload and put a title/description. If you don’t see 'Add File / Link for Download' you need to log into

  8. Click on Upload to complete the upload of the object on When you’re done click on Done.

When a new object is added to we will be automatically notified and will add it to the ODI Exchange. Thanks for contributing!!

If you want to know more about all the new features included in Oracle Data Integrator 12.2.1 have a look at the New Features document on OTN.

Wednesday Nov 18, 2015

Introducing Oracle Data Integrator (ODI) Exchange

Oracle Data Integrator 12.2.1 was recently released and introduces many exciting new features including the ODI Exchange. In a nutshell, ODI Exchange allows Oracle and our users to easily share global ODI objects (Knowledge Modules and User Functions) with the rest of the community through Update Centers. There are 2 Update Centers: one on which hosts unsupported but very valuable ODI objects shared by our community and one on the Oracle Technology Network (OTN) that will be used in the future to ship supported ODI objects.

Did you know? Our Oracle Data Integration project on already hosts dozens of Knowledge Modules, User Functions and more (SDK samples, Open Tools, Technologies etc.). Now with ODI Exchange most of this content is readily available from ODI Studio!

To get started simply open up ODI Studio 12.2.1, go to Help and click on Check for Updates

Then select the Update Centers you want to connect to:

  • Official Oracle Update Center: Hosted on OTN, this Update Center will be used to ship officially supported ODI objects from the ODI Development team. This Update Center does not contain any objects at the moment
  • Customers and Partners Update Center: Hosted on, this Update Center provides non certified but yet very valuable ODI objects created by customers, partners and Oracle employees

Click Next and then select one or more objects you would like to download.

It is also possible to filter the results using the Search box at the top. We can type ‘big data’ for example to download a Loading Knowledge Module that leverages Oracle Big Data SQL.

Once the objects are selected click Next and ODI will download the files locally. Finally click on Finish to complete the process.

The objects will be imported into your ODI repository and will be available in Designer in the Global Objects accordion.

In the next blog post of this series we will look at how you can share your global ODI objects with the rest of the ODI community!

If you want to know more about all the new features included in Oracle Data Integrator 12.2.1 have a look at the New Features document on OTN.

Thursday Nov 12, 2015

Oracle Data Integrator 12.2.1 - Parallel Development using Subversion Branches

This is the second article in the series of three articles covering Oracle Data Integrator (ODI) 12.2.1 lifecycle management features. In the previous article, Managing Versions in Apache Subversion, I discussed ODI Studio features for creating, viewing, comparing and restoring versions in Apache Subversion. In this article I will cover the Branch and Tag management capabilities that are required for parallel development.

Parallel Development Using Subversion Branches

First, let’s take a look at the high level setup of the Subversion branches in ODI for any parallel development. As shown in the below diagram, you can configure a Subversion branch/trunk with one master and work repository combination. In this example, the Subversion trunk is used by user set 1 as the main code line and contains all ODI objects. Branch 01 is configured for user set 2, who are working on a subset of ODI objects. User set 3 is working on a release branch and fixing bugs on the release code line. Each of these user set work in parallel and leverages Subversion branches as the channel to merge their changes across different branches.

Creating Tags

A Tag is a text name applied to the current versions of a set of objects to take a snapshot of their current state. It freezes the current state of objects and can be referred back with the Tag name at some future point in time. You can create a Tag directly from the ODI Studio and you can create it for all the repository objects or for a selected set of objects.

ODI takes following actions on the objects present in the Tag to ensure consistency.

  1. Add objects to Subversion if they are not yet versioned.
  2. Create versions for the objects if their latest changes are not yet versioned.
  3. Automatically include all the dependencies of the selected objects so that all the relevant objects can be found in the Tag when you refer back to it.

Thus, a Tag creation is a good way of ensuring all the relevant objects are being version controlled and it is recommended to create Tags at different logical points during your development cycle.

There are two type of Tags created in ODI

  • Full Tag – It is created with all the objects in the repository. It will first sync all the repository object state to Subversion versions before applying the Tag.

  • Partial Tag – It is created for a selected set of objects and user drags and drops an object into the Partial Tag creation wizard. Al the dependencies for the selected object are automatically added to the Tag.

In the example, a mapping was added to the Partial Tag and all the required model and topology objects are automatically added by ODI Studio.

Creating a Subversion Branch

You can create a Subversion branch from a Tag. The branch creation screen lists all the relevant Subversion Tags and their respective comments to easily locate a Tag for branch creation. The objects versions of the selected Tag becomes the branch point and may not necessarily be the latest version of the objects.

Populating ODI Repository from a Branch or Trunk Objects

Once you configure your ODI repository with a Subversion branch/trunk, you can populate it with the branch/trunks objects through a couple of ODI Studio menu options.

  1. Populating repository – It is used when you want to populate a fresh repository with the branch content. For example when you create a project branch and want to setup an ODI repository to the branch.
  2. Populating restored repository – This option is used when your current repository gets corrupted and you restore an older repository backup. It syncs the objects present in the restored repository with the latest contents from the Subversion branch/trunk. It will pull all the objects from the Subversion branch/trunk and imports them in a special Import Mode that only inserts or updates the objects presented in the repository while leaves behind any extra objects in the repository.

Branch Merge

Merging changes from one development branch to another is an essential need for any parallel development. ODI Studio allows you to merge changes from a Branch, Trunk or Tag to the repository it is connected.

Merge Summary

The merge process automatically merges the object changes that do not have any conflicts. The Merge summary details all the affected objects in the merge. It also lists the objects that could not be automatically merged and their conflicts should me manually resolved. The summary report can be saved in the file system in multiple formats so that it can be shared with the team.

Merge Results

The merge result window assists you in resolving conflicts from a branch merge. There are a couple of tabs available in this window.

Merge Object Selection Tab

It lists the objects affected in the merge and provides different search and filtering options. It allows following operations on the conflicted objects

  1. Mark the conflict as resolved for the selected object.
  2. Open Merge Conflict Resolution window for the selected object.
  3. Assign ownership of the conflict resolution to a particular user responsible for conflict resolution of that object. By default the merge process assigns conflict ownership to the user who has last modified it.

Merge Conflict Resolution Tab

It assists you in manually resolving an object’s conflict by presenting the object properties side by side.


A number of branch management features introduced in ODI 12.2.1 are vital for organizing objects across branches and allow parallel development between functionally and geographically distributed teams.

Stay tuned for the third and final article on lifecycle management, which will cover the release management capabilities using newly introduced Deployment Archives.

Friday Nov 06, 2015

Oracle Data Integrator 12.2.1 - Managing Versions in Apache Subversion

The latest Oracle Data Integrator (ODI) release, 12.2.1, came out with brand new lifecycle management features that allows you to use Apache Subversion as the external Version Control System (VCS) for creating and managing ODI objects versions. It does not just stop there but also facilitates the creation of tags, manage branches for parallel development, and create Deployment Archives for promoting ODI objects from Development to Production.

In this article I will talk about various version management operations available in ODI Studio for maintaining, viewing, comparing and restoring versions from Apache Subversion.

How does it work?

ODI Studio remains the sole User Interface for performing any such versioning operations. It directly communicates with the external Version Control System and presents all the needed information within ODI Studio user interface. For example to create a version, an object is exported into XML file which is then checked in into Version Control System. Conversely to restore an object, its XML file is first checked out from Version Control System and then imported back into ODI repository.

Configuring Apache Subversion

In order to use Subversion, we first need to setup its connectivity in ODI Studio in just a couple of steps.

  • Edit Connection - This screen allows to setup subversion URL and user credentials as per the selected authentication types. There are a number of authentication types supported for setting up such connectivity – HTTP, SSH, SSL etc.

  • Configure - This screen allows you select the subversion project and the Trunk or Branch under it for maintaining ODI objects. If you don’t have the subversion project or branch already created then you can create them right from this screen at the time of configuration.

There are a couple of other useful options configured here

  1. Auto version – Set this if you want to make ODI to automatically create version of a versioned object whenever it is saved. By enabling you can make sure that the subversion copy is always in sync with your repository copy of a versioned object. But it may impact your save performance due to underlying export and checkin.
  2. VCS Key – Configure the VCS key that is used to encrypt the sensitive content while exporting the object in to XML file. For example the passwords in a Data Server definition should not be exported in plain text when the Data Server is exported into XML. Such passwords are encrypted and decrypted using the VCS Key configured here.

Managing Versions

The operations for managing versions are available at two levels.

  • At Studio menu level - This menu lists the subversion operations that are not specific to a particular object and can be performed on a group of objects.

  • In the object context menu (Right click menu) - These options allow you to perform various subversion operations on that particular object.

Adding objects to Apache Subversion

Once you decide what objects need to be version controlled, then you can add them to subversion individually or in group.

Adding Single object

 It is performed through object's context menu

There are couple of convenience features available here

  1. All the necessary parent hierarchy is automatically added with child object so that developer need not do it individually. For example when you add a mapping for the first time the corresponding folder and project that contains this mapping are also added automatically.
  2. You can add selected or all children objects along with the parent object. For example when you add a folder to subversion then the packages, procedures, mappings etc present under the folder can also be added along with it in the same operation.