Support Statement: oo40 to Oracle Data Provider for .NET

The general methodology for upgrading a COM API is described in this article.

1) Preparation

Oracle Objects for OLE (OO4O) is a high-performing data access API that provides access to Oracle's most advanced features from Windows clients. 

Make sure you have the oo4o DLL and its dependencies registered/installed on the machine before you generate the interface description files (IDFs) for them.  This ensures the standard generated IDFs contain specific types of methods, properties, and arguments.    

If things are not registered properly when you create IDFs you will have a lot of Variants in the IDFs where stronger types are needed. The tool will not be able to identify oo40 API operations in the source code. The resulting translations may have a lot of CallByName statements and transformation handlers will not apply.

2) Analysis -- actual oo4o Usage

Once you have detailed IDFs for oo4o, you should run translations and analytics reference reports. the reports will show you the specific oo4o types and members that must be upgraded.

3) Analysis  -- desired ODP.NET usage

Next ask the client what are their standards for using "Oracle Data Provider for .NET" (ODP.NET).

4) Design / Implementation

Once you have a good standard IDF, and details on how the client expects the new code to use ODP.NET, you will modify the IDF so as to map the oo4o types and operations into ODP.NET types and operations.  You may need to attach transformation handlers (written in gmSL, the GM Scripting Language) to oo4o API elements to perform deeper transformations.   See the RDO sample for an idea of how advanced transformations are done:

https://portal.greatmigrations.com/display/GMG/RDO+to+SQLClient+Sample

You may also simplify some parts of the upgrade by implementing parts of the oo4o API in .NET that wraps ODP.NET calls.  You can do this by adding code to the oo40 stubs generated by the tool.  This is similar to what we have done with the ADODB API and the MigrationSupport.DataLib framework implemented with ADO.NET calls.

5) Verification

Design, implementation and testing will be done iteratively as you add new oo40 types and operations to your upgrade solution.  Sometimes, client codes are difficult to test efficiently.  If this is the case, you will also benefit from creating small samples that are easy to test and also implementing automated unit tests for any wrapper codes you develop.