Overview of User Productivity Kit (UPK)

on Tuesday, November 30, 2010

The User Productivity Kit shortly known as UPK is a comprehensive, cost-effective, customizable solution that helps your organization quickly create the critical documentation, training, and support materials needed to drive project team and user productivity throughout the lifecycle of your software.

Oracle UPK Professional is the leading solution for creating, deploying, and accessing content for enterprise application deployments. Consisting of Oracle UPK and the Knowledge Pathways designer, manager, and player modules, Oracle UPK Professional turns knowledge into productivity and ensures ongoing end-user competency.

 The User Productivity Kit provides system process documentation, user acceptance test scripts, comprehensive instructor led training materials, web based training materials, role-based performance support and complete documentation.

Also provided is the UPK Developer, which serves as a single source development and customization tool to enable rapid content creation and customization.

UPK is a package that develops content for all of the major software suites that Oracle now controls, including: Oracle E-Business Suite, PeopleSoft Enterprise, JD Edwards EnterpriseOne, Siebel CRM, JD Edwards World, Oracle Transportation Management and Retek. UPK also works with the following: Accential, Acrobat, Application Designer, Configuration Manager, Crystal, Excel, Outlook, PowerPoint, PSnVision, Query Analyzer, Tutor and Word. Although initially developed by Global Knowledge as OnDemand Developer, Oracle has designed object recognition into UPK.

BENEFITS
--------------------------------------------------------------------------------------------------------------
  • Enable business users gain good knowledge of the functionality of an application by learning how to use a program in both a simulated environment.
  • Create documentation, training materials, capture transaction and performance support across the organization.
  • Provides training and support personnel to create interactive software simulations and other instructional materials. These simulations allow users to see and interact with an application even before they have access to it.
  • Provides process documentation, UAT scripts, comprehensive instructor led training materials, web based training materials.
  • Allows to edit the process flow captured and reproduce the same process both in animated format and document format.
  • With the addition of prebuilt content for UPK, the effectiveness and quality of that development is greatly enhanced.
  • Utilized in any software application development or deployment methodology.
  • Develop central repository to improve competency skills by developing CBTs, BPDs, Test Scripts etc.
  • Utilize while rolling out a new application.
  • Reduce content creation time — Rapid content creation tools produce multiple assets through a single authoring session saving content development time and cost.
  • Reduce time to deployment—System process documentation for fit-gap analysis provides time and cost savings, jump-starting your implementation or upgrade project.
  • Manage project assets—Central repository stores project assets for stakeholders and deploys training materials to user community.
  • Ensure organizational readiness—Performance testing monitors end-user competency prior to go-live as well as tracks ongoing proficiency.

Integration of Oracle Apex with APPS

on Wednesday, November 10, 2010

Oracle Application Express (Oracle Apex) is a rapid web application development tool for the Oracle database. Using only a web browser and limited programming experience, you can develop and deploy professional applications. We wanted to extend the E-Business Suite functionality with Apex features. Apex functions need to be available from the EBS user menu. Users have to be able to move seamlessly from EBS to Apex, without logging in twice. The context of the EBS user needs to specify which data the user is allowed to see in Apex. Our goal was to develop a calendar in Apex which shows a team’s absences for the logged in supervisor. In EBS the “supervisor -> employee” relation has a hierarchical structure, which has to be available in the calendar.


The first challenge we have to deal with is authentication. Apex users have to log in to access an application. We used the EBS security to allow users to logon to Apex using their EBS username and password. In Apex we created a custom authentication scheme which calls an external function to validate the username and password. The authentication scheme calls our plsql function “apex_authorise” which uses the EBS “fnd_web_sec.validate_login” to validate the username and password. At this point we are able to log in to an Apex application using any valid EBS username and password combination.
Now we want to link Apex forms from the EBS menu. The first problem is that Apex requires a valid password for the user and the EBS database does not contain passwords, it holds a hash of the username/password combination. You can handle this by creating an alternative password using the DBMS_OBFUSCATION_TOOLKIT md5 function. The password will be generated by hashing the username, a time component and a key held within the database. This mechanism will be handled in two functions: “apex_generate_hash” and “apex_validate_hash”. To check if the password is valid, we extend the already created function “apex_authorise”.
Now we want to login in Apex automatically. We use a cookie to achieve this. The form function we use in EBS, sets a cookie containing the username and password and redirects to the Apex URL to launch the Apex application. In EBS we have to create a web enabled mod_plsql procedure to achieve this. This form function can then be added to the EBS menu. In Apex we use a “before header” process to read the cookie and log the user in.
The cookie we used:
OWA_COOKIE.send
(name=>’APEX_APPS_’||application,
value=>FND_GLOBAL.user_name||’:’||
apex_generate_hash(FND_GLOBAL.user_name)||’:’||
FND_GLOBAL.user_id||’:’||
FND_GLOBAL.resp_id||’:’||
FND_GLOBAL.resp_appl_id
);
We store the FND_GLOBAL values in global variables in Apex. We use these variables in the page query of an Apex application to only show the results for this specific user. In our case we used the standard calendar feature of Apex. In this calendar you can specify a sql query which selects the data to publish.
Ideally we want to save the context of the environment an APPS user is working in and seamlessly use this context in our Apex application. This way we don’t have to care about which data is visible for the user, the APPS security mechanism will take care of that. This is something which has to be investigated. In our project we send the user information in the cookie, and use this information for our data selection.

