Search This Blog

Friday, January 29, 2010

How to change the Oracle Logo in the top left hand corner of all PIA pages

This is a pretty basic change – and I’m sure most people will already have been through this – but as it seems to be a pretty common query I thought I’d write it up, then at least in future I can just point here.

The requirement is this. Vanilla PeopleSoft comes delivered with the vendor logo in the top left hand corner of all PIA pages (Oracle for Tools 8.48, PeopleSoft on prior versions). The image can be changed to a custom one, usually the logo of the organization (E.g. Orion Logo) or of the project the PeopleSoft implementation is part of.

Solution A – Quick and Dirty Solution
If your desired image is the same dimensions (or can be resized to be the same dimensions) as the vanilla logo then you can just upload your new image over the NEW_PS_LOGO image in App Designer.

Solution B – Full solution for those implementing Enterprise Portal
If you have the portal product, you can navigate to Portal Administration > Branding > Define Headers. On the Images Tab you can select the new image (you’ll have to load it in via App Designer first or have it available via a URL). On the Attributes tab of the grid you can also enter sizes, so the image dimensions don’t have to match the delivered image.

Solution C – Full solution for those without Enterprise Portal
A little more effort is required if you don’t have the portal product. The default image is 145×41 pixels, and if you can get your company logo to look good in those dimensions then the job is really simple, just change the NEW_PS_LOGO Image as above. If you want to change the dimensions of the image, then there are 3 HTML objects to check:
- PORTAL_UNI_HEADER_NS4X
- PORTAL_UNI_HEADER_NNS
- PORTAL_EXP_PASSWORD_HDR
Changing the width of the image is straightforward. If you want to change the height then you will probably find you have to rejig the tables a little.


The image can be either a Jpeg, a Gif, or – if you want to get really creative – an animated Gif. The Image name is hardcoded into PeopleCode so you may as well overwrite the delivered image as alter the delivered PeopleCode, but if you want to have a look it’s in the PT_BRANDING App Package.

Be aware that if you do overwrite the delivered image then the new image will appear everywhere that the delivered image would have, such as the Timeout warning popup message and the expired Password screen.

NB: Even though we are changing the Logo still the tool tip will be displaying as Oracle Logo. For changing this we need to modify the HTML objects (PORTAL_EXP_PASSWORD_HDR
PORTAL_UNI_HEADER_NNS)

Thursday, January 28, 2010

Visual page diff/merge feature

Visual page diff/merge was one of the cool new features added back in PeopleTools 8.48. Visual page diff/merge lets you see two instances of the same page definition side by side and step through the differences visually. It's a huge improvement over just seeing the page field attributes in the classic PeopleTools compare reports.

To see how this feature works, go through this post in Grey Sparling Blog

Monday, January 18, 2010

Creating excel through App Engine


This code will create an excel file through application engine. Can be called from a push button also.

Thursday, January 14, 2010

PT850 Prerelease Document

Download the PT850 Prerelease Document . Remember you need to have metalink credentials to access the document

Forgot Password Feature

Download the Forgot Password feature PDF in PeopleSoft.

Container messages

From 8.48 tools version creating two records at root level is not possible. This will be achieved using Container Message.

Container messages: A container message is a Non RowSet-based message that holds one or more part messages. A container message must contain all RowSet-based messages or all Non RowSet-based message parts.

Grouping one or more part messages into one is container message

Main Menu >> People tools >> Integration Broker >> Integration Setup >> Message

The above message is the main message  used in publish or subscription people code its equal to having two records at root level.


-       Hexaware blog

Tuesday, January 12, 2010

Check the component registration

    Use below script to determine where your component is registered.

      SELECT LPAD(’–’,2*(LEVEL-1)) || PORTAL_LABEL “NAVIGATION”

      FROM (SELECT PORTAL_LABEL, PORTAL_PRNTOBJNAME, PORTAL_OBJNAME, PORTAL_URI_SEG2 FROM PSPRSMDEFN A

      WHERE PORTAL_NAME = ‘EMPLOYEE’ ) B

      WHERE B.PORTAL_PRNTOBJNAME != ‘ ‘

      START WITH (B.PORTAL_URI_SEG2 IN

      (SELECT D.PNLGRPNAME

      FROM PSMENUITEM A, PSMENUDEFN B, PSPNLGROUP D

      WHERE A.MENUNAME=B.MENUNAME

      AND A.PNLGRPNAME = D.PNLGRPNAME

      AND A.PNLGRPNAME LIKE UPPER(’&COMPONENTNAME’))

      )

      CONNECT BY  PRIOR B.PORTAL_PRNTOBJNAME = B.PORTAL_OBJNAME

