Friday, September 12, 2008

Automating the Application Deployment Manager (ADM) packaging process

"Open the box, open the box!"

Introduced in version 7.7 of Siebel CRM, ADM (Application Deployment Manager) has been significantly enhanced in version 8.0. The purpose of ADM is to assist developers and administrators to deploy changes made to the Siebel Repository, the physical UI files, Actuate report files and – last but not least – the administrative data of a Siebel CRM application from one enterprise (e.g. development) to another (e.g. test).

Version 8.0 of Siebel CRM also introduces the Siebel Management Server and Siebel Management Agent. These java based modules are used for the packaging and deployment of the a/m changes.

This post covers the techniques to automate the ADM packaging process. It mainly focuses on command line utilites which can be invoked as part of a shell script.

1. Initialize the package / create folder structure using admpkgr

The command line utility for ADM packaging is admpkgr. It resides in the /mgmtsrvr directory of the Siebel Management Server installation.

For automation purposes, shell scripts can be used similar to the following:

call admpkgr init d:\ousea\mgmtsrvr\adm\packages\xyz_package_01

2. Export database types (administrative data) using srvrmgr

Bookshelf Reference: Application Deployment Manager Guide version 8.0: Creating ADM Deployment Units from Database Types Directly from Command-Line --> http://download.oracle.com/docs/cd/B40099_02/books/AppDeployMgr/AppDeployMgr_CreatePkg7.html#wp1009283

To automate the export of administrative data objects such as LOVs, Data Maps, Responsibilites and many more (ADM natively supports more than 60 data types in version 8.0), the ADM Batch Processor server component (new in version 8.0) can be used.

Using the ‘start task’ command from a srvrmgr prompt works as expected for the ADM Batch Processor, however some issues have been reported with passing the parameters. Here are two versions to do it. The first one is passing the parameters using the ‘with’ clause. The second is setting the parameters and then restarts the component.

We are using an input file here, so the basic command would be as follows (note the /i switch):

\bin\srvrmgr /g /e /u /p /s /i ""

Sample input file for version 1:

start task for comp admbatchproc with admpath=\mgmtsrvr\adm\packages\xyz_package_01\database,admdatatype='EAI Data Map',admfilter='[Name] LIKE "XYZ*"',admeaimethod=synchronize,admprefix=XYZ_EAIDMAP

Sample input file for version 2 (which is safe especially for the admfilter parameter):

shutdown comp admbatchproc
sleep 60
change param admpath=d:\ousea\mgmtsrvr\adm\packages\xyz_package_01\database for comp admbatchproc
change param admdatatype='EAI Data Map' for comp admbatchproc
change param admfilter='[Name] LIKE "XYZ*"' for comp admbatchproc
change param admeaimethod=synchronize for comp admbatchproc
change param admprefix=XYZ_EAIDMAP for comp admbatchproc
startup comp admbatchproc
sleep 20

Here is an explanation of the parameters for admbatchproc:

admpath = Location for resultant export files
admdatatype = Name of Data Type (as in Application Deployment Manager screen)
admfilter = Filter to be applied on the data type. For example, '[List Of Values Parent(UDA).Value]="NM"'
admeaimethod = One of three methods: upsert, synchronize, or custom
admprefix = Prefix for the name of exported XML file

3. Export repository changes using consoleapp.exe

Bookshelf Reference: Application Deployment Manager Guide Version 8.0: “Using Consoleapp.exe to Create Repository Deployment Units” --> http://download.oracle.com/docs/cd/B40099_02/books/AppDeployMgr/AppDeployMgr_CreatePkg22.html#wp1012566

The command line utility consoleapp.exe (in the Siebel Tools bin directory) can be generically used to invoke business service methods within a Siebel application from the command line (headless, i.e. without rendering a GUI). The ADM framework provides a bunch of business services which are used mainly for reloading the various caches or – in this case – for exporting repository changes.

In a shell script example, one would use consoleapp.exe to call the “Siebel Tools Export Support for ADM” business service as follows to export the “XYZ New Order for Account” Workflow:

\bin\consoleapp "\bin\enu\tools.cfg" ENU SADMIN "Siebel Tools Export Support for ADM" "Export:Repository=Siebel Repository,Object_1=XYZ New Order for Account,Type_1=Workflow Process,ExportFile=\mgmtsrvr\adm\packages\xyz_package_01\repository\XYZ_WF_1.sif,DescriptorFile=\mgmtsrvr\adm\packages\xyz_package_01\repository\XYZ_WF_1_des.xml,ExportCount=1,LogFile=d:\temp\adm.log"

If this is your first exposure to consoleapp.exe, it might feel a little weird. Here is the syntax:

consoleapp.exe "" “:"

An alternative way to use consoleapp.exe according to bookshelf is to use an xml input file. I have not yet had the privilege to test this in real life, however. The syntax is as follows:

consoleapp.exe /f inputfile.xml

Caveat ---> http://en.wikipedia.org/wiki/Caveat: Make sure that the descriptor file name is exactly spelled like the export file name, having .xml (instead of .sif) as the file type and des as the suffix. Example: ExportFile=XYZ_WF_1.sif, DescriptorFile=XYZ_WF_1_des.xml.

4. Export file types using OS utilities

Files, such as web template files (.swt), must also be copied into the respective package directories. Since there is no dedicated utility provided by Oracle, the shell script would refer to classic file copy utilities. The following is an example for Windows xcopy:

#copy all web template files changed since June, 1st 2007 to the webtempl directory
xcopy \WEBTEMPL\*.swt \mgmtsrvr\adm\packages\xyz_package_01\file\AppServer\webtempl /D:06-01-2007

5. Delete empty subdirectories using OS utilities

It is best practice to delete empty subdirectories to increase processing time and decrease the amount of warnings during packaging and deployment. This would be accomplished using classic OS utilities. The following is a windows example:

rd \mgmtsrvr\adm\packages\xyz_package_01\File\AppServer\reports\enu

6. Generate the package descriptor file using admpkgr

Now it’s time for admpkgr again. As in step 1, it can be used in a shell script with the ‘generate’ option as follows:

call admpkgr generate \mgmtsrvr\adm\packages\xyz_package_01

7. Validate the package using admpkgr

Here is a windows example how to call admpkgr from a shell script and direct the output to a log file:

call admpkgr validate \mgmtsrvr\adm\packages\xyz_package_01 >> "d:\temp\admpkgr_out.txt"


Summary

The ADM packaging process is multifold, and various command line tools come into play when you want to automate it, namely admpkgr, srvrmgr, consoleapp.exe and OS file system manipulation tools.

No comments:

All Rights Reserved