Oracle Data Integrator (ODI) 22.214.171.124.6 now supports Git as
an external Version Control System (VCS). Now you can use either Apache
Subversion or Git for source controlling ODI objects. Regardless of which
technology is used, the user experience for an ODI user will be the same for
any versioning operation and the underlying differences between the two systems
are transparent to ODI users. This is consistent with the ODI core benefits of keeping
users shielded from learning underlying systems and providing a seamless
experience across technologies.
In addition, there are numerous new features added to
increase productivity and address various use cases. Now you can have a consolidated
view and manage all out-of-sync versioned objects from a single screen. The ODI
Populate Repository option is also enhanced to allow populating a repository from
a tag so that you can restore objects state from it. You can create version for
all dependent object as well, along with versioning of the base object. There
are options provided to regenerate scenarios during tag or deployment archive
creation to ensure that the scenario corresponds to the current state of the
corresponding object in VCS. The automatic merge process is made smarter to
perform three way merge with change detection which reduces conflicts during
In this article we are going to explore the version control
related features and capabilities. I will cover the smart merge capabilities in
a later article so stay tuned for that.
The administrator needs to first enable Git as version
control system and configure the repository connectivity.
Selecting Git as version control system will enable all the
Git related configuration menu options. You can switch anytime between the
version control systems so an ODI repository, previously configured with
Subversion, can be switched to Git-based versioning. ODI however, does not
migrate the version history during such switch so you need to migrate any such
history directly though the tools provided by those systems.
Selecting Git for versioning enables the VCS settings
options in the studio menu.
You need to perform all three settings configuration in the
order of their appearance. The Edit
Connection dialog configures Git connectivity details such as
authentication type (protocol), URL, password etc. After connection setup, you
can create and configure local Git repository through Clone Remote Repository operation. Then select the Git branch
through the Configure menu option. Once
successfully configured, you will notice that the Git indicator in the bottom
right corner of ODI Studio turns green from grey indicating successful Git
configuration. The indicator also displays the configured Git branch name – for
example master branch in below screenshot.
All the Lifecycle Management functionalities that existed in
previous ODI releases for creating and managing versions in Subversion are now
available for Git as well. Some of the operations are as follows
- Adding one or more objects to VCS
- Creating versions for modified objects that are
out of sync from VCS
- Viewing version history – Hierarchical view and
- Comparing difference between two object versions
in VCS or comparing the VCS version with repository object
- Restoring an object version from VCS
- Restoring a deleted object from VCS
Since these functionalities
are the same as noted earlier, I am not going to cover their details here. Instead,
I will focus here on the new options provided in the latest release to make
these more user friendly. If you are interested in details on above-mentioned operations,
please refer to my previous post Oracle
Data Integrator 12.2.1 - Managing Versions in Apache Subversion.
New options while creating versions
There are a couple of useful options available when adding a
new object to VCS or creating new version of an already versioned object. These
advanced options are available at the bottom of all the versioning dialogs. By
default, they are not selected to give you the existing behavior from previous
- Include Dependencies
- Regenerate and Version Scenarios
This option allows you to ensure that all the dependencies
of an object are also versioned along with the object. For example if you are
versioning a mapping which uses two data sources which in turn depends upon
some technology or logical schema, then using this option you can version all
these objects in a single operation along with the mapping itself.
If a dependent object is not yet versioned then it adds it
to Git or Subversion or if a dependent object is out-of-sync with VCS systems
then it creates a new version. If the dependent object is already versioned
then it will not do anything for that object.
This option is particularly useful in keeping consistency in
the versioned objects in VCS, which is key for continuous integration. It
removes any chances of missing to create a version for a dependent object so
that the current copies of all the relevant objects are present in VCS.
This option takes care of regenerating the scenario before
creating a version for it in VCS. If you also select Include Dependencies then it regenerate a scenario for any of the
selected objects and their dependent objects.
This option will be useful when you want to ensure that the scenarios
present in your VCS correspond to the current copy of the corresponding object
in VCS. Such requirement could be crucial if you have an automated build and
testing process, which takes the scenarios from VCS and validates them.
The newly introduced Pending Changes dialog allows you to manage
objects that are out-of-sync from a single place. You can access it from ODI
Studio Team menu option.
The Pending Changes dialog shows the list of all the
versioned objects from the ODI repository that are out-of-sync. If you are
looking for a particular object, you can directly reach to it through the
search field. This dialog allows you to perform following operations on the
- Create version for the selected object(s) here
if the selected object is a deleted object from ODI Repository then you can
push the deletion to VCS.
- Restore a deleted object from VCS. This option is
applicable only when you select all the deleted objects.
- Compare the highlighted object with the VCS version.
New options while creation Tag
There are a couple of useful options provided during a Tag
creation allowing you to control this:
- Option to add only the versioned objects to the
tag. This provides flexibility of creating Full Tag with only versioned object
is a very useful flexibility that allows you to push all the versioned objects along
with dependencies to VCS in a single operation.
- Regenerate and version scenarios so that the
scenarios referred by a Tag always corresponds to the relevant object in the
New options while Populating Repository from VCS
The enhanced Populate
ODI repository from VCS dialog provides a number of flexibility.
- Populate from branch or Tag: Now not only you can
populate ODI repository contents from the currently configured branch but you
can also restore the objects from a particular Tag created on the current
- It now gives you the flexibility to select
either all the objects or a subset of objects to be populated from the selected
Tag or branch. Such selective populating will be useful if you want to break
down the process into smaller chunks or if you are interested only in a
selected subset of objects from the branch or Tag. However, this flexibility
comes with a pitfall that you may miss to import some of the dependent objects
affecting the repository objects consistency. So this selective population
process should be used with caution.
- Deleting existing work repository objects from
ODI repository before populating objects from VCS. This will be useful in
ensuring that there are no remnant of old work repository and after populate
the ODI work repository objects are in sync with VCS contents.
SDK APIs for Continuous Integration
One of the needs for Continuous Integration is to automate the
Tag Creation and Deployment Archive build process. There are a couple of
services available in ODI SDK APIs that allows you to automate your entire
build and testing process. VersionManagementService
provides the necessary APIs to configure the VCS system, create Tags, and
populate an ODI repository from the VCS contents from a Tag. DeploymentService
provides APIs for creating Deployment Archive and applying it to target ODI
The enhancements added in Oracle Data Integrator (ODI)
126.96.36.199.6 around Lifecycle Management capabilities provides broader support
for the leading Version Control Systems, improves developer’s productivity, and
addresses the needs for automating Continuous Integration and build process.
Yet again ODI differentiates itself by providing Lifecycle Management capabilities not
available in any other competing products.