Debug AP/AR Netting Issues

on Monday, November 1, 2010

The first and foremost step to ensure that the netting process does not error out is to check the following pre-requisites.
Ensure that all the setups pertaining to Netting are in place.
Ensure that all the packages related to FUN% are Valid and none are in Invalid Status. Once can use the below mentioned SQL to identify the netting related Invalid objects:

          SELECT object_name, object_type, owner, status
          FROM dba_objects
          WHERE status = 'INVALID'
          AND object_name LIKE 'FUN%'’

There are a few known issues with Netting. The error is normally encountered while submitting the “Create Netting Batch” process or while running the “Submit Netting Batch” concurrent program.
Once either of these concurrent program errors out, check the log file from the Submit Concurrent Program window. Normally, the log file will give a generic message as ‘Unable to Create AR Receipt’ or ‘Error applying a Receipt’.
The cause of the issue will be normally based on some wrong setups or some invalid value passed via the Netting Agreement.

STEP1

The first step in the process of identifying the issue is by getting the debug log file. The debug messages from Netting will give a clear cut idea as of which place the program fails. Once the debug file is reviewed, the cause of the issue will normally be quite clear.
If the debug file does not give much information (Normally, the debug file will give the actual error), then resort to the second step.

STEP 2

The second step in debugging the issue is to get the version of the file ‘FUNNTTXB.pls’. We can use the below mentioned command to get the version of the file.

          cd $FUN_TOP/patch/115/sql
          Strings –a ‘FUNNTTXB.pls’ |grep ‘$Header’

Ensure that this file is on the current highest version available via metalink. Apply the patch to get to the latest version if you are not at the highest level.
If a Netting Batch is stuck in Error, it is normally not possible to change the status, in such cases, you can resort to a datafix by deleting the netting batch from the Backend.

STEP 3

Another issue which normally happens with Netting is the creation of another Receipt Method, AP/AR Netting(1) by the application of some of the Netting related Patches. This can be fixed with the help of a Datafix.
Please see the steps mentioned below to perform a Datafix once you are able to identify the existence of another Receipt method ‘AP/AR Netting(1)’.
By default, the Receipt method for Netting is ‘AP/AR Netting’ and the id associated with it is ‘-1’. The below mentioned datafix will remove the ‘AP/AR Netting(1)’ and will replace the id of ‘AP/AR Netting’ as –1. Also, it will remove the reference of ‘AP/AR Netting(1)’ from the dependent tables.

The datafix is as below:

          --Backup

          CREATE TABLE receipt_class_bkp2 AS
          SELECT *
          FROM ar_receipt_classes
          WHERE receipt_class_id = -1;


          CREATE TABLE receipt_method_bkp2 AS
          SELECT *
          FROM ar_receipt_methods
          WHERE receipt_method_id = -1;

          CREATE TABLE rec_method_acct_bkp2 AS
          SELECT *
          FROM ar_receipt_method_accounts_all
          WHERE receipt_method_id = -1

          --Delete

          DELETE FROM ar_receipt_classes
          WHERE receipt_class_id = -1;

          DELETE FROM ar_receipt_methods
          WHERE receipt_method_id = -1;

          DELETE FROM ar_receipt_method_accounts_all
          WHERE receipt_method_id = -1;

          COMMIT;

          --Update

          UPDATE ar_receipt_methods
          SET name = 'AP/AR Netting',
          receipt_method_id = -1,
          receipt_class_id = -1
          WHERE receipt_method_id = 1;

          UPDATE ar_receipt_method_accounts_all
          SET receipt_method_id = -1
          WHERE receipt_method_id = 1;

          UPDATE ar_receipt_classes
          SET receipt_class_id = -1
          WHERE receipt_class_id = 1

          COMMIT;

This will ensure that you do not have any occurrence of ‘AP/AR Netting(1)’ in the instance.
Now, the next step is to identify any receipt with the ‘AP/AR Netting(1)’ in the receipt tables.
We can use the below mentioned query to identify the same.

          SELECT cash_receipt_id,
          receipt_number
          FROM ar_cash_receipts_all
          WHERE receipt_method_id = 1;

If this returns any rows, then probably the receipt will have Receipt Method as ‘AP/AR Netting(1)’.

In order to rectify this receipt, perform the below mentioned datafix.

          --Backup

          CREATE TABLE bkup_tbl_cr_method AS
          SELECT *
          FROM ar_cash_receipts_all
          WHERE cash_receipt_id IN
          (SELECT cash_receipt_id
          FROM ar_cash_receipts_all
          WHERE receipt_method_id = 1);

          --Update

          UPDATE ar_cash_receipts_all
          SET receipt_method_id = -1
          WHERE cash_receipt_id IN
          (SELECT cash_receipt_id
          FROM ar_cash_receipts_all
          WHERE receipt_method_id = 1);

          COMMIT;

This should rectify all the receipts.
Most of the issues with Netting will get resolved once the above steps are followed. If you are still not able to resolve the issue, then log an SR with Oracle Support.