This chapter covers the following topics:
In order to use the full functionality of the Assignment Manager selection criteria, Assignment Manager depends on other setup tasks outlined in the Setting up other dependencies section.
This section contains information on some of the common implementation errors associated with implementing Assignment Manager.
Action: Use the following solutions to return resources:
Perform the following steps.
Create new territories for your testing and have a test plan.
For example, which territories and resources should be returned? This will help in debugging real problems.
Make sure that territories are ranked correctly. Territory Manager uses rank to determine the picking order for territories.
Make sure that you have the correct transaction types defined for the territories. If you want a territory to be used for service request and task, then make sure you have "Service Request" and "Task" as transaction types. If a territory is used for a task created within a service request, then you need to select "Service Request and Task" as the transaction type.
Make sure that you have resources attached to the territory.
Rules of Territories: If there are no resources attached to a territory and the effective dates are active, then the territory will be considered a place holder territory. That is, it will not qualify as a winning territory.
Note: If you make changes to territories, make sure that you run the territories concurrent program to reflect the changes made to the territories.
Make sure that you have given the right access to resources, if you have decided to make use of the Access Type feature.
For example: A CA Territory with transaction types "Service Request" and "Task". If you add a resource John Doe and select Service Request only in the Access Type field, then even if this territory qualifies for a task assignment, it will not return the resource John Doe, since he does not have Task access type selected, but Service Request access only.
However, if the Access Type field is left blank, then this resource is eligible for receiving both task and service request assignments. Notice that this resource will not be selected for a task assignment created within a service request because the transaction type "Service Request and Task" is not selected in the Overview tab when defining the territory.
Make sure that you run the territories concurrent program once you are satisfied with your territory setup and updates. Unless you do this, changes will not take effect.
Make sure to delete and re-attach the resources again to the territories that have resource roles added later in the Resource Manager after territory creation.
For a resource attached to a territory, we store the resource-id, resource type, and role associated with that resource. However, for a few of them, the role is blank (NULL), as there was no role defined in Resource Manager at the time you created the territory. But at some point later, someone added roles to these resources in Resource Manager and then the Territory stopped returning these resources as there was no corresponding record in Resource View (Join Failed). In order to fix the problem, you need to delete and re-attach the resources to the territory.
The API will return the resource, but the role will be blank even though you may see a role in Resource Manager for that resource.
Make sure that TCF server is up and running by using the script - adtcfctl.sh stop/start.
Ask your database administrator to recompile the form where Assignment Manager is invoked if an error messageFRM-92000:ORA:1403 occurs. This refreshes the view so that data could be populated in JTY_ALL_ENABLED_ATTRIBUTES_V view.
It is possible that all of the territory qualifiers were duplicated.
Action: Clear the duplicate Transaction Type field in the Overview tab and manually delete duplicate qualifiers. Test this action first by copying one of the existing territories and delete duplicate qualifiers.
The Assignment Manager displays the start and end date/time incorrectly for a selected resource.
Cause: This will happen if Oracle Inventory setup steps aren't performed properly.
Action: Use the following steps for resolution:
In the Task tab of the Service Requests window, select Hour in the Planned Efforts field.
Click the Assignment Manager icon in the Task tab of the Service Requests window to launch the Assignment Manager.
In the Document Details region of the Assignment Manager window, make sure that you see HR populated in the Duration field after the number information, such as 9 HR for 9 hours.
Note: The unit of measure is set by the profile option JTFAM: UOM code used by Assignment Manager for Tasks. If the profile option is not set, then "HR" is the only value used for task assignment.
If you do not see HR as the value in the Duration field, then follow the given steps to set up correct units of measure information:
Log in with the Inventory Superuser responsibility. Select Setup > Units of Measure > Units of Measure.
Choose your organization.
Query for Time in the Class field.
Add the following record:
Enter Hour-Task in the Name field.
Enter HR in the UOM field.
Enter Hour-Task in the Description field.
Leave the Base Unit field bank.
Enter Time in the Class field.
Save the record.
After changing the setting of UOM, use the following steps for verification:
In the Task tab of the Service Requests window, select Hour-Task in the Planned Efforts field.
Try to assign this task to a resource using Assignment Manager. In the Document Details region of the Assignment Manager window, make sure that you see HR populated in the Duration field after the number information.
Double-click the resource that you want to assign to a task.
Verify if the start and end date/time information are properly displayed in the Assignment Manager window as you expected.
Cause: This problem can be caused by the following reasons:
The selected group resource does not have Support group usage defined in Resource Manager.
After selecting a group type in the Service Requests window, your cursor is not placed in the Group Owner field so that the Assign Group button is not enabled. Therefore, click Assign Owner instead to launch the Assignment Manager.
Background Analysis: When Assignment Manager tries to retrieve group or team resources, it checks the usage value (such as Support usage) set in the JTFAM: Usage for Groups and Teams profile option. Based on the value (Support usage), Assignment Manager then searches for the matched groups or teams with the same usage identified in Resource Manager. Those matched group or team resources can then be displayed in the Assignment Manager. However, if there is no Support usage specified in Resource Manager for any groups or teams, then Assignment Manager returns no group resource.
Additionally, make sure to position your cursor in the Group Owner field after selecting a group type so as to enable the Assign Group button. Otherwise, the Assign Owner is enabled if your cursor is in the Owner field. Click Assign Group to launch Assignment Manager to retrieve group resources.
Action: Perform the following steps to set up Support group usage in Resource Manager:
Log in with the CRM Administrator responsibility.
Select Resource Manager > Maintain Resources > Groups to open the Define Groups window.
Query up your group first.
Select the Usages tab.
Use the LOV in the Usage field and select Support for the group usage.
Save your information.
This section contains information on some of the error messages associated with implementing Assignment Manager.
APP-JTF-210807: No Resource Found. Please try again.
Cause: This error usually occurs because the territories are not set up correctly.
Action: Verify territory setup process by using the procedure outlined in the Verify If Territories Are Setup Correctly section .
FRM-92000: ORA:1403: No data found
Cause: This error occurs while invoking Assignment Manager. This may happen when data is missing from the JTSEEDED_QUAL_USGS_V view.
Action: Ask your database administrator to recompile the form where Assignment Manager is invoked. This refreshes the view so that data could be populated in JTSEEDED_QUAL_USGS_V view.
Assignment Manager supports the following resource categories used in Resource Manager:
Employees
Parties
Partners
Groups
Teams
Supplier Contacts
If the Unassisted assignment option is selected, predefined search criteria such as preferred resources, territories, and resource availability will not be available.
Shift schedules displayed in the Gantt chart with yellow background are defined in the Forms-based Calendar module.
No end dated resources are selected in the Assignment Manager with the Unassisted and Assisted assignment options. All the resources that are displayed in the Assignment Manager are valid and active resources.
In many cases, if the Gantt chart in the Assignment Manager window does not work properly, the problem stems from an incorrect configuration of the TCF server.
In general, problems with the configuration and setup of the Gantt chart fall into the following categories. They are:
If you are experiencing problems with the Gantt chart, then do the following:
First perform the steps listed under General Advice.
If this does not clear up the problem, then see the individual sections for the listed problems.
The following items are general suggestions to follow in troubleshooting problems relating to the Gantt chart.
Clear out the JInitiator jcache directory, close and restart the browser, and try again. Old, cached JAR files could be causing the problem.
Shut down and restart the TCF server. If a patch is applied, then the new code is not picked up by the runtime engine until the TCF server is restarted.
Check the JInitiator Console Window for exceptions or informational messages.
Ensure that there are no invalid objects in the database. You can use the adadmin utility for this purpose.
If an invalid object is found, correct the problem, then make sure that the offending form is recompiled (along with its libraries). This can be done through the adadmin utility.
If problems continue, then perform the steps listed in the following sections as appropriate:
One of the most common problems is that a Form does not display the Gantt chart properly. One, or both, of the following symptoms can occur:
The Form displays an empty blue or gray area where the Gantt chart should reside.
The JInitiator console window throws a ClassNotFoundException, referring to classes in oracle.apps.jtf.gantt.
The following are some of the possible causes for this condition:
The jtfgantt.jar file has not been downloaded onto the client machine. The JInitiator console window must include a line similar to the following:
Opening http://<serverHost>/OA_JAVA/oracle/apps/jtf/jar/jtfgantt.jar no proxy
It should not read:
Unable to contact http://<serverHost>/OA_JAVA/<some path>/jtfgantt.jar
Class files are missing from jtfgantt.jar or fndlist.jar.
An old version of jtfgantt.jar resides in the JInitiator jcache directory.
The appsweb.cfg file is customized and does not include an entry for /OA_JAVA/oracle/apps/jtf/jar/jtfgantt.jar.
The appsbase.html file, or the HTML page used to launch applications, is customized and does not pick up the archive tag from appsweb.cfg.
Clear out the JInitiator jcache directory on the client and restart browser.
Verify that jtfgantt.lst is included in fndlist.jar.
First take a copy of fndlist.jar, then rename it to fndlist.zip, and use Win Zip to open the file.
Verify that jtfgantt.lst in fndlist.jar lists approximately 26 class files.
Perform the actions described in step 2, but for jtfgantt.jar and verify that it contains the files listed in jtfgantt.lst.
Ensure that the JInitiator console window does not list any class files as being individually downloaded.
If this is the case something is wrong in the installation. Class files should be downloaded within JAR files and nowhere else.
If Actions 2 through 5 do not verify properly, then perform the following additional actions:
Force the regeneration of the FND and JTF JAR files through the adadmin utility.
Restart the Forms (web) listener and the Forms server. Clear out the JInitiator cache directory, and restart the browser.
Try Actions 2 through 5 again.
Critical! Verify that all high priority FND (AOL) patches are applied.
For the items listed as 4 and 5 in this section, launch the applications. In Netscape Navigator, select "View Source" and verify that /OA_JAVA/oracle/apps/jtf/jar/jtfgantt.jar is included in the archive tag.
If it is not included, then add the entry to files appsweb.cfg and appsbase.html.
Note: If you are unable to establish a TCF connection, then a generic TCF setup problem could exist. Contact your System Administrator or Oracle Support representative to resolve the issue. Until this issue is resolved, Gantt will not work properly.
There are several different errors that you could encounter when attempting to connect to the TCF server, and several different reasons each error could occur.
In general, there are three basic types of errors that can affect server connection:
Each type of error is discussed in the following sections.
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>. Contact your system administrator."
The exact message may vary slightly between versions and products.
You may also see the following:
"Unable to connect to dispatcher."
Items to check:
Was the TCF server ever started?
The system administrator should be able to check if the process is running.
What host and port names were used to start the server?
Verify that the profiles TCF:HOST and TCF:PORT on the client point to the TCF server to which you are trying to connect. The best way to check them is to use the Help > Diagnostics > Examine utility to check profiles just before launching the TCF application. Verify the user-level profiles, also, as well as the site-level profile options.
Is the TCF server host machine accessible from the client?
Open a TELNET to the host to see if it is reachable.
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, contact your system administrator."
You may also see the following:
"Unable to set context."
Items to check:
Is there a ClassNotFoundException or OutOfMemoryError raised?
Check the server logs to see if either of these errors occurred. Sometimes a ClassNotFoundException or a OutOfMemoryError is raised while the server is attempting to connect will result in this error. The former are usually configuration issues, the latter suggests that it is advisable to start your TCF server with more memory.
Is the database actually up and running?
Try connecting from SQL*Plus to verify.
Are you connecting using DBC files?
It is required that DBC files be used to connect to the database. The TCF server must be started with a new argument "DBC=", pointing to a .dbc file that should be located under $FND_TOP/secure. This command should read:
jre oracle.apps.fnd.tcf.SocketServer <port#> DBC=$FND_TOP/secure/xxx.dbc
It is important that the path to the .dbc file be specified. Because the TCF server can connect to multiple databases, it does not depend on the specific .dbc file you pass in, rather it relies on the path where those .dbc files are located to look up multiple .dbc files.
If the TCF server is not started with the DBC argument or it cannot find the .dbc file in the specified directory, this type of error might occur. Remember that the TCF server could be looking for a different .dbc file than that with which you started it. Check the server logs and see if it reports any errors while trying to load the .dbc file.
Are the .dbc files properly formatted?
A similar type of 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)
This indicates that the server is attempting to use the THICK JDBC drivers to connect to the database, which is not supported. Verify that the .dbc file specifies that the THIN drivers be used. The .dbc file must 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=
These variables correspond to the database information in the tnsnames files. The THIN drivers cannot use the TWO_TASK to resolve the database name, you must provide this information explicitly. (The DB_NAME is actually optional if the TWO_TASK variable and database SID are the same, but it's good practice to use it, in any case.)
Try connecting using the ServerControl class if hanging problems are reported. If it still hangs, then typically this indicates one of the following:
There is a bug in the code, or that there is an environment setup problem.
Check the debug output on the server to see if there is anything obvious that needs to be corrected, and check the bug database to see if this type of problem has been previously reported.
The wrong protocol was used to establish the connection.
Ensure the TCF server is speaking the same protocol as the client. Supported protocols are SOCKETS, HTTP, and SSL. The client must use the same protocol as the Forms server.
The TCF server attempts to exit the loop in which it accepts connections from the client, but does not really do so.
This type of error is probably the most common. If the TCF server stops accepting connections from the client, then it closes the socket and exits immediately.
Unfortunately, this does not explain why the TCF server stopped accepting connections in the first place. Determining the reason is a more involved process. One very possible reason is the TCF server ran out of memory. The most useful thing to do in this case is to check the debug output and see if any errors are logged.
If you experience problems with the proper display of resources in the Gantt chart, then perform the steps listed in the following table.
Tip | Description |
---|---|
View the JInitiator console window error messages. | View the JInitiator console window error messages and the exceptions thrown. |
Consult the TCF server log file. | View the TCF server log file for relevant information. |
Verify the TCF server status. | Use the ServerControl class to check whether or not the TCF server is accepting connections on the host and port on which it was started. |
The single most useful thing that you can do to do to troubleshoot server problems is check the JInitiator Console window on the client machine. Some debug information is output by default, and errors raised here are often very descriptive and give a good indication of what the problem is.
If that window is no longer available, then restart the browser, set the "Show Console" check box in the JInitiator control panel, and restart the application.
The following listed items are a few of the exceptions that can be thrown, and reported in the JInitiator Console window.
java.net.ConnectException: Connection refused
Usually this means that the TCF server is not running, or that the TCF:HOST / TCF:PORT profile options are pointing to a wrong server or port.
Gantt TCF HOST:<http://hostname> PORT:<port#>
This refers to the TCF:HOST/PORT settings passed into the Gantt chart.
Verify the TCF Host Name and Port Number:
If the host name is prefixed with "http://", then the client attempts to connect to the TCF server using the HTTP protocol.
If this prefix is missing, then the client attempts to contact the server using the SOCKETS protocol.
Note: If the TCF server and client do not use the same mode, then the client cannot establish a connection.
gantt: tcfSetAppsContext <filename>.dbc
The <filename> listed in the error must exactly match the filename that was specified in the DBC parameter when starting the TCF server. If this is not the case, then rename the file to match that specified in the DBC parameter.
java.lang.ClassNotFoundException:javax.net.ssl.SSLSocket
The client side SSL libraries are meant to be included with JInitiator. However, in some older versions of JInitiator, this did not happen due to US export restrictions that have since been lifted.
java.io.EOFException .... < 3-5 lines of text> at oracle.apps.fnd.tcf.net.SocketServerConnection.readBigUTF( SocketServerConnection.java)
This exception usually occurs after the client tries to connect to the TCF server using the wrong communication protocol. The message indicates that the TCF:HOST profile is not set correctly. Verify the TCF Host Name and Port Number.
gantt: addbar failed, resource not found (<Resource Type> - <Resource Id>)
One common cause for this exception is described in bug 1414546, which is dependant on the Forms-based Calendar bug 1415863 for resolution. If this is the case, then ensure that the resource does not have a Calendar Exception assigned that spans the entire duration of a shift.
java.net.UnknownHostException: <host>
This exception is thrown when the TCF:HOST profile is set to a server that is not recognized by the client.
Verify that the TCF:HOST profile is set correctly, and that the client machine can access the server using the <host> displayed in the exception.
One way to check is to open a DOS window (on a Microsoft Windows machine) and type in "ping <host>." If the host is inaccessible from the client, then the response returns a "Bad IP address <host>" message.
You can view the TCF server log to obtain further information. To set up the log file for automatic logging, perform the following steps:
Add the following to the command line:
OUTPUTFILE=/tmp/<logfile>.log LOGLEVEL=STATEMENT
Bounce (stop and restart) the TCF server.
Run the application again.
Check the log file to see if there is anything in the log file that may indicate what the problem may be.
Errors of the following type can be due to bug 1510941.
java.lang.NullPointerException at oracle.jdbc.oracore.OracleTypeNUMBER.unpicklerec(Compiled Code) at oracle.jdbc.oracore.OracleType.unpicklerec(Compiled Code) at oracle.jdbc.oracore.OracleTypeCOLLECTION.unpicklerec(Compiled Code at oracle.jdbc.oracore.OracleTypeCOLLECTION.unpickle(Compiled Code) at oracle.jdbc.oracore.OracleTypeCOLLECTION.unpickle(Compiled Code) at oracle.jdbc.oracore.OracleTypeADT.unlinearize(Compiled Code) at oracle.sql.ArrayDescriptor.length(Compiled Code) at oracle.sql.ARRAY.length(Compiled Code) at oracle.sql.ARRAY.getArray(Compiled Code) at oracle.apps.jtf.gantt.server.GanttDataServer.getShifts
You can also use the ServerControl class to check whether or not the TCF server is accepting connections on the host and port on which it was started.
To do this, log onto the machine where it was started and run:
jre oracle.apps.fnd.tcf.ServerControl STATUS <port#>
One of the following can occur:
If the result is some variant of "Unable to connect," the server most likely was not started properly. For details of how to solve this problem, see: Cannot Connect To TCF Server and Unable to Connect to the Database.
If the application hangs upon connecting, the server has stopped accepting connections for some reason and must be bounced. See Application Hangs Upon Connecting to the TCF Server.
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.
Make sure the TCF Server and Forms Server runs in the same mode (Socket or Http) to get the Gantt and Assignment Manager to work properly.
Resolution:
To check what modes they are running in check the following files in the $COMMON_TOP/admin/scripts:
adtcfctl.sh for TCF Server
adfmsctl.sh for Forms Server (The Forms Server should run in the mode that is defined in appsweb.cfg)
Note: Remember to bounce the Apache Server after changes are made for the changes to take effect.
The following are frequently asked questions. Answers to these questions may help you in troubleshooting problems with TCF Server.
Answer: Execute the script ‘adtcfctl.sh status' or use the server control class to check jre oracle.apps.fnd.tcf.ServerControl STATUS
If TCF Server is not running it could be the reason the Assignment Manager will not function properly
Action: In Unix under $OAH_TOP/admin/script execute adtcfctl.sh stop/start.
Checking the TCF:HOST and TCF:PORT profile options
What type of values should they contain?
Resolution:
If connectMode=http, set profile option TCF:Host to 'http://.' TCF:Host http://:/oa_servlets TCF:HOST is automatically updated to the same value as the APPS_SERVLET_AGENT Profile option. If the APPS_SERVLET_AGENT profile contained a value ending with the virtual directory OA_HTML, it should end with the name of a valid servlet zone.
If connectMode=socket, set profile option TCF:Host to just '.' -- omit 'http://'
Make sure that the profile option value of TCF:Port is the port that the TCF Socket Server is listening on. TCF:PORT -1.