You are on page 1of 40

ADVANCED SUPPLY CHAIN PLANNING Troubleshooting Guide

Author: Creation Date: Last Updated: Control Number: Version:

Oracle Advanced Planning Development July 21, 2000 March 13, 2002 ascp_troubleshootingguide_v18_13mar02.doc 1.8

NOTE: The following information is confidential and is for internal use only.

Document Control
Change Record

Date 21-July-00 1-Aug-00 2-Aug-00 15-Aug-00 04-Apr-01 07-Nov-01 13-Feb-02 28-Feb-02 13-Mar-02

Author Sophia Lee Sophia Lee Sophia Lee Sophia Lee Jignesh Mehta Francois Gerbaux Sam Tupe Moshin Lee Francois Gerbaux

Version 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8

Change Reference No previous document Added Sridhar L and Sridhar H. comments on format Added HLS Error Messages, Sridhar L. and Sam Tupes edits Added UI Technology Notes from Jignesh Mehta and PWB tips Added TCF Server Administration guide Updated planning engine section for scheduler Updating release issus across operating units Minor wording edits Updated scheduler section for patchset G

Reviewers

Name Sridhar Lakshminarayanan Sridhar Hoskote Paul Dominic Scott Malcolm Shailesh Kumar

Team and Position Planning - Development Manager Planning - QA Manager Planning - QA Manager Planning - Group Manager Planning UI/ATP Development Manager

Contributors

Name Sridhar Lakshminarayanan Sridhar Hoskote Paul Dominic Scott Malcolm Sam Tupe Mukundan Srinivasan Francois Gerbaux Jerome Levadoux Murari Ram Jignesh Mehta

Team and Position Planning - Development Manager Planning - QA Manager Planning - QA Manager Planning - Group Manager Planning - Sr. Project Lead Planning - Project Lead Planning - Development manager Planning - Sr. Application Engineer Planning - Sr. QA Analyst Planning/ATP Sr. Applications Engineer

Document Control Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

ii

Contents

Document Control.............................................................................................................................ii General Guideline ............................................................................................................................. 1 Instances Setup ................................................................................................................................. 2 Source & Destination Relationship............................................................................................ 2 Partitions........................................................................................................................................... 3 Creating Partitions ................................................................................................................ 3 Collections ........................................................................................................................................ 4 Problem Accessing Forms from the Navigator with ASCP Responsibility ........................... 4 Collections Program Failed / Exited with Fatal Error ........................................................... 4 Collections Program Finished with Warning ........................................................................ 4 Collections Program Setup ........................................................................................................ 4 SNP: Snapshots on Source Instance: APS Source Snapshot Diagnostics .................................. 5 User Interface Technology................................................................................................................ 6 Workflow and Java Bean Technology within APS.................................................................... 6 Gantt Chart ................................................................................................................................ 6 Horizontal Plan .......................................................................................................................... 7 Perspectives Chart ..................................................................................................................... 7 Deployment................................................................................................................................ 8 Planner Workbench Tips ........................................................................................................... 8 UI Technology FAQs................................................................................................................. 9 Planning Engine .............................................................................................................................. 10 Debugging Procedures............................................................................................................. 10
Debug mode..................................................................................................................................... 10 Signals 6, 10, 11, 113, etc............................................................................................................ 10 Generating data files ........................................................................................................................ 10 Generating data files - alternative procedure 1 ................................................................................ 11 Generating data files - alternative procedure 2 ................................................................................ 11

Plan Failed / Exited with Fatal Error .................................................................................. 12


Total cycle time of the demands ...................................................................................................... 12 Arithmetic overflow when using large integer factor....................................................................... 12 Setup of aggregate resources in the routings ................................................................................... 13 Network flow is incomplete............................................................................................................. 13 Maximum energy overflow.............................................................................................................. 14 Maximum activity duration ............................................................................................................. 14 Overflow on granularity precision and maximum activity duration ................................................ 14 Manager saved solution ................................................................................................................... 15 Running Plans Concurrently:........................................................................................................... 15 Collection Running: ........................................................................................................................ 15 Error Message: CPLEX Error 32011: Licensing Problem: corrupted or nonexistent license file -15 Make sure to set MSC:HOUR_UOM to HR in Profile Options. ................................................. 15 Make sure to set Retain dates within calendar boundary to Yes in Profile Options. ................ 16 Make sure UOM - Referential Integrity........................................................................................... 16
Document Control Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only iii

Make sure Unit# - Referential Integrity........................................................................................... 16

Plan Finished with Warning ................................................................................................ 16


Incorrect setup for alternates and simultaneous............................................................................... 16

Incorrect results ....................................................................................................................... 16


Orders are being pushed out of the planning horizon ...................................................................... 16 Orders scheduled earlier than their due date.................................................................................... 17 Requirements are scheduled out of shifts ........................................................................................ 17 Orders are late.................................................................................................................................. 17

Plan Hanging / Poor Performance ....................................................................................... 18 Patch Application Issues.......................................................................................................... 18


ILOG Planner library patch not applied .......................................................................................... 18 Failure to relink MSONEW............................................................................................................. 18 Patch 1988819 ................................................................................................................................. 19 Patch 1638977 (or 1645431 for NT) ............................................................................................... 19 Patch 1851016 for HP only ............................................................................................................. 20

Autorelease/Release Issues with Operating Units ........................................................................... 21 TCF Server Administration............................................................................................................. 23

ServerControl Usage............................................................................................................. 23 Starting a TCF Server........................................................................................................... 24 ServerControl vs SocketServer........................................................................................ 24 Checking the Status of a TCF Server ........................................................................... 25 Shutting Down a TCF Server ........................................................................................... 25 Updating a TCF Server........................................................................................................ 26 TCF Configuration Options .............................................................................................. 27 Troubleshooting the TCF server ..................................................................................... 30
Appendix A: Primary and Alternate Resource Setup...................................................................... 34 Appendix B: Online Planning - Simulation Options ....................................................................... 36

Document Control Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

iv

General Guideline
When an error occurs, do the following to get a more descriptive log file: 1. 2. 3. Turn Debug on Rerun the Plan Use error information in log file to resolve issues

General Guideline Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

Instances Setup

This section covers instances related setup.

Source & Destination Relationship


Each source instance can be planned with only one destination. On the other hand, each destination instance can collect from multiple source instances.

Instances Setup Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

Partitions

This section covers questions pertaining to APS partitions.

Creating Partitions
When do I use the concurrent program Create APS Partitions? You need to run the "Create APS Partitions" concurrent program to create partitions before you can create and run a plan. Number of Instance Partitions should be set to the number of source instances you will be collecting from. What is the purpose of the profile option "MSC:Share Plan Partitions"? The profile option "Share MSC Partitions" was added as a workaround for test/demo scenarios where you expect a lot of plans to be created by different testers and demoers. This profile option should be set to No for production use. If you do decide to enable it, then the "number of plan partitions" parameter to the concurrent program mentioned above becomes irrelevant, since we only create one partition for plans (you can enter 1 just to be safe). NOTE: If the MSC:Share Plan Partitions profile is set to Yes, you need to run theCreate APS Partitions concurrent program afterwards so that it can create the partition that every plan will share. The following Technical Note available from Metalink provides a detailed explanation on Partition Management in APS: 137293.1

Partitions Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

Collections
This section contains troubleshooting recommendations for the collections process.

Problem Accessing Forms from the Navigator with ASCP Responsibility


FRM-41830: List of values contains no entries: You need to run collections before you can access the forms on ASCP.

Collections Program Failed / Exited with Fatal Error


Failed in Data Pull: Invalid num type/data type - You have mismatched data types between your Source and Destination (Planning). In this case, make sure you validate that the APS Flex Fields Profile Options are actually pointing to unused flex columns. This failure in Data Pull could be a result of using a descriptive flex which was already used or has incorrect values. To correct this: Determine which attribute column is the problem; Correct the flex; Make sure the corresponding profile is corrected to point to the right descriptive flex. Failed in Refresh Snapshot: The collections program has a built-in Source Refresh Snapshot function. However, if someone other than you ran a manual Refresh Snapshot in the source instance the last time, and then you try to run Collections, it will fail due unmatched user names. Make sure to set the profile option MRP_Cutoff_Offset_Months in the destination to cover your planning period.