Friday, January 8, 2010

Related Content Services

it’s a part of NEW WEB 2.0/COLLABORATIVE FUNCTIONALITY in PeopleSoft The People Tools Related Content Framework is delivered with People Tools 8.50. In addition, with a People Tools 8.50 license, you are able to use the following three PeopleSoft Enterprise Portal related content services:

• Related Discussion service

• Related Links service

• Related Tags service

You must install and configure a PeopleSoft Enterprise Portal database to host the data for these services. However, a separate PeopleSoft Enterprise Portal license is not required to use these related content services as described above..

View NEW WEB 2.0/COLLABORATIVE FUNCTIONALITY in PDF

Those who want to know more about related content feature, can go through this GreySparling blog post . They have given a good draft on this feature

Wednesday, January 6, 2010

PSACCESSLOG Table

I got a requirement to create a dashboard for a recruiter to display the Job openings created after his previous login. I first thought of using PSOPRDEFN table to pick the last sign out date time. But it won't work as every time it gets updated for each login and logout.

I came to know about the table, PSACCESSLOG, which stores the IP address, login ,logout and, the oprid. The IP address refers to the system from which the user logs into the system. It can be from the company's intranet, from home or from a internet café.

All I have to do is to fetch the second maximum login, logout time to complete by requirement

Barcodes in XML Publisher

I got into a discussion which was going in between the finance team, they were actually trying to print the barcodes in the XML Publisher. As it was an interesting topic, I thought of giving a search to get an idea on  the same and landed on the post in PeopleSoft guys, Using Code 128 barcodes in XML Publisher.

PDF security in XML publisher

Any PDFs created by XML publisher will have security applied to them according to the contents of the file xdo.cfg which can be found in the PS_HOME\appserv directory.
Here's a sample of what this file looks like:

<config version="1.0.0" xmlns="http://xmlns.oracle.com/oxp/config/">

    <properties>

        <!-- System level properties -->

        <property name="xslt-xdoparser">true</property>

        <property name="xslt-scalable">true</property>

        <property name="system-temp-dir">CACHE</property>

        <property name="system-cachepage-size">50</property>

 <!-- PDF compression -->

        <property name="pdf-compression">true</property>

 <!-- PDF Security -->

        <!-- <property name="pdf-security">true</property> -->

        <!-- <property name="pdf-open-password">user</property> -->

        <!-- <property name="pdf-permissions-password">owner</property> -->

    </properties>

</config>

Note the PDF security section? This sets:

·       Whether PDF security is set

·       The PDF open password (default is user)

·       The PDF permissions password (default is owner)

Excel file using peoplecode

/* Set up the Excel COM objects and open the template file */

Local object &oWorkApp, &oWorkBook;

&oWorkApp = CreateObject("COM", "Excel.Application");

&oWorkApp.DisplayAlerts = "False";

&oWorkBook = ObjectGetProperty(&oWorkApp, "Workbooks");

&oWorkBook.Open("C:\some_path_to\template.xls");

&oWorkSheet = &oWorkApp.Worksheets("Sheet1");

&oWorkApp.ActiveWorkBook.SaveAs("C:\your_output_file.xls");

/* Changing the properties of the cell */

&oWorkSheet.Cells(1, 1).Value = "I'm adding stuff to be bolded";

&oWorkSheet.Cells(1, 1).Font.Bold = True;

/* Save Excel file and quit */

&oWorkApp.ActiveWorkBook.Save();

&oWorkApp.ActiveWorkBook.Close();

&oWorkApp.DisplayAlerts = "True";

&oWorkApp.Quit();

Source: peoplesoft wikidot

Tuesday, January 5, 2010

Error Viewing Reports/Logs

