6Deploying Siebel Mobile Disconnected Applications

Overview of Deployment for the Siebel Mobile Disconnected Application Client

This topic provides an overview of important factors to consider when configuring Siebel Server for Siebel Mobile disconnected application synchronization. When planning and executing the deployment of a mobile application using server synchronization, you must understand the hardware and network requirements. While these factors are generally applicable to all deployments, there are unique aspects to each customer configuration and implementation. Therefore, it is recommended that customers conduct detailed configuration, sizing, and production-readiness reviews. For help with detailed configuration, sizing, and production readiness reviews, contact your Oracle sales representative for Oracle Advanced Customer Services to request assistance from Oracle's Application Expert Services. This is especially important for complex deployments, such as those supporting large numbers of users over wide, geographic areas.

You can also improve the performance and scalability of server synchronization deployments by working with the parameters of the Siebel application server component. For more information about the Siebel application server, see Optimizing Siebel Server Process Management for Siebel Mobile Disconnected Application Synchronization.

Note: The recommendations in this chapter are general ones and are intended to raise your awareness of the key factors in Siebel Mobile disconnected application synchronization, performance, and scalability. These factors must be confirmed in your environment, and the usage patterns in your enterprise must be considered.

    Overview of Siebel Server Topology

    The following image shows the servers and components that are required to deploy server synchronization for a mobile application. The components are as follows:

    • Siebel Mobile disconnected application database

    • Siebel Server

    • Siebel Web engine

    • Siebel Mobile disconnected application

    The synchronization components are as follows:

    • Synchronization engine for the Siebel Mobile disconnected application, which resides on Siebel Server.

    • Siebel Mobile disconnected Synchronization Client, which resides on the Siebel Mobile disconnected application.



      Installing Siebel Server for Siebel Mobile Disconnected Application Synchronization

      This task is a step in Roadmap for Setting Up Siebel Mobile Disconnected Applications. The components that are required for Siebel Mobile disconnected applications are installed when you install the Siebel Server. This topic includes the following information:

      For information about installing and configuring Siebel Server, see Siebel Installation Guide for the operating system you are using.

        Installing the Components for Siebel Mobile Disconnected Application Synchronization Using the Siebel Server Installer

        Install the Siebel Server, following the instructions in the Siebel Server installation guide for the operating system you are using. When you reach the Setup Type screen in the Installer wizard, you are presented with three installation options:

        • Typical. This setup option installs all Siebel Server components.

        • Compact. This setup option installs only those components necessary to run the Siebel Server but no additional components or help.

        • Custom. This setup option lets you customize your installation by choosing the specific components that you want to install.

        To install the components for application synchronization

        1. During the Siebel Server installation, when the Setup Type screen appears, choose the Custom setting, and then click Next.

          Note: At this screen, you can also choose a different directory for your Siebel Server installation.
        2. From the following components, choose Handheld Synchronization:

          • Siebel Application Object Manager Component

          • Handheld Synchronization

          • Siebel Data Quality Connector

          • Remote Search Support

          • Siebel Java Integrator

        3. Click Next.

          Continue with the installation in the Siebel Installation Guide for the operating system you are using. The installation wizard automatically installs and configures the components for server synchronization.

          Siebel Server Component Parameters for Siebel Mobile Disconnected Application Synchronization

          Some common mobile applications, such as Siebel Pharma, are preconfigured by default. If you want to configure additional applications, see Configuring Siebel Server for Siebel Mobile Disconnected Application Synchronization for more information. You must add the synchronization server component (application object manager for the Siebel Mobile disconnected application) that you installed and configured to reflect your company’s environment. See the following table for a list of the required parameters. For information on adding server components for server synchronization, see Siebel System Administration Guide.

          Table Siebel Server Component Parameters for Server Synchronization

          Parameter

          Default Value

          Description

          ApplicationName

          This value can be, for example, the following: Siebel ePharma Mobile.

          The Siebel Mobile disconnected application. This value must match the name of the mobile application as it is specified in Siebel Tools.

          ApplicationTitle

          This value can be, for example, the following: Siebel ePharma Mobile.

          The name of the Siebel Mobile disconnected application as shown on the title bar on the browser. This parameter is used only if the Siebel application developed for the mobile application is running on the Siebel Mobile Web Client.

          ApplicationSplashText

          This value can be, for example, the following: Siebel ePharma Mobile.

          The Siebel Mobile disconnected application name as shown on the splash screen. This parameter is used only if the application developed (in Siebel Tools) for the Siebel Mobile disconnected application is running on the Siebel Mobile Web Client.

            Configuring Siebel Server for Siebel Mobile Disconnected Application Synchronization

            This task is a step in Roadmap for Setting Up Siebel Mobile Disconnected Applications. The Siebel Server installer copies the necessary DLLs to create a Siebel Application Object Manager for enabling server synchronization for Siebel Mobile disconnected applications. It also creates and configures a server component and component group. This topic describes which options you must select to install the software correctly, along with creating or configuring additional Siebel Application Object Managers.

            This topic includes the following information:

              Configuring Logging Levels for Siebel Mobile Disconnected Application Synchronization

              To set the logging level, you must perform the following tasks:

              1. Configure Siebel Server logging using the Server Manager

              2. Configuring Siebel Server logging using the Server Configuration screen

              You set the logging level to a value between 1 and 5 as shown in the following table.

              Table Logging Levels for Siebel Mobile Disconnected Application Synchronization

              Logging Level

              Results

              1

              Error listing

              2

              Warning listing

              3

              Information listing, including SQL tracing

              4

              Information listing

              5

              Debug information

              To configure Siebel Server logging using the Server Manager

              The following procedure shows you how to configure Siebel Server logging levels using the Server Manager.

              1. Log in to the command Server Manager from a prompt.

              2. Run the following command:

                change evtloglvl HandheldSyncLog=[LogLevel] for comp [OMName], 
                where [LogLevel] = an integer between 1 - 5   /*(5 enables all logging)*/
                and [OMName] = the OM name   /*(for example,<ApplicationName>ePharmaMObjMgr_
                enu)*/

              To configure Siebel Server logging using the Server Configuration screen

              The following procedure shows you how to configure Siebel Server logging levels using the Server Configuration screen.

              1. Navigate to Administration - Server Configuration screen, then the Servers view.

              2. Select the appropriate Siebel Server in the upper applet.

              3. In the Components applet, query for the appropriate component.

              4. Select the Events tab and then do the following:

                1. Query for the event type, Handheld Sync Logging.

                2. Set the value to a number between 1-5, and then save the change.

                  See the previous table for the logging-level results.

                Optimizing Siebel Server Process Management for Siebel Mobile Disconnected Application Synchronization

                Several parameters help to optimize Siebel Server processing for Siebel Mobile disconnected application synchronization.

                To set parameters to optimize Siebel Server process management

                1. Log in to the Siebel application as a user with administrator privileges.

                2. Navigate to the Administration - Server Configuration screen, then the Servers view.

                3. Select the appropriate Siebel Server in the upper applet.

                4. In the Components applet, query for the appropriate component.

                  For example: ePharmaMObjMgr_enu.

                5. Select the Parameters tab and then update the parameters as described in the following table.

                  Parameter

                  Description

                  Max Tasks

                  Determines the maximum number of threads that can run concurrently for a given component. Set the value of this parameter to a number equal to that of the expected peak number of concurrent synchronizations for each Siebel Server.

                  Min MT Servers

                  Determines how many multithreaded server processes are started by default for the Siebel Application Object Manager.

                  Max MT Servers

                  Defines the maximum number of processes supported by the instance of Siebel Application Object Manager. The value for this parameter must be the same as the Min MT Servers parameter. Set it so that the threads for each process (Max Tasks and Max MT Servers) are optimized.

                  Roadmap for Configuring Incremental Synchronization for Siebel Mobile Disconnected Applications

                    Configuring the Object Mappings for a New Business Component

                    The following procedure shows you how to configure the object mappings for a new or customized business component.

                    To configure the object mappings for a new business component

                    1. Log in to Siebel Tools and do the following:

                      1. Locate the new business component that you want and its corresponding base table name, and make a note of the object mappings in the table.

                      2. If the new business component is a child that has a many-to-many relationship with its parent business component, then locate the corresponding parent business object and make a note of the intersection table name.

                      3. If the new business component contains a picklist business component, which does not exist in the object mapping table, then locate the corresponding picklist business object and make a note of the table name.

                    2. Log in to your Siebel business application, and configure the object mappings as follows:

                      1. Navigate to the Administration - Siebel Mobile screen, Application Administration, and then the Object Definition view.

                      2. Select the appropriate mobile application in the upper applet.

                      3. Add all the required business component-to-table object mappings as follows:

                        • Click New to add each new entry.

                        • Set Table to the table name.

                        • Set Business Component to the business component name.

                          For example, to map Account to the S_PARTY table, set Business Component to Account and set Table to S_PARTY, and so on.

                      4. If required, configure the intersection and picklist table mappings as shown in the previous step.

                        For all intersection table mappings, note that the business component name and the table name must be the same. So if the name of the intersection table is S_CON_ADDR, then click New to add a new entry, and set Table to S_CON_ADDR and set Business Component to S_CON_ADDR.

                    3. Click the Settings tab, and set the Purge Interval to 30 if not already done so.

                      Enabling Modification Tracking for Siebel Mobile Disconnected Application Clients

                      Use the following procedure to enable modification tracking for Siebel Mobile disconnected application clients.

                      To enable modification tracking for application clients

                      1. Log in to the Siebel application as a user with administrator privileges.

                      2. Navigate to the Administration - Siebel Mobile screen, then the Mobile Clients view.

                      3. Locate and select the mobile client that you want from the Mobile Clients list, then complete the following field:

                        Mobile Application Name. Select the appropriate mobile application for this node.

                        For information about how to configure a new client, see Configuring the Mobile Node for Siebel Mobile Disconnected Application Users.

                      4. Run dbxtract (database extract) for this mobile client, and then restart txnproc and txnroute.

                        After dbxtract is run, a full data and metadata download is enforced on the mobile client by Siebel Mobile when the mobile client next sends a synchronization request to the Siebel Server.

                        For information about how to run dbxtract, see Running Database Extract for Siebel Mobile Disconnected Application Users.

                      Note: If you remove a mobile application from the Mobile Application Name field in the Mobile Clients view and then add either the same or a new mobile application, then Siebel Mobile enforces a full data and metadata download on all corresponding mobile clients (or mobile application users) who are configured to use the mobile application, when the mobile clients next send a synchronization request to the Siebel Server. Removing a mobile application from the Mobile Clients view terminates the relationship between the mobile application and the mobile clients, and renders the application repository objects invalid. Adding a mobile application, regardless of whether the application was previously added or whether the application is new, creates a new relationship between the mobile application and the mobile clients. Hence a full data and metadata download is required.

                        Migrating Siebel Mobile Disconnected From Asynchronous to Synchronous Programming Model

                        Siebel Mobile disconnected uses a synchronous programming model where $.callback and $.setReturnValue are not required. Previous releases of Siebel Mobile, prior to Siebel Innovation Pack 2016, used an asynchronous programming model where business services used a $.callback and $.setReturnValu for every method.

                        Note: Customers who have written their own JavaScripts for Siebel Mobile disconnected must complete this task. This task is not required for customers planning to use Siebel Mobile disconnected for the first time with latest Siebel Innovation Pack.

                        Migrating Siebel Mobile disconnected from an asynchronous to a synchronous programming model involves the following

                        • Removing $.callback for all calling and called functions in the core framework (buscomp.js, applet.js, appmgr.js, browsercachemgr.js, model.js, and view.js).

                          Note that metadata discovery is retained as an asynchronous call.

                        • Removing $.callback from all Siebel Mobile disconnected applications (for Siebel Pharma, Siebel Field Service, and Siebel Sales).

                        • Removing $.setReturnValue.

                        • Returning a value instead of $.setReturnValue in all functions.

                        To assist you in migrating Siebel Mobile disconnected JavaScript code from an asynchronous to a synchronous programming model, a migration tool (async2sync.pyc) is provided. For more information about the JavaScript migration tool, see About the JavaScript Migration Tool.

                          About the JavaScript Migration Tool

                          The JavaScript migration tool, async2sync.pyc, is located in the following custom folder:

                          swsm\applicationcontainer\webapps\siebel\scripts\siebel\offline\custom
                          

                          Python v2.x is required and must be installed to use the JavaScript migration tool.

                          The purpose of the JavaScript migration tool is to assist you in migrating application scripts from an asynchronous to a synchronous programming model. You can run the migration tool in debug mode (which is the default mode). Debug mode keeps the debug information in the output js file.

                          The JavaScript migration tool has the following limitations:

                          • It cannot identify exactly which functions are asynchronous or synchronous.

                            It can handle native asynchronous functions (which contain $.setReturnValue or $.callback). However, it cannot handle the synchronous wrapper for asynchronous functions. Documented APIs are provided within the tool.

                          • It cannot exactly identify whether or not the caller should receive a return value from the functions.

                            Modifying Identified Patterns in the Existing Code Base

                            There are certain identified patterns in the existing code base that must be modified when migrating Siebel Mobile disconnected from an asynchronous to a synchronous programming model, and the purpose of this topic is to highlight those patterns.

                            Patterns in the existing code that must be modified include the following:

                            1. Add a return value to the end of all asynchronous functions, for example, as follows:

                              BusComp.prototype.SetFieldValueX = function (fieldName, fieldData, 
                              SkipValidate, bSkipMvgCheck, bSkipED) { var currRetValue={err:false}, retObj;
                              // code body return(currRetValue);
                              }

                              Asynchronous functions typically declare the local function.

                            2. The Return value in asynchronous functions must return the currRetValue.

                              For example, change the following:

                              return;

                              To the following:

                              return currRetValue;

                              If the return value already returns an object (obj), it raises a conflict and must be manually fixed, for example, as follows:

                              return someObj; 
                            3. The setReturnValue value must set the currRetValue value.

                              For example, change the following:

                              $.setReturnValue({ err: true, retVal: data }); 

                              To the following:

                              currRetValue={ err: true, retVal: data };
                              1. If setReturnValue returns the current function, then change the following for example:

                                $.setReturnValue({ err: true, retVal: data });
                                return;

                                To the following:

                                currRetValue={ err: true, retVal: data };
                                return currRetValue; 
                              2. If setReturnValue passes the value to the next $.callback, then change the following:

                                $.setReturnValue({ err: true, retVal: data });
                                . . . //some code branch $.callback(this, function(retObj) {
                                . . . //some code in call back
                                });

                                To the following:

                                currRetValue={ err: true, retVal: data };
                                . . . //some code branch
                                retObj = currRetValue;
                                . . . //some code in call back 
                            4. All calls to the asynchronous function must receive the synchronous value.

                              For example, change the following:

                              asyncFunc(args); 

                              To the following:

                              currRetValue=asyncFunc(args); 
                            5. Remove all $.callbacks, for example, as follows:

                              someAsyncFunc();
                              $.callback(scope, function(retObj) {
                              ...//some code in call back
                              });
                              1. If there is a retObj argument, then change the $.callback to the following for example:

                                currRetValue=someAsyncFunc();
                                retObj=currRetValue;
                                ...//some code in call back
                              2. If there is no retObj argument, then change the $.callback from the following:

                                someAsyncFunc();
                                $.callback(scope, function() {
                                ...//some code in call back
                                });

                                To the following:

                                currRetValue=someAsyncFunc();
                                ...//some code in call back 
                              3. Most $.callback functions take an argument with the retObj name, but if the argument has a different retObj name, then declare a new local variable for example as follows:

                                var someOtherRetObj = currRetValue; 
                              4. If the $.callback function is a handler, then change the following for example:

                                someAsyncFunc();
                                $.callback(this, doneHandler); 

                                To the following:

                                currRetValue=someAsyncFunc();
                                retObj=currRetValue;
                                currRetValue=doneHandler.call(this,retObj)
                            6. Remove nested functions in asynchronous functions.

                              • Reuse currRetValue/retObj in nested functions.

                              • Replace nested functions using $.setReturnValue and $.callback with currRetValue/retObj.

                              For example, migrate the following:

                              BusComp.prototype.SetFieldValueX = function (fieldName, fieldData, bSkipValidate, 
                              bSkipMvgCheck, bSkipED) {
                              
                                            if (this.IsDeletePending()) { 
                                                this.WriteRecord(); 
                                                $.callback(this,function(retObj){ 
                                                    if(retObj.err){ 
                                                        $.setReturnValue(retObj);//sync:remove:continue
                                                    }else{ 
                                                      
                              SetFieldValueUpdate.call(this,fieldName,bPicked,fieldData);
                                                    } 
                                                }); 
                                            }else{ 
                                                 SetFieldValueUpdate.call(this,fieldName,bPicked,fieldData); 
                                            } 
                                            $.callback(this, function (retObj) { 
                                                if(!retObj.err){ 
                                                     
                              SetFieldValuePostCall.call(this,fieldName,bPicked,inputObj,psInputArgs); 
                                                    $.callback(this,function(retObj){
                                                        $.setReturnValue(retObj);
                                                    }); 
                                                }else{ 
                                                    $.setReturnValue(retObj);
                                                } 
                                            });   
                                      } 
                              

                              To the following:

                              BusComp.prototype.SetFieldValueX = function (fieldName, fieldData, bSkipValidate, bSkipMvgCheck, bSkipED) {
                              
                                     var currRetValue={err:false}, retObj;
                                        if (this.IsDeletePending()) {
                                            currRetValue=this.WriteRecord();
                                            retObj=currRetValue;
                                            //$.callback(this,function(retObj){ 
                                                if(retObj.err){ 
                                                    currRetValue=(retObj); 
                                                }else{ 
                                                     
                              currRetValue=SetFieldValueUpdate.call(this,fieldName,bPicked,fieldData);
                                                } 
                                            //}); 
                                        }else{ 
                                             
                              currRetValue=SetFieldValueUpdate.call(this,fieldName,bPicked,fieldData);
                                        } 
                                        retObj=currRetValue; 
                                        //$.callback(this, function (retObj) { 
                                            if(!retObj.err){ 
                                                 
                              currRetValue=SetFieldValuePostCall.call(this,fieldName,bPicked,inputObj,psInputArgs);
                                                retObj=currRetValue; 
                                                currRetValue=(retObj); 
                                            }else{ 
                                                currRetValue=(retObj); 
                                            } 
                                        //});  
                                         return(currRetValue); 
                                  }
                              

                              Porting Siebel Server Scripts to Browser Side JavaScript

                              This topic introduces the eScript Porting tool (escriptporter.exe) for porting Siebel Server-side scripts from the database to the Siebel Mobile disconnected client in offline mode. Using this tool eliminates the need to invest time in converting the existing server-side online customizations (originally done using eScript) to offline JavaScript services.

                              The steps involved in porting Siebel Server-side scripts to browser side JavaScript, (shown in the following image, are as follows:

                              1. Run the eScript Porting tool against the Siebel database. The eScript Porting tool executes SQL queries to extract server scripts for the following:

                                • Events defined for the applet, business component, business object and application.

                                • Business service methods.

                                For more information about the SQL queries that the eScript Porting tool executes, see Using the eScript Porting Tool.

                              2. The (extracted) escripts are stored in a format which registers them into the Siebel Mobile disconnected framework.

                                A format template file is used for the application, applet, and business component and another format template file is used for business component


                              Porting Siebel Server scripts to browser side JavaScript

                                Using the eScript Porting Tool

                                escriptporter.exe is located in the siebsrvr/BIN folder. For example:

                                $SIEBEL_ROOT\bin\escriptporter.exe
                                

                                The environment variable SIEBEL_REPOSITORY, which defines the repository to be extracted, must be set before running escriptporter.exe. For example:

                                Set SIEBEL_REPOSITORY=Siebel Repository
                                

                                escriptporter.exe uses the following command arguments:

                                /U Username (Required)
                                /P Password (Required) 
                                /C ODBC Data Source (Default Environment Variable: SIEBEL_DATA_SOURCE)
                                /D Siebel Table Owner (Default Environment Variable: SIEBEL_TABLE_OWNER)
                                /O OutputDir (Default: escripts) 
                                /G Language (Default: ENU) 
                                /W Siebel Application Interface Dir
                                

                                where:

                                • /U username is the user name used to log in to the database.

                                • /P Password is the password used to log in to the database.

                                • /C ODBC Data Source is the database to log in to.

                                • /D Siebel Table Owner is the table owner who owns Siebel tables.

                                • /O OutputDir is the path where exported escripts are stored.

                                • /G Language is the language the log will use.

                                • /W Siebel Application Interface Dir is the path where eapps are located.

                                  Defining Filters for the eScript Porting Tool

                                  The eScript Porting tool command is located in $SIEBEL_ROOT\escriptTmpl.

                                  Filters are defined for applications, applets, business components, and business services in the escriptporter.cfg file as follows:

                                  • Application filters are defined in the APPLICATIONS section of escriptporter.cfg.

                                  • Applet filters are defined in the APPLETS section of escriptporter.cfg.

                                  • Business component filters are defined in the BUSCOMPS section of escriptporter.cfg.

                                  • Business service filters are defined in the BUSSVCS section of escriptporter.cfg.

                                  You define a filter using either the exact name of the filter or a name pattern.

                                  Exact Name Filter

                                  The syntax for defining a filter using the exact name of the filter is as follows:

                                  • Filter_Name X = name

                                    Filter_Name is the prefix and X is a number, starting from 1. The name value is the name of application, applet, business component, or business service

                                  • Filter_NameListFile = filename

                                    Filename is the file containing the names of the applications, applets, business components, or business services. Each line in the file defines a name, for example, as follows:

                                    SAP 4x Account - SAP Maps (MO) Send AlertOnline eMail

                                    The file name can use a relative path or an absolute path. If using a relative path, then $siebroot\escriptTmpl\ is appended to the relative path.

                                  Name Pattern Filter

                                  The syntax for defining a filter using a name pattern (SQL format) is as follows:

                                  Filter_SqlNamePattern[X] = name pattern
                                  

                                  Filter_Name is the prefix. X is a number, starting from 1 (if there is a number). The name pattern value must be in SQL format.

                                  Example escriptporter.cfg File

                                  An example of an escriptporter.cfg file is as follows:

                                  [APPLICATIONS] 
                                   Filter_Name1= Siebel ePharma Mobile 
                                  
                                  [APPLETS] 
                                   Filter_SqlNamePattern = "Mobile" 
                                  
                                  [BUSCOMPS] 
                                   Filter_Name1= Account 
                                   Filter_Name2= Account Attachment 
                                   Filter_SqlNamePattern = "Account" 
                                  
                                  [BUSSVCS] 
                                   Filter_Name1= Quote - SAP 47 Maps 
                                   Filter_Name2= Send AlertOnline eMail 
                                   Filter_SqlNamePattern = "Order Maps" 
                                   Filter_SqlNamePattern = "Account" 
                                   Filter_NameListFile = service.txt 
                                  

                                    Example SQL Query Scripts

                                    This topic shows some example SQL queries that escriptporter.exe (eScript Porting tool) executes to extract the server-side scripts from the Siebel database.

                                    Example SQL for Querying Application Events

                                    The table owner and hard coded parameter values in the following example SQL for querying application events are replaceable.

                                    DM_GET_APPL_ESCRIPT = 
                                      SELECT app.NAME,script.Name scriptName, script.SCRIPT 
                                      FROM S_APPL_SCRIPT script, 
                                           S_APPLICATION app 
                                      WHERE app.ROW_ID = script.APPLICATION_ID 
                                        AND script.PROG_LANG = 'JS'
                                        AND app.REPOSITORY_ID = (SELECT ROW_ID FROM DATAQ1.S_REPOSITORY WHERE NAME = 'Siebel Repository') 
                                        AND app.INACTIVE_FLG = 'N' 
                                        AND script.INACTIVE_FLG = 'N';  
                                     / 
                                    

                                    Example SQL for Querying Applet Events

                                    The table owner and hard coded parameter values in the following example SQL for querying applet events are replaceable.

                                    DM_GET_APPLET_ESCRIPT = 
                                      SELECT applet.Name appletName,script.Name scriptName,script.SCRIPT
                                      FROM DATAQ1.S_APPL_WEBSCRPT  script,
                                           DATAQ1.S_APPLET applet
                                      WHERE script.APPLET_ID = applet.ROW_ID
                                        AND script.PROG_LANG = 'JS' 
                                        AND applet.REPOSITORY_ID = (SELECT ROW_ID FROM DATAQ1.S_REPOSITORY WHERE NAME = 'Siebel Repository') 
                                        AND applet.INACTIVE_FLG = 'N' 
                                        AND script.INACTIVE_FLG = 'N'; 
                                     / 
                                    

                                    Example SQL for Querying Business Component Events

                                    The table owner and hard coded parameter values in the following example SQL for querying business component events are replaceable.

                                    DM_GET_BUSCOMP_ESCRIPT = 
                                      SELECT buscomp.NAME bcName,script.Name scriptName, script.SCRIPT
                                      FROM S_BUSCOMP_SCRIPT script, 
                                           S_BUSCOMP buscomp 
                                      WHERE buscomp.ROW_ID = script.BUSCOMP_ID 
                                        AND script.PROG_LANG = 'JS' 
                                        AND buscomp.REPOSITORY_ID = (SELECT ROW_ID FROM DATAQ1.S_REPOSITORY WHERE NAME = 'Siebel Repository') 
                                        AND buscomp.INACTIVE_FLG = 'N' 
                                        AND script.INACTIVE_FLG = 'N'; 
                                    / 
                                    

                                    Example SQL for Querying Business Service Events

                                    The table owner and hard coded parameter values in the following example SQL for querying business service events are replaceable.

                                    DM_GET_SERVICE_ESCRIPT = 
                                      SELECT service.NAME svcName ,script.Name scriptName, script.SCRIPT 
                                      FROM S_SERVICE_SCRPT script, 
                                           S_SERVICE service 
                                      WHERE service.ROW_ID   = script.SERVICE_ID 
                                        AND script.PROG_LANG = 'JS'  
                                        AND service.REPOSITORY_ID = (SELECT ROW_ID FROM DATAQ1.S_REPOSITORY WHERE NAME = 'Siebel Repository') 
                                        AND service.INACTIVE_FLG = 'N' 
                                        AND script.INACTIVE_FLG = 'N'; 
                                    / 
                                    

                                      Supported Offline APIs

                                      This topic lists the offline APIs supported by escriptporter.exe, the eScript Porting tool. Some objects and functions used in the Siebel Server-side script are missing or different in the Siebel Mobile disconnected framework. For a complete list of unsupported functions, see Unsupported Offline APIs.

                                      The technologies you can use to access the object interface methods include the following:

                                      • Applet Methods

                                      • Application Methods

                                      • Business Component Methods

                                      • Business Object Methods

                                      • Business Service Methods

                                      • Control Methods

                                      • Property Set Methods

                                      • Micellaneous Methods

                                      Applet Methods

                                      You can use the following technologies to access applet object interface methods. You can use an applet object interface method only with Server Script and Browser Script.

                                      • ActiveMode Method for an Applet

                                      • BusComp Method for an Applet

                                      • BusObject Method for an Applet

                                      • FindActiveXControl Method for an Applet

                                      • FindControl Method

                                      • Examples of Using the FindControl Method

                                      • Name Method for an Applet

                                      For more information about each of these applet methods, see Siebel Object Types Reference.

                                      Application Methods

                                      You can use the following technologies to access application methods.

                                      • ActiveApplet Method for an Application

                                      • ActiveBusComp Method for an Application

                                      • ActiveBusObject Method for an Application

                                      • ActiveViewName Method for an Application

                                      • Attach Method for an Application

                                      • CurrencyCode Method for an Application

                                      • Detach Method for an Application

                                      • EnableExceptions Method for an Application

                                      • FindApplet Method for an Application

                                      • GetBusObject Method for an Application

                                      • GetLastErrCode Method for an Application

                                      • GetLastErrText Method for an Application

                                      • GetService Method for an Application

                                      • GotoView Method for an Application

                                      • InvokeMethod Method for an Application

                                      • Language Method for an Application

                                      • Called only with InvokeMethod

                                      • LoadObjects Method for an Application

                                      • Login Method for an Application

                                      • LoginId Method for an Application

                                      • LoginName Method for an Application

                                      • Logoff Method for an Application

                                      • Name Method for an Application

                                      • NewPropertySet Method for an Application

                                      • PositionId Method for an Application

                                      • PositionName Method for an Application

                                      • ShowModalDialog Method for an Application

                                      • SWEAlert Method for an Application

                                      For more information about each of these application methods, see Siebel Object Types Reference.

                                      Business Component Methods

                                      You can use the following technologies to access business component methods. You cannot use these methods with the Web Client Automation Server.

                                      • ActivateField Method for a Business Component

                                      • ActivateMultipleFields Method for a Business Component

                                      • Associate Method for a Business Component

                                      • BusObject Method for a Business Component

                                      • ClearLOVCache Method for a Business Component

                                      • Called only with InvokeMethod

                                      • ClearToQuery Method for a Business Component

                                      • CreateFile Method for a Business Component

                                      • Called only with InvokeMethod

                                      • DeactivateFields Method for a Business Component

                                      • DeleteRecord Method for a Business Component

                                      • ExecuteQuery Method for a Business Component

                                      • FirstRecord Method for a Business Component

                                      • GenerateProposal Method for a Business Component

                                      • Called only with InvokeMethod

                                      • GetAssocBusComp Method for a Business Component

                                      • GetFieldValue Method for a Business Component

                                      • GetFile Method for a Business Component

                                      • Called only with InvokeMethod

                                      • GetLastErrCode Method for a Business Component

                                      • GetLastErrText Method for a Business Component

                                      • GetMultipleFieldValues Method for a Business Component

                                      • GetPicklistBusComp Method for a Business Component

                                      • GetSearchExpr Method for a Business Component

                                      • GetSearchSpec Method for a Business Component

                                      • GetSortSpec Method for a Business Component

                                      • GetUserProperty Method for a Business Component

                                      • GetViewMode Method for a Business Component

                                      • InvokeMethod Method for a Business Component

                                      • Name Method for a Business Component

                                      • NewRecord Method for a Business Component

                                      • NextRecord Method for a Business Component

                                      • ParentBusComp Method for a Business Component

                                      • Pick Method for a Business Component

                                      • PutFile Method for a Business Component

                                      • Called only with InvokeMethod

                                      • RefreshBusComp Method for a Business Component

                                      • Called only with InvokeMethod

                                      • RefreshRecord Method for a Business Component

                                      • Called only with InvokeMethod

                                      • Release Method for a Business Component

                                      • SetAdminMode Method for a Business Component

                                      • Called only with InvokeMethod

                                      • SetFieldValue Method for a Business Component

                                      • SetMultipleFieldValues Method for a Business Component

                                      • SetSearchExpr Method for a Business Component

                                      • SetSearchSpec Method for a Business Component

                                      • SetSortSpec Method for a Business Component

                                      • SetViewMode Method for a Business Component

                                      • UndoRecord Method for a Business Component

                                      • WriteRecord Method for a Business Component

                                      For more information about each of these business component methods, see Siebel Object Types Reference.

                                      Business Object Methods

                                      You can use the following technologies to access business object methods. You cannot use these methods with the Web Client Automation Server.

                                      • GetBusComp Method for a Business Object

                                      • GetLastErrCode Method for a Business Object

                                      • GetLastErrText Method for a Business Object

                                      • Name Method for a Business Object

                                      • Release Method for a Business Object

                                      For more information about each of these business object methods, see Siebel Object Types Reference.

                                      Business Service Methods

                                      You can use the following technologies to access business service methods.

                                      • InvokeMethod Method for a Business Service

                                      • Name Method for a Business Service

                                      • Release Method for a Business Service

                                      For more information about each of these business service methods, see Siebel Object Types Reference.

                                      Control Methods

                                      You can use the following control methods. You can use these methods only with Browser Script:

                                      • Applet Method for a Control

                                      • BusComp Method for a Control

                                      • GetProperty Method for a Control

                                      • GetValue Method for a Control

                                      • Name Method for a Control

                                      • SetLabelProperty Method for a Control

                                      • SetProperty Method for a Control

                                      • SetValue Method for a Control

                                      For more information about each of these control methods, see Siebel Object Types Reference.

                                      Property Set Methods

                                      You can use the following technologies to access property set methods.

                                      • AddChild Method for a Property Set

                                      • Copy Method for a Property Set

                                      • GetByteValue Method for a Property Set

                                      • GetChild Method for a Property Set

                                      • GetChildCount Method for a Property Set

                                      • GetFirstProperty Method for a Property Set

                                      • GetLastErrCode Method for a Property Set

                                      • GetLastErrText Method for a Property Set

                                      • GetNextProperty Method for a Property Set

                                      • GetProperty Method for a Property Set

                                      • GetPropertyCount Method for a Property Set

                                      • GetType Method for a Property Set

                                      • GetValue Method for a Property Set

                                      • InsertChildAt Method for a Property Set

                                      • PropertyExists Method for a Property Set

                                      • RemoveChild Method for a Property Set

                                      • RemoveProperty Method for a Property Set

                                      • Reset Method for a Property Set

                                      • SetByteValue Method for a Property Set

                                      • SetProperty Method for a Property Set

                                      • SetType Method for a Property Set

                                      • SetValue Method for a Property Set

                                      For more information about each of these property set methods, see Siebel Object Types Reference.

                                      Miscellaneous Methods

                                      You can use the following technologies to access other methods that you can use.

                                      • GetErrorCode Method

                                      • GetErrorMessage Method

                                      • TheApplication Method

                                      Note: You cannot use these methods with the following technologies: Web Client Automation Server, Mobile Web Client Automation Server, COM Data Control, and COM Data Server.

                                      For more information about each of these miscellaneous methods, see Siebel Object Types Reference.

                                        Unsupported Offline APIs

                                        This topic lists the offline APIs that are not supported by escriptporter.exe, the eScript Porting tool. Some objects and functions used in the Siebel Server-side script are not implemented in the Siebel Mobile disconnected framework. Any function invoked that is not supported shows a pop-up message saying This function is not supported.

                                        For more information about the technologies you cannot use to access the object interface methods, see the following:

                                        • Application Methods

                                        • Business Component Methods

                                        • Business Service Methods

                                        • Buffer Lib Methods

                                        • SELib Methods

                                        • CLib Methods

                                        • Global Mehods

                                        Application Methods

                                        The following technologies are not supported to access application methods:

                                        • GetDataSource Method for an Application

                                        • GetProfileAttr Method for an Application

                                        • GetSharedGlobal Method for an Application

                                        • IsViewReadOnly Method for an Application

                                        • LoadUserAttributes Method for an Application

                                        • LookupMessage Method for an Application

                                        • LookupValue Method for an Application

                                        • RaiseError Method for an Application

                                        • RaiseErrorText Method for an Application

                                        • SetPositionId Method for an Application

                                        • SetPositionName Method for an Application

                                        • SetProfileAttr Method for an Application

                                        • SetSharedGlobal Method for an Application

                                        • Trace Method for an Application

                                        • TraceOff Method for an Application

                                        • TraceOn Method for an Application

                                        Business Component Methods

                                        The following technologies are not supported to access business component methods:

                                        • ExecuteQuery2 Method for a Business Component

                                        • FirstSelected Method for a Business Component

                                        • GetFormattedFieldValue Method for a Business Component

                                        • GetMVGBusComp Method for a Business Component

                                        • GetNamedSearch Method for a Business Component

                                        • LastRecord Method for a Business Component

                                        • NextSelected Method for a Business Component

                                        • PreviousRecord Method for a Business Component

                                        • RefineQuery Method for a Business Component

                                        • SetFormattedFieldValue Method for a Business Component

                                        • SetNamedSearch Method for a Business Component

                                        • SetUserProperty Method for a Business Component

                                        Business Service Methods

                                        The following technologies are not supported to access business service methods:

                                        • GetFirstProperty Method for a Business Service

                                        • GetNextProperty Method for a Business Service

                                        • GetProperty Method for a Business Service

                                        • PropertyExists Method for a Business Service

                                        • RemoveProperty Method for a Business Service

                                        • SetProperty Method for a Business Service

                                        Buffer Lib Methods

                                        The following technologies are not supported to access buffer lib methods:

                                        • Buffer

                                        • getString

                                        • getValue

                                        • offset[]

                                        • putString

                                        • putValue

                                        • subBuffer

                                        • toString

                                        SELib Methods

                                        The following technologies are not supported to access SELib methods:

                                        • dynamicLink

                                        • peek

                                        • pointer

                                        • poke

                                        CLib Methods

                                        The following technologies are not supported to access CLib methods:

                                        • memchr

                                        • memcmp

                                        • memcpy

                                        • memmove

                                        • memset

                                        • isalnum

                                        • isalpha

                                        • isascii

                                        • iscntrl

                                        • isdigit

                                        • isgraph

                                        • islower

                                        • isprint

                                        • ispunct

                                        • isspace

                                        • isupper

                                        • isxdigit

                                        • toascii

                                        • clearerr

                                        • perror

                                        • strerror

                                        • chdir

                                        • getcwd

                                        • fclose

                                        • feof

                                        • fflush

                                        • fgetc

                                        • getc

                                        • fgetpos

                                        • fgets

                                        • fopen

                                        • fprintf

                                        • fputc

                                        • putc

                                        • fputs

                                        • fread

                                        • freopen

                                        • fscanf

                                        • fseek

                                        • fsetpos

                                        • ftell

                                        • fwrite

                                        • mkdir

                                        • remove

                                        • rename

                                        • rewind

                                        • rmdir

                                        • sscanf

                                        • mpfile

                                        • tmpnam

                                        • ngetc

                                        • cosh

                                        • div ldiv

                                        • frexp

                                        • ldexp

                                        • modf

                                        • rand

                                        • sinh

                                        • srand

                                        • tanh

                                        • rsprintf

                                        • sprintf

                                        • strchr

                                        • strcspn

                                        • stricmp

                                        • strcmpi

                                        • strlwr

                                        • strncat

                                        • strncmp

                                        • strncmpi

                                        • strnicmp

                                        • strncpy

                                        • strpbrk

                                        • strrchr

                                        • strspn

                                        • strstr

                                        • strstri

                                        • asctime

                                        • clock

                                        • difftime

                                        • gmtime

                                        • localtime

                                        • mktime

                                        • tmpnam

                                        • bsearch

                                        • getenv

                                        • putenv

                                        • qsort

                                        • system

                                        • atof

                                        • atoi

                                        • atol

                                        • fmod

                                        • strcat

                                        • strcmp

                                        • strcpy

                                        • strlen

                                        • strlwr

                                        • strtod

                                        • strtol

                                        • strupr

                                        • tolower

                                        • toupper

                                        Global Methods

                                        The following technologies are not supported to access global methods:

                                        • COMCreateObject

                                        • undefine