Collections Program Finished with Warning


Warning Message: Warning - Unique constraint violated for operation_resource_seq Ignore this warning, it will not affect the plan in any way.

Collections Program Setup


Make sure that every parameter is set to Yes in Complete Refresh unless you want to wipe off some data intentionally. For example, if you set BOM:No, all BOM data previously collected will be purged.
Collections Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only 4

Supplier Capacity cannot be set up in source and collected to destination (planner server) if you are running a 10.7 or 11 source instance. It, however, can be set up in your destination (i.e., Collection Workbench) prior to launching plans.

SNP: Snapshots on Source Instance: APS Source Snapshot Diagnostics


Metalink Note.137491.1 explains the use and maintenance of Snapshots and Snapshots logs related to APS.

Collections Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

User Interface Technology


This section contains troubleshooting tips for the ASCP User Interface (UI). Specific topics including Workflow and Java Bean Technology within APS, Gantt Chart, Horizontal Plan, Perspectives Chart, Deployment, and FAQ.

Workflow and Java Bean Technology within APS


BeanArea is a new element in Forms6.0. It is intended to replace the 'userarea' element that has been used in Forms4.5. In addition to the existing support of java applets with userarea in Forms4.5, this new element also makes it possible to add Java beans into WebForms. Please also note that: 1. 2. BeanArea is only available and functional in Forms6.0. BeanArea is only functional in WebForms.

A beanarea is a visible UI element inside a form, designed to have an applet running inside it. You can also have a beanarea that is designed to manage and manipulate multiple applets that run in their own separate frames. The following diagram displays different Java modules within APS.

Forms 6i Technology. APS User Interface Java beans

Gantt Chart

Horizontal Plan

Perspectives Chart

Gantt Chart
1. The Gantt Chart has been implemented as Java bean within a form which can be used to view activities in a resource-centric or order-centric fashion. After the user makes changes in the Gantt chart view, we issue a re-plan. During on-line planning, the following user changes are supported: Supply.
User Interface Technology Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only 6

2.

Demand. Resource Availability. Resource Requirements. Supplier capacity.

Gantt Chart technology is based on the Java component provided by AOL which is called FNDGANTT. Hence, the APS Gantt chart depends on the following FND jar files: fndgantt.jar fndpromise.jar fndjle.jar fndswing.jar fndewt.jar

3. 4.

The APS Gantt chart customizations reside in the mscjar.jar file. The Gantt Chart is available from the Planner Workbench.

Horizontal Plan
1. 2. The horizontal plan has been implemented as Java bean within a form. It can be used to view the Material Horizontal Plan, the Resource Horizontal Plan, and the Supplier Horizontal Plan. The horizontal plan is useful for viewing data in a combination of levels of time buckets (day, week, period). The horizontal plan bean is a customization of the Java component called PivotTable developed by the Bali group at Oracle. APS Horizontal plan bean resides in the mscjar.jar file and is depends on the following FND jar files: 4. fndswing.jar fndewt.jar fndewtpv.jar fndtdg.jar (ewttdg.jar from 11.5.5)

3.

The horizontal plan is viewable from the Planner Workbench.

Perspectives Chart
1. 2. Perspectives for Java is a charting tool used to draw different type of charts in the Planner Workbench. Charts are available in the Planner Workbench for following views:
User Interface Technology Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only 7

3. 4.

Key Performance Indicators (KPIs). Horizontal Plan. Vertical Plan Actions

The FND jar file fndtdg.jar is required for APS charts. APS charts reside in mscjar.jar

Deployment
1. All WebForms (Forms6i) have been implemented as Java layers. They are hence deployed as jar files on the client. Jar file loading is very fast compared to the loading of Java classes themselves. Jar file source location: 3. All FND jar files are located under $FND_TOP/java/jar/ All APS jar files are located under $MSC_TOP/java/jar/

2.

Runtime location of jar files: All FND jar files are located under /OA_JAVA/oracle/apps/fnd/jar/ All APS jar files are located under /OA_JAVA/oracle/apps/msc/jar/

Planner Workbench Tips


User-Defined PWB: You can navigate to Tools/Preferences/Other to set up your default display/preferences. You have the following options: Category Set (e.g., Inventory, Product Family) Snapshot Start Date/Time Plan Start Date/Time View Recommendations for (Days from Today) Default Left Tab (Actions, Organizations, Items, Resources, Projects) Default Right Tab (Key Indicators, Actions, Supply Chain)

User Interface Technology Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

UI Technology FAQs
Problem: After selecting a node on the left panel of the planner workbench, the right panel of the workbench does not show anything (blank screen). Alternatively, workbench performance is very slow. Causes/Resolution Actions: If you are launching the workbench for the first time after applying any patch or after bringing up the environment, the application will load the new jar files which may cause some delay in displaying the workbench. This happens only at the first launch of the workbench. Make sure MSC tables are analyzed. Make sure jar files are placed in the correct directory for the run time environment as mentioned above.

Problem: Java exception. Causes/Resolution Actions: Security exception when you log in: Make sure your Jinitiator's Applet access is set to unrestricted. In such cases, close all of your browser windows, open the Jinitiator control panel, set access to unrestricted, apply this setting, and open Oracle Applications again. Class verify error: Ask FND to provide the correct version of jar files. Null pointer exceptions: For the horizontal plan, make sure that you have selected at least one order type to be displayed in the Preferences window. Make sure all of your database objects are valid.

Problem: TCF connection fails. Causes/Resolution Actions: Make sure the profile values for TCF, TCF:HOST and TCF:PORT are set correctly. Please see the TCF Administration section of this guide. In most Java exceptions, it is very helpful to have information on Jinitiators Java console as well as information within the relevant log file. For example, if there is a TCF issue, it you should check the TCF log file as well as the Jinitiator Java console. Forms 6i is a web form technology. All forms are laid out using Java. If there is anything wrong at the form level, you will see a Java error message. This may not mean that there is anything wrong with Java. It is most likely a forms bug or error. It is very important to ascertain the exact navigation that results in the error.

User Interface Technology Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

Planning Engine
This section contains troubleshooting tips for the ASCP in-memory planning engine.

Debugging Procedures
Debug mode The planning engine will print more information in the log when the debug mode is turned on. This information is in general necessary for debugging. To turn on the debug mode, please set the profile option MRP_DEBUG to Yes. Signals 6, 10, 11, 113, etc The signals reported by the UI are actually operating system messages. Several different errors could result in the same signal. Because of this, it is important to report where the failure is happening as indicated by the log file. Signal 113 This type of signal happens in general in the scheduler. There will always be a message in the log describing the error condition. For example: HLSDriver::readIntraSupplyTransfers Could not find dest operation for network flow transfer transaction id: 1790602 , op seq num: 20 , to op seq num: 30 , supply id: 1790602 , instance id: 21 , routing sequence id: 46806 Signal 10 On Unix, signal 10 is in general caused by some corruption of the executable. There will not be any error message. It may be worth trying to re-link MSONEW, if you get this error. Signal 6 and 11 On Unix signal 6 and 11, are unexpected errors. Please contact development to resolve these. Generating data files The APS planning engine can generate scheduler data files that allows developers to have a complete view of the data used. For Scheduler issues, they are necessary to figure out most problems. Note 1: These files are not generated for unconstrained plans (since the scheduler is not used). Note 2: These files will be overwritten every time a plan is run. So you should make sure that plans will not be run in your environment while you generate these files. Note 3: It is possible for the scheduler to fail even before generating these files. The files have been generated if the string: "> Writing files..." is printed in the log file. Note 4: do not confuse these files by the "snapshot files" generated by the snapshot process.

Planning Engine Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

10