On opening View log/trace, and clicking the corresponding filename,a warning message “Your User ID and/or Password are invalid.”pops up. On entering the UserID and password, “An error has occurred.” message is displayed.

- Check if the SYSADM user password was recently modified. If this is the case then delete process scheduler cache and restart the process scheduler.

- Check if the password was modified for the operator id (userid) that is configured in psprcs.cfg. If this is the case then delete process scheduler cache and restart the process scheduler.

%UpdateStats in peoplecode

%updateStats is used to update Index table (database table) which stores key row (Like ROWID, INDEXFIELD DATA) information. Once you execute above statement your table & system table are sync. By above command index in query works properly and fetches data faster.

Archiving of old data in peoplesoft

Peoplesoft offers Data Archive Manager tools for easy archival of Peoplesoft Data. The following are the features of the PS Archive Manager
–>Integrated and consistent framework for archiving data
–>Uses predefined templates.
–> Archive multiple objects.
–>Leveraging the Archive Query in PeopleSoft Query.
–>Desired commit intervals.
–>Restore simplified
PeopleSoft Data Archive Manager includes the following main elements:
–> Archive object definition
–> Archive query definition
–> Archive template definition
–> Archive job definition
–> Restore query definition
–> Archive auditing

Archive object definition: It is a collection of tables that you archive. The object definition determines how you archive data from a table. Base tables are archived on a user specified query. Non-base tables are archived according to base table

Archive query definition: Need to define a new query as type “Archive” using Query Manager. Archiving is done based on the selection of the query.

Archive template definition: It integrates Archive object and Query used to archive. One of the archive objects must be a base object. Define the selection Criteria to archive from the base table. No need to define selection criteria for all the dependent records. Specify the AE processes to run before and after the data has been archived.

Archive job definition: Define archive jobs to archive data. First define the archive job information including the Archive Template, Archive Process, and Commit Processing. Submit archive jobs in a batch using the process scheduler. It prompts for run time parameters like bind variables and the query to use.

Archive Audits: Archive of objects can be audited. It reports about details about past Archive runs, selection Criteria used to archive or delete and also generates Query used to Archive. OPRID wise report can also be generated.

Benefits of Archive Manager:
–>PS Delivered Archive objects and Templates for transaction tables
ex: TL_PAYABLE_TIME,TL_RPTD_TIME, HRS_APPLICANT
–>Flexibility of running archive process basing on business needs
–>Minimal technical team help
–>Processing types Selection, Delete from a single Archive process
–>Restoring from archive tables just a click away, no separate code required.
–>Restoring only the set of data archived before.
–>Audit of the Archive processes.
–>No separate archive jobs for child tables, they can be clubbed with master tables and PS will take care of archiving and restore automatically.

There is a thumb rule to assign a record as History Record, history record should have all the fields as base table(archived table) and also it should have subrecord “PSARCHIVE_SBR”.

Analysis for the Peoplesoft Data Archiving
It depends on what are you trying to achieve. Are you trying to archive old data for reducing database storage? I assume so. If then, as per my knowledge, for database archiving, our customers do not use Peoplesoft Archive Manager for many reasons because the historical data is stored inside the same Peoplesoft Database.

Assuming that you are planning to archive old data to free up space and gain more performance, there are other options. The industry leading Enterprise Data Management solutions are with IBM’s Optim or HP’s DBArchive. As per my knowledge both supports Peoplesoft Database along with Upgrades. Please check their respective product websites.

One important thing to remember is what will happen to the archived data during the application upgrade. While archiving historical data, we should make sure we will be able to upgrade them as part of the Peoplesoft upgrade. Also, it should free up storage costs to minimize the cost for the customers…

How to execute an external software(exe) from peoplesoft

For Running an external software :
1) Since the software is installed on an external system, we need to map the network drive and give absolute path to run the command (or)
2) Create a batch file (which runs the same way as he is doing it from CMD prompt) and call the batch file from PS. However this option needs to be tested out before posting.

Force Search Processing

Sometimes you want to suppress Search dialog box during the Page display. You must understand the default search dialog box processing and then determine what can you do to alter it programmatically.

