25/03/2014

How to Handle a Job Definition with a Deleted Process Definition

We are currently in the middle of a Financials 8.9 to 9.2 Upgrade. One of the changes delivered is the old delivered Journal Post COBOL (GLPPPOST) has been replaced with a new App Engine called GL_JP. The old COBOL was included in a custom Job Definition. Following the 9.2 upgrade process we were left with our Job Definition that still included the old Process Definition, even though it was deleted as part of the upgrade. Following the upgrade one of my colleagues tried to delete the old Process Definition from the Job Definition and replace it with the new one. But they received this error when trying to save:
"The attempt to use CreateProcessRequest was unsuccessful because the system was unable to find the Process Name/Process Type from the Process Scheduler Definition table. Verify the Process Name/Process Type passed as parameters are valid. If this is a single process,check if the process is found in the Process Definition. If this is a Job(with process type of 'PSJob), check if the job is found in the Job Definition."
This is due to some SaveEdit processing where the Job Definition tries to verify if there is any recursive references in the Job. Because it does this in SaveEdit, it appears it is trying to verify the old version of the Job Definition with the old Process Definition, which of course doesn't exist. (I think this is because Jobs and Process Definitions are cached. I may be wrong on this however.) So how to get around it? I found a reference on the Oracle Support website mentioning the workaround of recreating the Job Definition. But if it is a complicated Job Definition with many Job Items, I think the simplest way to get around the issue is to:
  1. Temporarily re-create the Process Definition
  2. Delete this Process from the Job (because the Process Definition now exists, the SaveEdit processing will run to success)
  3. Add the new Process Definition to the Job
  4. Delete the Process Definition. To do this you need to:
    1. Create a temporary Application Designer project definition
    2. Add the Process Definition
    3. On the Upgrade Tab for Process Definitions change the Action for this Process Definition from Copy to Delete
    4. Save the Project to file (take note of location where you save it)
    5. Choose Tools, Copy Project, From File... and select the file you just created
    6. It will likely prompt you that the Definition already exists in the Database. If it does select Use Project Definition from: File and click OK
    7. Then click Copy to copy the project from file, deleting the Process Definition you created in the first step above.
You are then left with a Job Definition which includes the new Process Definition. And the old Process Definition again has been deleted.

This gets around the issue following the upgrade. I think the better way is to not have the issue to begin with. I think modifying the upgrade steps so the Job Definition gets updated prior to the old Process Definition being deleted would be better. Which is what I will be telling another colleague who is responsible for managing the upgrade.

05/03/2014

Attachments issue in Google Chrome with PeopleTools version 8.53.10

I was just assigned a PeopleTools 8.53 issue where an attachment can't be added in Google Chrome web browser. The attachment modal dialog is displayed and you can choose the file to upload. But when you click the Upload button the dialog disappears but the screen remains blue and nothing is clickable/editable. A search on Oracle Support returns a solution: https://support.oracle.com/epmos/faces/DocContentDisplay?_afrLoop=11708355275664&id=1628372.1&_afrWindowMode=0&_adf.ctrl-state=zuq8xq9w7_4 The solution is a temporary workaround as the bug is not due to be fixed until PeopleTools 8.54. The workaround as provided works but in some situations (most notably the home page) the code throws the error Uncaught ReferenceError: bLoadCompleted is not defined. 

So instead of adding the line of code as suggested

|| bLoadCompleted 

a better solution would be to add this

|| (typeof bLoadCompleted != "undefined" && bLoadCompleted)

Using the typeof bLoadCompleted != "undefined" prevents the Uncaught ReferenceError: bLoadCompleted is not defined.  from being displayed. And now your web browsers debugging console won't get filled up with errors.