In order to generate these files, please use the following procedure: 1 - create a directory with write permission, on a drive visible by the concurrent manager: mkdir data chmod 777 data 2 - set the profile option: "MSO: HLS flat files path" to the complete path of this directory. For example: /home/fgerbaux/data 3 - Run the plan. This will write .dat, and .out files in the directory Generating data files - alternative procedure 1 If the profile option "MSO: HLS flat files path" is not set (null), the engine will print a directory "data" located in the log directory, if any. So you can also apply the following procedure. 1 - Create a subdirectory called "data" in the log directory. The log directory is in general $APPLCSF/log. It can also be $APPL_TOP/log, or $MSO_TOP/log. 2 - Make sure that permissions are available to write in this directory: chmod 777 data 3 - Run the plan. This will write .dat, and .out files in the directory. Generating data files - alternative procedure 2 You can also generate the data files by running the planner directly from command line. This procedure is slightly more complicated. On Unix systems it is as follows: 1 - Set the environment variable FDWHOAMI to "0,704,20454". This is done either with setenv FDWHOAMI 0,704,20454 or FDWHOAMI=0,704,20454 export FDWHOAMI depending on your shell. 2 - In any directory in which you have write permission, create a subdirectory "data" with write permission. (do not cd into this directory) 3 - Assuming that you have run the snapshot already (which should be the case), and can read the snapshot files, you can directly run the memory based planner using: $MSO_TOP/bin/MSONEW <connect string> 0 Y -d -t <plan_id> (this is 0=zero) <connect string> is the string you would use to connect to the database with sqlplus. For example: apps/apps@apsdev

Planning Engine Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

11

<plan_id> is the id of your plan, which can be found in the first lines of the log file. Or you can select it in the database by: select plan_id from msc_plans where compile_designator='... your plan name ...'

The program should write data files into the sub directory data.

Plan Failed / Exited with Fatal Error


Total cycle time of the demands Messages: "Could not cancel the slacks for demand xxx. Please check that resource requirements are not longer than 2 horizons" "Scheduling forward failed for demand xxx" "Could not calculate exceptions for demand xxx" "Lead time is greater than the scheduling horizon" These messages are usually due to some very large cycle times. This may be due to an error in setting up a routing (with, for example, a very large usage for one requirement). But the duration may also be spread across several requirements. The resource efficiency and utilization factors are used to inflate resource requirements and may also cause this problem. For example, setting both parameters to 0.01 for a resource would in effect multiply the requirement on this resource by 10,000!. The general limitation is that the complete cycle time of the unconstrained plan should be no more than 20 years in duration. Arithmetic overflow when using large integer factor "Solver Error : IlcAddI : overflow at creation of expression : [0..2104000000], [0..2104000000] /opt/oracle/apps/PBS1/mso/11.5.0/bin/MSONEW Program was terminated by signal 6" This error is caused by an arithmetic overflow in the scheduler. The scheduler will convert some of the floating point numbers to integers using an "integer factor" as defined by the profile "MSO: Floating Point Precision". The supplier capacity and the usage for resource requirements are converted to integer using this factor. For example: if you have a usage of 0.0004, you should use a floating point precision of 10000, so that 10000 * 0.0004 = 4 is an integer. However if you have a supply quantity of 1,000,000 it will be multiplied by the same factor, and cause an overflow. The limitation is that the largest supply quantity for a buy item multiplied by the floating point precision should be less than 1,000,000,000 (1 billion).

Planning Engine Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

12

This problem will happen on 32 bit platforms only. The limit for 64-bit platforms is an extremely large number. With patchset E, you may have to diminish your floating point precision, which in turn means a loss of precision for very small number such as routing usages. This problem is solved in patchset F with the patch 2021411 by adding separate profile options for each use of the floating point precision. - "MSO: floating Point Precision" (is still used for the size of supplies for buy items) - "MSO: Floating Point Precision for Usages in Routings" - "MSO: Floating Point Precision for Transportation Capacities (Weight)" - "MSO: Floating Point Precision for Transportation Capacities (Volume)" Setup of aggregate resources in the routings Message: ### Warning: resouce <resource id> dept <department id> used in routing does not exist. Or ### Error: <resource Id> dept <department id> used in requirement was not read. Did you use aggregate resource(s) in your plan? If you did, was an aggregate resource used in a routing? Make sure you use only individual resources in routings. Aggregate resources in routings is not supported by ASCP. Network flow is incomplete Fatal error, aborting HLSDriver::readIntraSupplyTransfers Could not find dest operation for network flow transfer transaction id: 1790602 , op seq num: 20 , to op seq num: 30 , supply id: 1790602 , instance id: 21 , routing sequence id: 46806 This is caused by an incomplete network routing. You have defined arcs in your network for which there is no corresponding operation. In the above example: there is an arc from operation 20 to operation 30, but operation 30 is not found. If you checked your network definition and it is complete (operation 30 exists), consider the following possible causes: - the "schedule flag" for the requirements in this operation (30) are all NO. This means that the operation is not scheduled, so the scheduler does not see it. There should be at least one scheduled requirement in the operation. - there may be some effectivity problem. If you have some effectivity set for operations, it may be that there is no operation 30 effective at the time considered. Effectivity should not disable any operations is the network.

Planning Engine Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

13

Maximum energy overflow Fatal error, aborting createEnergyTimeTableMinuteTimeStep Maximum energy overflow resource: 960 62 1 capacity = 2147483647 > max energy per bucket = 1073741822 This is indicates that you have exceeded the maximum capacity possible for a resource. The limitation is as follow: the maximum size of a time bucket (defined in plan options), in minute, multiplied by the capacity of your resource should not exceed a value which depend of your platform. For 32 bit platforms this value is 1073741822. For 64bit platforms the value is extremely large. For example: if you have a resource with a capacity of 1,000,000, and you are planning with period buckets (30 days = 43200 minutes), the product of 1,000,000 * 43,000 will exceed the limit. In practice the maximum resource capacity for 32 bit platforms is about 20,000 when using period buckets. Maximum activity duration Fatal error, aborting HLS Resource Load Compute Min Duration Maximum activity duration of 6935 days exceeded. Resource (Resource Id, Deparement Id, Instance Id): 11110 50 1 Routing: (inventory item id)39789 Organization Id: 111 Operation Sequence: 20 Resource Sequence: 10 Activity Duration (hours): 756000 Quantity: 4500 Resource Usuage (min): 10080 Basis Type: 1 Rounding Control Type: 1 Routing Type: 2 Max Capacity consumed: 1 Resource efficiency: 1 Resource utilization: 1 Patchset G defines a new profile option: "MSO: Maximum Activity Duration". The default value is the duration of the planning horizon. The plan will fail with this message if one activity (resource requirement) exceeds the duration defined by this profile. Usually this failure is due to some error in setting up the routing, or the efficiency/utilization of the resource. Overflow on granularity precision and maximum activity duration Fatal error, aborting HLSDriver::readParameters ### Error: the product of maximum activity duration (in minutes) 43200 and granular precision 1000000 exceeds the maxmimum integer number 2147483647 for this platform please either reduce the number in profile option MSO: Maximum Activity duration/(planning horizon) Or decrease the number in MSO: HLS Granular precision

Planning Engine Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

14

Patchset G defines the new profile option "MSO: HLS Granularity Precision". This number defines the number of the resource hours (processing time) for requirements. A value of 1000 means you will consider a precision of 1/1000, 10,000 a precision of 0.0001, etc There is a limit on this precision defined by the following rule: The granularity precision multiplied by the maximum activity duration should be less than 2 billions on 32 bits platforms. You will get this error if you violate this rule. Manager saved solution Message: "Could not restore manager saved solution" Please apply patch 1988819 for an update of the ILOG Scheduler library. Please read the patching section below for details on this patch. This should not happen on patchset G, since G requires a more recent version of the libraries. Running Plans Concurrently: Were you running the same plan twice? Or, somebody else might be running your plan while you are also running it. You cannot have two concurrent runs of the same plan. The second plan run will result in failure immediately. The first plan will not be affected. This could result in unique constraint violations. Collection Running: Is someone running a complete refresh collection? The plan cannot be launched while collection program is running. Error Message: CPLEX Error 32011: Licensing Problem: corrupted or nonexistent license file You need to: Verify the license file -> environment variable (APPL_CPLEX_LICDIR) is defined. Check which directory this file is pointing to. Make sure this directory contains the following three files: .perms T.ptr TDB8DD5/ (this file name might be different depending on the customer, however, it will be a file starting with a capital T.) Make sure to set MSC:HOUR_UOM to HR in Profile Options.