At Component Definition Level under Use Tab after Add Search record, there is a checkbox Force Search Processing. The Default is cleared which means do not display the search dialog box, if following conditions are true.
*All required keys have been provided (either by system defaults or by PeopleCode)
*If this an Add dialog box, then no "duplicate key error" results from the provided keys; if this error occurs, the processing resets to the default behavior.
*If this is a Search dialog box, then at least one row is returned based on the provided keys.If you select the Checkbox Force Search processing, then even if the above conditions are true, system will always display the search dialog box.

To alter the search dialog box behaviour programmatically, irrespective of Component Definition Force Search Processing checkbox, You need to use SetSearchDialogBehavior(force_or_skip if possible) function in SearchInit event of the SearchRecord-> SearchField or at component level Search Record. for skip if possible use value 0 and for force display use value 1

Generate file with a button Click



 

Pasting the code will make the page looks distorted, I am posting it as a screenshot.

Click to enlarge the screenshot

Configuring PeopleSoft Forgotten password site

When first looked into PeopleBooks on how to implement the Fortgot Password functionality, it was very disappoing that the information provided is no where close to a successful implementation. After a deep struggle I was able to set this thing up, but if I look back I felt like “Oh! this is a piece of cake”

Basically you can set this thing in one of two ways.

1.      Setup a separate PIA site for password retrieval.

2.      Using the same site for password retrieval.

Here I’m giving you a step by step instructions to setup a separate PIA site. If you want to use the other type (option 2: using same site), you need to tweak it little bit.

Read More>>>>> from peoplesoft guys site.

Monday, January 4, 2010

Data buffer classes

Access Classes : There are four new data buffer classes: Rowset, Row, Record, and Field. These four classes are the foundation for accessing Component Buffer data through the new object syntax.

A field object, which is instantiated from the Field class, is a single instance of data within a record and is based on a field definition.

A record object, which is instantiated from the Record class, is a single instance of a data within a row and is based on a record definition. A record object consists of one to n fields

A row object, which is instantiated from the Row class, is a single row of data that consists of one to n records of data. A single row in a component scroll is a row. A row may have one to n child rowsets. For example, a row in a level two scroll may have n level three child rowsets.

A rowset object is a data structure used to describe hierarchical data. It is made up of a collection of rows. A component scroll is a rowset. You can also have a level 0 rowset.

Quick Tips

CallAppEngine cannot be used in an Application Engine PeopleCode action. If you need to access one Application Engine program from another Application Engine program, use the CallSection action 

The ReturnToServer function returns a value from a PeopleCode application messaging program to the publication or subscription server. You would use this in either your publication or subscription routing code, not in an Component Processor flow event. 

The GetPage function can’t be used until after the page processor has loaded the page. You shouldn’t use this function in an event prior to the PostBuild event. 

PeopleSoft builds a grid one row at a time. Because the Grid class applies to a complete grid, you can’t use the GetGrid function in an event prior to the Activate Event. 

The GetControl function returns a reference to an ActiveX control. You can’t access any controls until after the page processor has loaded the page. You shouldn’t use this function in an event prior to the Activate Event. If you are using Application Messaging, your Publish PeopleCode should go in the SavePostChange event, for either the record or the Component. 

The originating component and the modal component share record fields in a Derived/Work record called a shared work record. The Derived/Work fields of this record provide the two components with an area in memory where they can share data. Edit boxes in both components are associated with the same Derived/Work field, so that changes made to this field in the originating component are reflected in the modal component, and vice versa. 

If you have a large component that’s timing out, you can increase the Internet/Tuxedo timeout.Modify the pstools.properties file (if you choose the defaults when you set up your web site, this file resides in the c:\Program Files\Apache Group\Apache\htdocs\peoplesoft8 directory.)Increase the values for the following lines:
tuxedo_network_disconnet_timeout=0;tuxedo_send_timeout=50;tuxedo_receive_timeout=600

OriginalValue

This property returns the value of a field, that is, the value that from the database. If the value hasn't been changed and saved by the user, it is the original value from the database. If the value has been changed and saved by the user, it is the existing value in the database. This property does not work for derived records. Original values are the database values, and derived records do not have a corresponding database value.

Example

&Orig = &MyField.OriginalValue;

If &Orig = &Date Then

/* do current day processing */

Else

/* do other processing */

End-If;