Planning Engine Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

15

Make sure to set Retain dates within calendar boundary to Yes in Profile Options.

Make sure UOM - Referential Integrity.

Make sure Unit# - Referential Integrity.

Plan Finished with Warning


Incorrect setup for alternates and simultaneous. ## Warning: multiple principal resources for item xxx. Will use simultaneous. WARNING. There are xxx simultaneous resources with no principal.

WARNING - Fixing principal operation resource for operation id xx, res seq num yy, alternate number zz These messages are related to the setup of principal resources in the definition of a routing. There should be one and only one principal resource for a replacement group of an operation resource. HLS will attempt to repair the setup by changing the status of resources from simultaneous to principal as needed. However this may cause some other problems in your setup. It is recommended that the setup is fixed to avoid such messages.

Incorrect results
Orders are being pushed out of the planning horizon Note: When one order is being pushed out to the end of the (constrained) horizon: all downstream orders will also be pushed out, but also, all upstream orders. This is because orders are scheduled just in time when they are needed. Shifts are round hours Please check that resources shift are defined as round hours. For example from 8:00 to 17:00, and not from 8:30 to 17:15. This is a limitation of APS before G. This limitation is removed in patchset G. If you need to define more precise shifts, you need to schedule in minutes for the corresponding horizon. Schedule Across Breaks parameter If set to No, and some of the requirement can not be executed in 1 shift, APS will be unable to schedule such requirements before the end of the (constrained) horizon. In general "schedule across break" should be set to Yes.
Planning Engine Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only 16

Supply schedule Because of supply schedules, it is possible that not enough components are produced for a particular assembly (unmet demand). In this case the corresponding order will be pushed out by APS. Simultaneous is also the principal resource If you set up a routing so that a simultaneous operation resource requires the same resource as its principal, or 2 simultaneous in the same resource group use the same resource, then the corresponding operation may get pushed out. ILOG propagation error One particular bug from the ILOG library would cause some supplies to be incorrectly pushed out. The problem is data dependent, and cannot be linked to any specific functional situation. To avoid this issue, please apply patch 1988819 as described later in this document. Orders scheduled earlier than their due date This can happen for 2 reasons: - The first availability of a required resource is early compared to the due date. So some supplies may be scheduled earlier than their due dates in order to respect resource availability. - If a supply is pegged to 2 demands, it will be scheduled for the earliest of the demand if possible, in order to respect both due dates. This may result in supplies which are earlier than their demand. Requirements are scheduled out of shifts This is possible in patchset G as the scheduler does not look at the exact position of breaks inside a time bucket. Instead the scheduler will inflate the duration of requirements to account for the breaks within a bucket. For example if you have daily buckets and shifts from 6:00 to 18:00 (12 hours), the scheduler will not look at the position of breaks within one day. Instead it will assume that the time during this day is 50% efficient only (12/24). So a requirement of 3 hours on that day will become a requirement of 6 hours, but it may be scheduled from 0:00 to 6:00. If a better precision is needed, it is always possible to define plan options with finer time buckets. Orders are late There are several potential causes that need to be checked: Upstream or downstream orders are overloading a resource When one order is late: all downstream orders will also be late, but also, all upstream orders. This is because orders are scheduled just in time when they are needed. Planning Time Fence Using the planning time fence will prevent new planned orders to be scheduled too early in the schedule. This could cause some orders to be late.

Planning Engine Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

17

Preprocessing leadtimes APS will schedule orders so that the order date is in the present. This may cause some orders to be late.

Plan Hanging / Poor Performance


Snapshot is Hanging: You could run Gather Schema Statistics with: Schemaname= MSC Estimate_percent = 10 (default value) Degree = 4 Internal Flag = NOBACKUP (default value) Gather Schema Statistics is not necessary after net change collections. Optimized Plan Running: Were you running an Optimized plan? Is Optimizer hanging? You should: Verify the Profile Options to make sure everything is set up correctly. Profile options dont cause the plan to fail. It will only slow down the performance. Its recommended to use default value as much as possible. Use aggregated time bucket in Plan Options to improve the performance. Conflicts: There could be conflicts due to: Snapshot with itself - two snapshots cannot be run at the same time. Plan is running while Auto Release Planner Order is also running.

Patch Application Issues


ILOG Planner library patch not applied __0fJIlcLinOptOnetworkDualOptvK /release/fnd115/v1154upg/mso/11.5.0/lib/libmso.a(msohmnfl.o) __0FYIlcLinearRegisterLicensePCci /release/fnd115/v1154upg/mso/11.5.0/lib/libmso.a(msohdtrd.o) The patch application will fail to relink executable MSONEW because of the absence of the Ilog Planner library (one of the 3rd party libraries used by ASCP). If you get this error please apply patch 1638977 (or 1645431 for NT). Please read the patching section below for details on this patch. Failure to relink MSONEW "ld: 0711-317 ERROR: Undefined symbol: .HLSMathDurableModel::getIntegerFactor()"
Planning Engine Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only 18

Please make a backup and then manually copy all mso .o files from the msc/mso patch you are trying to apply to your environment. Then run: $ adrelink.sh force=y ranlib=y "mso MSONEW" (or just rerun the adpatch copy driver). This is caused by adpatch not replacing the .o file with the same version, even though the header files are more recent. This problem has been solved for patchset F, but still requires some manual intervention for patchset E. If you are using WPS on the same instance with patchset E: be aware that WPS and MSO are both using the library libmso.a, hence it is very important to make a backup of the .o file before copying the new versions from a mso patch. You may want to come back to the previous version before applying a WPS patch. Again, this problem has been removed after patchset F. Patch 1988819 This patch contains a bug fix version of ILOG Scheduler 4.56. The bugs fixed are data dependent. There is no clear functional situation in which they always arise. One of the problems fixed is a plan failure with status113 with the message: "Could not restore manager saved solution" If you see this message, please make sure that this patch has been applied. This patch can safely be applied to any version of APS before patchset G. This patch requires relinking MSONEW after being applied. Relinking MSONEW is done using Unix command: $ adrelink.sh force=y ranlib=y "mso MSONEW" The log file will show the version of the ILOG libraries, for example: ILOG Solver 4.400, licensed to "oracle-redwood shores, ca" ILOG Scheduler 4.560, licensed to "oracle-redwood shores, ca" (This bug was actually already fixed in the previous Scheduler library patch 1558791, for Scheduler4.55. ) An other problem fixed was causing some incorrect results with orders being pushed out and some performance problems. Because of this problem it is highly recommended to always apply this patch. PLEASE DO NOT USE THIS PATCH FOR PATCHSET G OR LATER. Patch 1638977 (or 1645431 for NT) This patch contains the new ILOG Planner library. This patch is required for APS for all engine patch released after February 21, 2002, starting with patch 1645243, and including patchset E. This is a "soft" pre-requisite: this dependency is mentioned in the README of the patch 1645243.

Planning Engine Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

19

If this patch is not applied, adpatch will fail to apply "c" drivers for other engine patches. More specifically, you will be unable to relink MSONEW. The error will mention undefined symbols containing "IlcLin". For example: __0fJIlcLinOptOnetworkDualOptvK /release/fnd115/v1154upg/mso/11.5.0/lib/libmso.a(msohmnfl.o) __0FYIlcLinearRegisterLicensePCci /release/fnd115/v1154upg/mso/11.5.0/lib/libmso.a(msohdtrd.o) This patch application is manual, as detailed in the README. After applying this patch, please relink MSONEW manually or apply another engine patch. PLEASE DO NOT USE THIS PATCH FOR PATCHSET G OR LATER. Patch 1851016 for HP only This is a Rogue Wave library patch for HP only that corrects an issue causing extra memory consumption. This patch is a "soft" pre-requisite: it is only mentioned in the readme of patch 1840749. All subsequent engine patches on HP will have as a pre-requisite the application of patch 1851016.

Planning Engine Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

20

Autorelease/Release Issues with Operating Units


The Release process of Releasing of Purchase Requisitions from ASCP to Purchasing involves passing the operating unit to the po_requisitions_interface. The process is explained as follows : 1. The release process (manual or autorelase) populates the PO_REQUISITIONS_INTERFACE TABLE with the operating unit information. (e.g., some reqs are populated with OU1 and some are populate as OU2). 2. It launches the PO REQ Import program on the source instance. This is done using the Responsibility (e.g:, Advanced Supply Chain Planner). This is the same responsibility which did the Manual / Auto release in ASCP. 3. In the source instance, in case of multiple Operating Units , each responsibility (e.g., Advanced Supply Chain Planner) is attached to a particular operating unit (e.g., OU1). 4. The req import program imports all the information from the interface table belonging to the operating unit attached to the responsibility. (In this case all the records for OU1 will be imported, because OU1 is attached to the Advanced Supply Chain Planner responsibility) The OU2 operating information will not be processed by the Req Import Program. To overcome this issue in the case of Manual Release: 1. 2. 3. You will have to define a responsibility in the source which points to the right operating unit and then run Requisition Import using that responsibility. In general - as many responsibilities as operating units have to be defined in the source and destination. In case there are two operating units , a. Define Advanced Supply Chain Planner OU1 attached to OU1 in source instance b. Define Advanced Supply Chain Planner OU2 attached to OU2 in source instance c. Define Advanced Supply Chain Planner OU1 in destination instance d. Define Advanced Supply Chain Planner OU2 in destination instance Use the correct responsibility to release planned orders based on the Operating units.

2. OR In the source instance , schedule the Req Import Program to run periodically from each of the responsibilities (belonging to different operating units) , so that the information is picked up from the interface table no matter what. So , in the case above , both the responsibilities Advanced Supply Chain Planner OU1 and Advanced Supply Chain Planner OU2 will schedule the req import program to run periodically and the information from both the operating units OU1 and OU2 will be processed. Example : SOURCE : USER_A has Advanced Supply Chain Planner OU1 pointing to Operating_unit_1 USER_A has Advanced Supply Chain Planner OU2 pointing to Operating_unit_2 DESTINATION : USER_A has Advanced Supply Chain Planner OU1 USER_A has Advanced Supply Chain Planner OU2 To overcome this issue in the case of Auto-Release: In the source instance , schedule the Req Import Program to run periodically from each of the responsibilities (belonging to different operating units) , so that the information is picked up from the interface table no matter what. So , in the case above , both the responsibilities Advanced Supply Chain Planner OU1 and Advanced Supply Chain Planner OU2 will schedule the req import program to run periodically and the information from both the operating units OU1 and OU2 will be processed.

Autorelease/Release Issues with Operating Units Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

21

Autorelease/Release Issues with Operating Units Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

22

TCF Server Administration


The TCF (Thin Client Framework) Server is a middle tier process that enables certain Java components of the Oracle Applications user interface to communicate with the middle tier and the database tier. In a production installation, the TCF Server process should always be running. The terms TCF Server and SocketServer are often used interchangeably. Administration of the SocketServer is typically handled through the ServerControl class, which basically provides a clean interface around all the different SocketServer functions that an administrator might perform (starting, stopping, updating, etc.)

ServerControl Usage
jre oracle.apps.fnd.tcf.ServerControl [START|STOP|STATUS|UPDATE] <portnumber|default=10021> [<param=value>]* "param=value" parameters include: Default values are highlighted. DBC=$FND_TOP/secure/<dbc_file>.dbc DEBUG=[TRUE|FALSE] JRE_PARAMS=<jre parameters> OUTPUTFILE=<output file name> PROTOCOL=[SOCKETS|HTTP|SSL] STOP_MODE=[IMMEDIATE|NORMAL] ENV*=/<env_path>/env.txt LOGLEVEL*=[ERROR|EXCEPTION|EVENT|PROCEDURE|STATEMENT] LOGMODULE*=[<product name>|<oracle.apps>]

The DBC parameter is required when passing the START command to the SocketServer. It must point to a dbc file located under $FND_TOP/secure. The ServerControl will connect to the database specified by that .dbc file and set the TCF:HOST and TCF:PORT profile options accordingly. If the port number is omitted, the value will default to 10021. After the server is started up, it will be able to connect to any database which has a .dbc file in the $FND_TOP/secure directory, it is not limited to connecting to only the .dbc file you start the server with. The DEBUG parameter when set to true will cause a window to pop up listing all the clients that are currently connected to the server. The JRE_PARAMS argument can be used to pass in java runtime parameters to the SocketServer (for a list of available ones, type 'jre-help'). To pass multiple arguments, embed them in quotes. Note that the normal jre arguments you pass directly in when running the ServerControl (eg jre mx128m oracle.apps.fnd.tcf.ServerControl) do not get passed on to the SocketServer process. Specify OUTPUT_FILE if you want any log output and error messages to be logged to a file, if this is not specified you will not be able to see if an error occurs. The SocketServer can run in HTTP or SSL mode by specifying the PROTOCOL argument - see the section on HTTP and SSL mode for more details.
TCF Server Administration Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only 23

STOP_MODE is used only when stopping a TCF Server, see the section on shutting down a SocketServer for more details. The ENV parameter can be used to pass in environment variables and values for all of the above arguments, by pointing it to a text file containing the arguments above in the format of a java Properties file (roughly, name=value pairs on each line, no whitespace). An environment file is required when starting the server in SSL mode, as it needs to pass in some additional arguments. It is also possible to pass in environment variables using java '-D' flag, but using an environment file is cleaner. If an argument is passed in both the environment file and on the command line, the command line argument will be override the environment file. Not all environment variables can be passed in from the command line, however. Environment files should be located under $OA_HTML. LOGLEVEL and LOGMODULE can be set to vary the number of log messages that will appear (should be used in conjunction with OUTPUTFILE). See the generic AOL logging doc for more details on these parameters. The default is to print out errors and exceptions, for all modules.

Starting a TCF Server


In previous versions of 11i, the TCF Server could be started on any machine. Beginning with 11.5.2, we now require that the TCF Server be started on the same machine as the forms server. This requirement is necessary to support SSL mode. After logging onto the forms server, to start the TCF Server you need to change to the appropriate environment (typically if you log in as applmgr this will alread be set) and run the ServerControl with the START command: jre oracle.apps.fnd.tcf.ServerControl START 10021 .. The ServerControl in START mode can take every parameter listed above with the exception of 'STOP_MODE'. The DBC parameter is required, as is the ENV parameter when running in SSL mode. Examples are given below. The environment should contain, among other things, the java runtime engine, and the apps.zip and jdbc111.zip files included in the CLASSPATH. The .zip files should have been installed under your $JAVA_TOP.

ServerControl vs SocketServer
You can also start a SocketServer using the SocketServer class directly: jre oracle.apps.fnd.tcf.SocketServer 10021 .. The SocketServer class takes slightly different arguments - instead of a PROTOCOL argument, it uses the flags "-h" and "-ssl" for HTTP mode and SSL mode respectively. It uses the flag "-d" instead of the DEBUG argument. And unlike with ServerControl, any JRE parameters can be passed directly into the SocketServer, so the JRE_PARAMS arg is not required. The differences in the arguments taken can be confusing and in general ServerControl is used more frequently because it provides a cleaner interface towards starting the SocketServer, plus the SocketServer cannot be used to perform any of the other administrative functions (stopping, updating, etc) that the ServerControl can. Additionally, the ServerControl will take care of updating the TCF:HOST and TCF:PORT profiles in the database for you (whatever database is pointed to by the DBC file that is passed in). However, SocketServer does print debugging output directly to the window it was started in, unlike ServerControl which requires the OUTPUTFILE argument, and sometimes support may find it more convenient to have users start the SocketServer directly when encountering problems. Plus, if you for some reason did not want the TCF:HOST and TCF:PORT profiles updated, you might use SocketServer.
TCF Server Administration Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only 24

Essentially, ServerControl and SocketServer are two classes which provide the same functionality when it comes to starting a SocketServer (in fact, ServerControl ends up calling SocketServer). To provide a cleaner, simpler interface, though, we in general recommend that ServerControl always be used unless you have a specific reason to call SocketServer directly. Examples jre oracle.apps.fnd.tcf.ServerControl START 10021 DBC=$FND_TOP/secure/host_dbname.dbc This will start a TCF Server listening at port 10021 in sockets mode, and will update the site-level profiles TCF:HOST and TCF:PORT in the database specified in the 'host_dbname.dbc' file to point to this SocketServer. jre oracle.apps.fnd.tcf.ServerControl START 10021 DBC=$FND_TOP/secure/host_dbname.dbc PROTOCOL=HTTP OUTPUTFILE=tcflog.txt LOGLEVEL=STATEMENT This will start a TCF Server listening at port 10021 in HTTP mode, and will update the site-level profiles TCF:HOST and TCF:PORT accordingly. It will also output all log messages, even STATEMENT's, to the file 'tcflog.txt'. jre oracle.apps.fnd.tcf.ServerControl START 10021 DBC=$FND_TOP/secure/host_dbname.dbc JRE_PARAMS="-ms128m -mx128m" This will start up the TCF Server with 128megs of stack and heap space. Comments The TCF Server will need to be restarted any time patches are applied which modify Java code. The simplest policy would be to restart TCF Server after completion of any patch. Database downtime will not generally require the TCF Server to be restarted, but restarting TCF as part of a general purpose 'Restart the system' script would be a good administrative practice.

Checking the Status of a TCF Server


Login to your TCF Server machine and type: jre oracle.apps.fnd.tcf.ServerControl STATUS 10021 This should return a list of all open connections to the TCF Server (including the one you're making now to check the status). When running in HTTP or SSL mode, be sure to specify the appropriate PROTOCOL argument, eg: jre oracle.apps.fnd.tcf.ServerControl STATUS 10021 PROTOCOL=HTTP Another more advanced test you can run is to try running the Function Security Menu Viewer application, which uses TCF. Sign onto apps as the System Administrator and navigate to the Define Menus form (try Application->Menus). Query up any records (eg. Find All) and press the View Tree button in the upper right corner - the Menu Viewer screen should appear.

Shutting Down a TCF Server


Login to your TCF Server machine and type:

TCF Server Administration Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

25

jre oracle.apps.fnd.tcf.ServerControl STOP 10021 Because the TCF Server may have active client connections in progress, there are two options for shutdown mode: STOP_MODE=[IMMEDIATE|NORMAL] NORMAL mode causes TCF to refuse additional connections and shutdown when the last active connection closes. IMMEDIATE mode will terminate active connections -- and should be used only after giving users some notice since there is potential for data loss if they have uncompleted transactions. Again, when running in HTTP or SSL mode, be sure to specify the appropriate PROTOCOL argument. jre oracle.apps.fnd.tcf.ServerControl STOP 10021 STOP_MODE=IMMEDIATE PROTOCOL=HTTP

Updating a TCF Server


Prior to 11.5.2, the UPDATE option for the ServerControl was not supported. In 11.5.2, while running a SocketServer, there are certain options you can set or properties you can get (in addition to the STATUS above) at runtime. Currently, these include the following: LOGLEVEL=[ERROR|EXCEPTION|EVENT|PROCEDURE|STATEMENT] LOGMODULE=[<product name>|<oracle.apps>] GET=[MEMORY|JDBC|VERSION]

The LOGLEVEL and LOGMODULE properties are the same as those which you set when starting the server, but here you can set them dynamically. The GET call can be used to query up certain bits of information about the SocketServer's current status: GET=MEMORY will return the current amount of memory in use and how much the JVM says is available, in bytes. But note that this is a very imprecise metric, as it relies on java's own Runtime class's methods 'freeMemory' and 'totalMemory'. It should never be relied upon for accurate results, only used as a guideline. GET=JDBC will output the current state of the JDBC connection pool in use to the log file (logging must be turned on, ie and OUTPUTFILE should have been specified). GET=VERSION will return the java revisions of any class files that have been currently loaded. Support may request this info if a customer is encountering problems. Examples jre oracle.apps.fnd.tcf.ServerControl UPDATE 10021 LOGLEVEL=STATEMENT LOGMODULE=oracle.apps.fnd.tcf will set your logging level to log all levels of messages, not just the default of errors and exceptions. jre oracle.apps.fnd.tcf.ServerControl UPDATE 10021 PROTOCOL=HTTP GET=JDBC will connect to a SocketServer running in HTTP mode and output to your log file how many JDBC connections are currently in the pool, how many are in use, etc.

TCF Server Administration Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

26

TCF Configuration Options 1) HTTP/SSL Mode


TCF can use a few different protocols to communicate data between a client and the middle tier server. These are set using the PROTOCOL parameter of the ServerControl utility. Available settings are: PROTOCOL=[TCP|SOCKETS|HTTP|HTTPS|SSL] Note that TCP and SOCKETS, the default(s), are two names for the same TCF Server mode, and the same is true of HTTPS and SSL. In each case, both names are commonly used and we allow either as a convenience. In the base 11i release, HTTP support was only available for certain applications. In 11.5.2, TCF includes full support for HTTP as well as SSL, to allow you to communicate (securely if needed) through a properly configured proxy server. Just starting the TCF Server in the appropriate mode (sockets, HTTP, or SSL) is not enough, the client needs to know which protocol to use when trying to connect. Unfortunately it is not possible for the client to determine on the fly what mode the server is running in, so it needs to be "told" this info somehow. The convention we adopted (in 11.5.2) for signalling this is to prepend the TCF:HOST profile with the text "http://" for HTTP and "https://" for SSL. The tag will be stripped out of course before actually attempting to connect to the specified server machine. If the hostname is not prepended with anything, the client will connect using the default sockets protocol. When using the ServerControl to start up the SocketServer, it will take care of updating the TCF:HOST profile with the "http://" or "https://" tag when using the HTTP/SSL protocols, respectively. Running through a firewall HTTP mode is provided specifically so TCF users can connect through a firewall (although it is not required that they do so). When running a TCF application from within forms, the proxy settings are picked up from the JInitiator settings automatically. When connecting through a proxy server, the network connection from the client to the server will not necessarily be maintained for the duration of the client session - the proxy server may choose to time out the connection after a certain timeout period. So even if the TCF Server detects that the connection is closed, it needs to keep the TCF session active - on the next client request it will reconnect the client to the server. All this behind the scenes timeout and reconnecting should be transparent to the user. However, the TCF Server does need to be able to shut down the session eventually after being disconnected for some period of time, as the server may not be able to tell whether the disconnect occurred because of a proxy server timeout or because the client aborted abnormally. In the latter case, we definitely need to be able to shut down that TCF session, otherwise it would stay around forever. The environment variable HTTP_TIMEOUT tells the server how long (in minutes) it should keep disconnected sessions around before shutting them down. The default is 60 minutes. Determining the optimal value for this will P require some thought. A value too high will mean that abnormally terminated sessions will stay in memory for a long time, hogging resources. A value too low can result in users getting timed out in the middle of an active TCF client session. Some proxy server configuration may be required to allow traffic through to the machine you are running your socket server on, especially when running in SSL mode. Actual configuration details will depend on the proxy software used and cannot be spelled out here. Special notes for SSL mode Running in SSL mode requires a few additional steps, beyond just specifying the protocol:
TCF Server Administration Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only 27

creation of an Oracle Wallet w/password (part of forms install) addition of password into .dbc file, using AdminAppServer FORMS60_WALLET environment variable to tell TCF Server the location of the wallet. the jssl-1_1.jar and javaxssl-1_1.jar files in the CLASSPATH on the client, a certificate database (certdb.txt) under $JAVA_HOME/lib/security

The Oracle Wallet Manager is installed along with the database and forms, and can be used to create Oracle Wallets which contain thecertificates required to use the SSL protocol. A wallet should already have been installed as part of the forms server install, and will likely be under the $ORACLE_HOME/owm area. The SocketServer needs to know the location of this wallet, that info should be passed in via the FORMS60_WALLET environment variable. Environment variables can be passed in using the java system properties or using the ENV file argument described in the usage section above. The FORMS60_HTTPS_NEGOTIATE_DOWN environment variable is an optional parameter which tells a server that it can accept connections from a client that uses weaker level encryption (eg 40-bit instead of 128-bit) than the server supports. Both the FORMS60_WALLET and FORMS60_HTTPS_NEGOTIATE_DOWN parameters should already be set as part of your forms install, the values that go into the env.txt file should mirror whatever is setup in your forms environment. Wallets are protected by passwords - so you also need to tell the socket server what that password is when starting it up. The password again gets created as part of the forms install, you then need to add it into the .dbc file that you pass into the SocketServer. To add it to the .dbc file (encrypted), use the AdminAppServer utility. Two .zip files also need to be added to the CLASSPATH on the server side, before starting your SocketServer. The .zip files should already be under the 8.1.6 ORACLE_HOME area: $ORACLE_HOME/owm/lib/jlib/jssl-1_1.jar $ORACLE_HOME/owm/lib/jlib/javax-ssl-1_1.jar

On the client side, most TCF applications will be connecting through forms, so will re-use the same certificate database (certdb.txt) that forms is using (which gets installed with JInitiator, under $JAVA_HOME/lib/security). However, when running a TCF application whose client does not use forms, in order to run in SSL mode you will need to make sure JAVA_HOME is set and the certdb.txt file exists on the machine you are running your TCF client from. One example of this is the ServerControl class - it acts as a client when attempting to STOP, UPDATE, or get the STATUS of a SocketServer running in SSL mode. So the command: jre oracle.apps.fnd.tcf.ServerControl STATUS 10021 PROTOCOL=SSL will only work properly if JAVA_HOME is set, and the certdb.txt file exists under the $JAVA_HOME/lib/security directory. Examples jre oracle.apps.fnd.tcf.ServerControl START 10021 DBC=$FND_TOP/secure/host_dbname.dbc PROTOCOL=HTTP starts the server in HTTP mode. It updates the TCF:HOST profile in the database pointed to by 'host_dbname.dbc' to "http://hostname" and the TCF:PORT profile to 10021

TCF Server Administration Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

28

jre oracle.apps.fnd.tcf.ServerControl START 10021 DBC=$FND_TOP/secure/host_dbname.dbc ENV=env.txt PROTOCOL=SSL where the env.txt file reads: FORMS60_HTTPS_NEGOTIATE_DOWN=FALSE FORMS60_WALLET=$ORACLE_HOME/owm/wallet HTTP_TIMEOUT=120 starts the server in SSL mode and updates the TCF:HOST profile to "https://hostname" and TCF:PORT to 10021. The wallet should be located under $ORACLE_HOME/owm/wallet or else this will not work, and the encrypted wallet password should already be in 'host_dbname.dbc'.

2) Concurrency
The default amount of memory any jre process starts with (16M) is quite low - if you are expecting multiple users to use the SocketServer you will likely want to increase this limit. Exactly how much you want to increase this to will vary based on how many concurrent users you are expecting and which applications they are running. Recall that concurrency refers to the number of users who have the supported UI components active on their screens at any given moment in time, which is generally much smaller than the total number of users on the system. Memory usage varies widely by application, so unfortunately there is no good metric for calculating what you should set the memory limits to. A very simple rule you can start out with is, for n users, allocate a heap size of (2+n)MB. In addition to the 8MB footprint of the JRE executable itself, this implies a RAM footprint of (10+n)MB for the JRE process. But if you are running one of the more memory-intensive applications, you will have to adjust this value upwards accordingly. To enhance performance, TCF employs a JDBC connection caching technology which also needs to be told how many concurrent connections are to be allowed. For 40 concurrent users, the ServerControl command line would look like: jre oracle.apps.fnd.tcf.ServerControl START 10021 DBC=$FND_TOP/secure/host_dbname.dbc JRE_PARAMS="-ms42m -mx42m -DFND_MAX_JDBC_CONNECTIONS=40" where "-ms42m -mx42m" tell the JRE that the starting and maximum heap sizes should be 42MB (40 users + 2MB spare) and "-DFND_MAX_JDBC_CONNECTIONS=40" tells the JRE to set a Java System property (Java's alternative to O/S environment variables) called "FND_MAX_JDBC_CONNECTIONS" to 40. The FND_MAX_JDBC_CONNECTIONS variable defaults to 14 to accommodate the default JRE heap size of 16MB, so this part of the JRE_PARAMS setting should not be omitted. The FND_MAX_JDBC_CONNECTIONS variable can also be specified in the ENV environment file. These numbers are intended only as a starting point for effective tuning of your system. You may find it useful to allow more memory per user or less depending on the load your installation places on the TCF Server. If your installation places especially heavy demands on the TCF Server, you can START multiple instances (using the SocketServer class directly perhaps, to avoid setting and resetting TCF:HOST and TCF:PORT at the site level) and then setting TCF:HOST and TCF:PORT manually at the Application level to direct users of different applications to different instances of TCF Server's. Each instance can run on a different machine if desired, but care must be taken to ensure that theenvironment it runs in is the same and that any proxy server configuration required for HTTP tunnelling or SSL support is done correctly.
TCF Server Administration Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only 29

3) TCF Server port


We recommend use of port numbers in the range 10021-10029 as a standard which will simplify locating TCF Servers, but TCF will function properly on any port which the O/S allows you to use. For protocols other than TCP/Sockets, there may be proxy server configuration required to allow clients to make connections to the port you have selected. The Unix utility 'netstat' is handy for understanding the sockets usage on your server.

Troubleshooting the TCF server


There are several different errors that one might encounter when attempting to connect to the TCF socket server, and several different reasons each error might occur. This document will review the different errors, and give general debugging guidelines as well as specific things to watch out for with each error. There are four basic-types of errors: 1) Unable to connect to the socket server 2) Unable to connect to the database 3) Hangs upon connecting to the socket server 4) Java exceptions being raised in the java console Application-specific errors - e.g., no data displayed, exceptions that occur after the application has already started, errors which only occur when running a particular application - are typically *not* TCF related and should be routed to the appropriate product team. If you're not positive if your error falls into this category, it should go to the product teams first who can then determine if it is a TCF issue. First, we'll go over some basic troubleshooting tips that are generally useful across all types of errors. Then we'll go into other specific things to look out for with each error:

General Tips
First off, you need to identify which type of error is occurring - often users will just log a bug saying 'the TCF socket server is down/not working'; get more information from them than just that. Get the specific error that they see, so you can categorize it into one of the types of errors that we're expecting. For *ALL* errors, though, the single most useful thing to do is try to check the console window in which the SocketServer process was started in. Some debug information is output by default, and errors raised there are often very descriptive and give a good indication of what the problem is. If that window is no longer available, have the user restart the SocketServer and then try reconnecting, to see what errors come up. If the problem does not reproduce upon restarting the socketserver, but only occurs after running for some period of time, they can redirect their socketserver output into a log file and check the log file when problem occurs again. For 11.5, the ServerControl class was introduced as a more formal means of starting/stopping the socket server; however note that it does not currently give any useful debugging output. Don't be
TCF Server Administration Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only 30

fooled by the DEBUG and OUTPUTFILE parameters, the former only has to do with whether a window listing open connections pops up, and the latter does not output anything useful (not until 11.5.2). To get any meaningful debug output on the server side, the user will have to start the socket server using the SocketServer class directly. The ServerControl class can (for 11.5), however, be used to check if the socket server is accepting connections on the host and port it was started on. The user needs to log onto the machine where it was started and run: jre oracle.apps.fnd.tcf.ServerControl STATUS <port#> If it gives an "unable to connect to SocketServer" error, the server most likely was not started. If it hangs upon connecting, the Server has stopped accepting connections for some reason and must be bounced (see error (3)). If you are able to connect from the ServerControl but not from an application, it might be an application-specific problem, or it may be that the client jar files are not set up correctly. Check if they can connect from other applications. In summary then, always: Find out the exact error the user is seeing, and from which application. When the error occurs on the client, check what gets printed out on the server. Check the window the SocketServer was started in, or start your own and try connecting. For 11.5, try connecting using ServerControl and see if that gives you any more info. Determine if the error occurs for any application that attempts to connect, or if it only happens for a particular one. The simplest application to check is the FND menu viewer.

Specific Errors
1) Unable to connect to the socket server The standard error message for this is: "The application was unable to establish a network connection with the TCF SocketServer listening on port: <port> on host: <host>. Please contact your system administrator." the exact message may vary slightly between versions and products. You may also see "Unable to connect to dispatcher." Things to check: Was the socket server ever started? The system administrator should be able to check if the process is running. What host and port was it started with? Make sure that the profiles TCF:HOST and TCF:PORT on the client point to the socket server you are trying to connect to. The best way to check them is to use the Help->Diagnostics->Examine (Tools->Examine in 11.0) utility to check profiles right before launching the TCF app. If the user is unable to access these you you'll have to run the profiles form or check in sql*plus directly - make sure to check user-level profiles, too, not just site-level ones. Is the socket server host machine accessible from the client? Try telnetting to the host to see if it is reachable.
TCF Server Administration Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only 31

2) Unable to connect to the database The standard error message for this is: "The TCF SocketServer running at <host>:<port> was unable to make a JDBC connection to database <dbname>. This may reflect heavy load on the system, or a problem with the indicated database. If this problem persists, please contact your system administrator." You may also see "Unable to set context." Things to check: Is the database actually up? Try connecting from SQL*Plus For 11.5, the most common reason for this is that we now require using DBC files to connect to the database. The SocketServer must be started with a new argument "DBC=", pointing to a .dbc file that should be located under $FND_TOP/secure. So the command should now read: jre oracle.apps.fnd.tcf.SocketServer <port#> DBC=$FND_TOP/secure/xxx.dbc It's important that the path to the .dbc file be specified. Because the SocketServer can connect to multiple databases, it doesn't depend on the specific .dbc file you pass in, rather it relies on the path where those .dbc files are located to lookup multiple .dbc files. If the socket server is not started with the DBC arg or it cannot find the .dbc file in the specified directory, the above error might occur. Remember that the socket server may be looking for a different .dbc file than what you started it with - check the server logs and see if it reports any errors while trying to load the .dbc file. This error can also occur if the .dbc file was improperly formatted. A very common error to see on the server when this happens is: ld.so.1: ... libocijdbc8.so: open failed: No such file or directory (libocijdbc8.so) Which indicates that the server is attempting to use the THICK jdbc drivers to the database, which is not supported. You need to make sure the .dbc file specifies that the THIN drivers be used - it should contain the line: APPS_JDBC_DRIVER_TYPE=THIN The .dbc file also needs to contain the following variables that identify the database to use: DB_HOST= DB_PORT= DB_NAME= corresponding to the database info in the tnsnames files. The thin drivers cannot use the TWO_TASK to resolve the database name, you must provide this info explicitly (DB_NAME is actually optional if the TWO_TASK and sid of the database are the same, but it's good practice to use it). The GUEST_USER_PWD must be valid, too. And when using SSL mode, an ENCRYPTED_WALLET_PWD argument must be provided (see the security/AdminAppServer class for more info on this).
TCF Server Administration Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only 32

Check the server logs - sometimes ClassNotFoundException's or OutOfMemoryError's raised while it's attempting to connect will result in this error. The former are usually configuration issues, the latter suggest you might want to start your socketserver with more memory.

3) Hangs upon connecting to the socket server Make sure you try connecting using ServerControl if hanging problems are reported. If it still hangs, then typically this indicates that either: a) there is a bug in the code/environment setup problem b) the wrong protocol was used to establish the connection c) the socketserver exited the loop where it accepts connections from the client, but did not exit

For (a) there isn't much to do but check the debug output on the server to see if there's anything obvious that needs to be corrected, and to check the bug database. For (b), just make sure the SocketServer is speaking the same protocol as the client. Supported protocols are Sockets, HTTP, and SSL (for 11.5.2). The client will use whatever protocol forms was started with (the default is SOCKETS). Actually, this used to be an issue but shouldn't be anymore in 11.5 - instead of hanging it should error out right away if there is a protocol mismatch. (c) is probably the most common. For 11.5.2, we've changed it so that when the socketserver stops accepting connections from the client it will close the socket and exit immediately, so you'll know right away that it stopped. However, this does not explain why the socketserver stopped accepting connections in the first place, and determining that is a more involved process. One very possible reason is the socket server ran out of memory. The most useful thing to do here is to check the debug output and see if there are any errors coming up.

4) Exceptions being raised in the java console If an exception is raised in the java console and the TCF application goes down, then this is almost certainly a configuration issue or a bug. As usual, check the server logs to see if the errors there shed any light on the problem. There may be class files missing from the CLASSPATH, or mismatched versions of java files. Or there may be an exception occurring somewhere in the java code that can be tracked down in the bug database.

TCF Server Administration Ascp_troubleshootingguide_v18_13mar02.doc Oracle/Client Confidential - For internal use only

33

Appendix A: Primary and Alternate Resource Setup


Assumption: Primary resource has a priority of 0 Principal Flag: 1 - Yes, 2 - No Note: If Resource step num is NULL, the value will be defaulted to Resource sequence. If priority is NULL, the value will default to the primary priority.

Scenario 1: R1 and R2 are primary resources, R3 is an alternate for R1 Operation Sequence Resource Sequence Resource Flexfield 10 10 R1 Resource step num Priority/Group Principal Flag 10 20 R2 Resource step num Priority/Group Principal Flag Resource step num Priority/Group Principal Flag

Values 10 0 1 (Yes) 20 0 1 (Yes) 10 1 1 (Yes)

10

30

R3

Scenario 2: R1 and R2 are simultaneous, R3 and R4 are simultaneous, (R3, R4) is an alternate for (R1, R2) Operation Sequence Resource Sequence Resource Flexfield Values 10 10 R1 Resource step num 10 Priority/Group 0 Principal Flag 1 (Yes) 10 20 R2 Resource step num Priority/Group Principal Flag Resource step num Priority/Group Principal Flag Resource step num Priority/Group Principal Flag 10 0 2 (No) 10 1 1 (Yes) 10 1 2 (No)

10

30

R3

10

40

R4

Ascp_troubleshootingguide_v18_13mar02.doc

Appendix A: Primary and Alternate Resource Setup Oracle/Client Confidential - For internal use only

34

Scenario 3: R1 and R2 are simultaneous, R3 is sequential and R4 is an alternate for R2 Operation Sequence Resource Sequence Resource Flexfield 10 10 R1 Resource step num Priority/Group Principal Flag 10 20 R2 Resource step num Priority/Group Principal Flag Resource step num Priority/Group Principal Flag Resource step num Priority/Group Principal Flag Resource step num Priority/Group Principal Flag

Values 10 0 1 (Yes) 10 0 2 (No) 30 0 1 (Yes) 10 1 1 (Yes) 10 1 2 (No)

10

30

R3

10

40

R1

10

50

R4

Ascp_troubleshootingguide_v18_13mar02.doc

Appendix A: Primary and Alternate Resource Setup Oracle/Client Confidential - For internal use only

35

Appendix B: Online Planning - Simulation Options

The following information can be modified by the user during Online Planning: Supplier Capacity Add new supplier capacity Modify dates and quantities Resource Availability Add new resource availability Modify dates and quantities Add new shifts Supplies Add new planned orders Firm planned orders, discrete jobs, and purchase order Modify quantities, dates, sources, and alternates. Demands Add new Manual MDS Modify order priority Modify date and quantities Resource Requirements (Through Gantt Charts) Firm Start / End Date Alternate Resource

Ascp_troubleshootingguide_v18_13mar02.doc

Appendix B: Online Planning - Simulation Options Oracle/Client Confidential - For internal use only

36

You might also like