A Custom Message on the Signon Page (part 2) November 6, 2007
Posted by Duncan in Oracle, PeopleSoft, PIA.comments closed
One of the criticisms that could be leveled at the previous post ‘A Custom Message on the Signon Page’ and its attempt to provide ‘Message of the Day’ functionality is that it’s static. If you need to change the message, you need to bounce the PIA. At some clients this would be fine – and at others not – so another solution was needed.
One way is to embed an iFrame in the signin.html page that points to the file containing the ‘Message of the Day’ text. The signin.html loads on PIA boot and knows it has an iFrame in it, but doesn’t look for the file until someone loads the page. Then you can change the text as often as you like without having to bounce the PIA. If the message text is longer than the box, a vertical scroll bar appears.
(This solution is better for mixed browser clients, however if you are Internet Explorer only consider this solution instead.)

A Custom Message on the Signon Page November 5, 2007
Posted by Duncan in Oracle, PeopleSoft, PIA.comments closed
A quick and easy one today. I was asked by a colleague how to have a custom message appear on the signon page. Partly out of curiosity and partly inspired by these posts (1 and 2) I thought I’d have a look.
As the signon page is (obviously) presented before signin, it’s not going to be a ‘PeopleCode and database’ kind of solution, but I wanted something neater than just hacking the HTML each time. It turns out that it’s simpler than I feared.

XML Publisher and Out of Memory Errors October 30, 2007
Posted by Duncan in Oracle, PeopleSoft, PeopleTools, XML Publisher.comments closed
I’m getting a lot of comments on the XML Publisher posts about ‘Out of Memory’ errors. I’ve not experienced this myself so can’t give a fix or workaround, but wondered whether anyone else had hit this issue and found a resolution?
Doing a bit of digging there are a number of suggestions, none of them relate to the PeopleSoft implementation of XMLP however so I’m unconvinced by any solution in particular.
There’s a Tools patch out for this issue (8.48.06 and up contains the fix), so check your version of Tools:
http://www.peoplesoft.com/psp/portprd/CUSTOMER/CRM/c/C1C_MENU.C1_SOLN_SUMMARY.GBL?page=C1_SOLN_SUMMARY&SETID=SHARE&SOLUTION_ID=201046967
There’s a suggestion to change a parameter for XMLP (I guess this would be on the Process Defn or more likely the Process Type in PeopleSoft):
http://forums.oracle.com/forums/thread.jspa?threadID=568832&tstart=0&messageID=2116283
There’s a suggestion to create a config file (it is not delivered) to specify a temporary directory for processing large files:
http://asun.ifmo.ru/docs/XMLP/help/en_US/htmfiles/B25951_01/T421739T422152.htm
And there’s also a suggestion that a patch will fix it:
http://www.oracle.com/technology/products/xml-publisher/docs/AboutXMLP562.htm
If I was troubleshooting it and was already on 8.48.06 or greater, I’d probably try the parameter followed by the config file.
If anyone has encountered this error and fixed it, it’d be great if you posted a comment to let us know the resolution.
Why go for BEA? October 13, 2007
Posted by Duncan in Oracle, PeopleSoft.comments closed
It seems BEA has rejected Oracle’s approach, although that reaction didn’t save PeopleSoft from their clutches, and 13% of BEA is already owned by an Oracle friendly investor. By the sound of things Oracle has been stalking BEA for years, but why?
Are they after Weblogic (the Web Server) or Tuxedo (the middleware), or the revenue base? Does SAP use any BEA products?
I don’t know the Oracle world like I do the PeopleSoft one, but I thought Oracle usually trod the path of using open source technology with some in-house extensions for OC4J / Oracle App Server. What does Weblogic/Tuxedo offer that they don’t already have? I can understand going for PeopleSoft, Seibel etc for the strength of their HR and CRM products – amongst other things – but is this an admission that BEAs Middleware and Web Server products are superior to Oracles?
Grey Sparling also have a piece on it here.
SAP to acquire Business Objects? October 9, 2007
Posted by Duncan in Oracle, PeopleSoft.comments closed
It seems that SAP is going to acquire Business Objects, the Business Intelligence software vendor.
I wonder what this’ll mean for PeopleSoft / Oracle. Was this a response to Oracle buying Hyperion (used by many clients as a reporting solution for SAP)?
It’s also an interesting move as Business Objects owns Crystal Decisions (makers of Crystal Reports) which is of course used by some PeopleSoft clients as a reporting solution.
An Alternative way of writing Effdt clauses October 7, 2007
Posted by Duncan in Oracle, PeopleSoft, SQL.comments closed
I’ve covered the RANK analytic function before but neglected to mention a useful application for it, and that is for rewriting Effdt and Effseq clauses more efficiently.
The usual way to return the job row (this could be any table, I’m just picking job as a common example) that’s effective for each Employee at a specific date is probably something similar to this:
SELECT emplid, empl_rcd, effdt, effseq
FROM ps_job j
WHERE j.effdt =
(SELECT MAX (j1.effdt)
FROM ps_job j1
WHERE j1.emplid = j.emplid
AND j1.empl_rcd = j.empl_rcd
AND j1.effdt <= '10/AUG/2007')
AND j.effseq =
(SELECT MAX (j2.effseq)
FROM ps_job j2
WHERE j2.emplid = j.emplid
AND j2.empl_rcd = j.empl_rcd
AND j2.effdt = j.effdt)
Execution Cost = 3010, time = 1 sec.
SELECT emplid, empl_rcd, effdt, effseq
FROM (
SELECT emplid, empl_rcd, effdt, effseq,
RANK () OVER
(PARTITION BY emplid, empl_rcd
ORDER BY effdt DESC
, effseq DESC) rnk
FROM ps_job
WHERE effdt <= '10/AUG/2007') j
WHERE rnk = 1
Execution Cost = 665, time = 78 msecs.
Not only is the code shorter and easier, the database execution cost is less than a quarter of the ‘standard’ method and the execution time is less than a tenth.
Explain plans and costs are obviously variable depending upon your environment, the tables and indexes and the volume of data; however it should be clear from the example above that there are sometimes quicker ways than the ‘standard’ method.
Lag and Lead September 21, 2007
Posted by Duncan in Oracle, PeopleSoft, SQL.comments closed
I’ve previously looked at the RANK and DENSE_RANK analytic functions, so thought I’d expand a little by mentioning LAG (and LEAD).
Analytic Functions are extensions to Oracle SQL that enable common tasks to be accomplished faster than using large blocks of SQL or PL/SQL. They are apparently ‘under review by the ANSI SQL committee for inclusion in the SQL specification’, although whether this will ever happen or not is anyones guess.
The LAG function solves (at least for those of us on Oracle) the oft-encountered issue of retrieving data from a prior row.
Outer Joins and Effdt June 26, 2007
Posted by Duncan in Oracle, PeopleSoft, PeopleTools, SQL.comments closed
I was asked by one of our Junior Consultants the best method of outer joining to a table containing Effdt (which you’d want to do a Max Effdt sub-query on).
I provided a solution, but after pondering the issue further I realised there are a number of ways to do this.
For those not familiar with the problem, an Outer Join is a specific SQL statement where all rows from the first table are returned even if no corresponding row in the second table is found. Values from the second table are shown where they exist, defaulting to null when they do not. The issue arises as the second table has an effdt column, which usually necessitates a sub query (to find the row with the greatest effdt less than a supplied as of date). This would be a sub-query, and you can’t outer-join to a subquery.
So, which is the best solution?
Updating existing data with the Rank May 2, 2007
Posted by Duncan in Oracle, PeopleSoft, SQL.comments closed
In the post ‘Incrementing Counts in SQL’ I detailed a way of ranking rows within key values. This works fine in a select statement, so I was able to use that to insert data into an empty record.
The problem I faced today however, was that the data already existed in a table. I needed to update an existing column with the rank that each row had within the table (there had been multiple inserts into the table, and the rank needed recalculating).
I played around with the problem for a bit and couldn’t see a way of doing it (without a kludge like copying it out to another table and using the rank statement instead of selecting the column). Then it occurred to me that it could be achieved using the two step approach shown here. I wrote a quick App Engine to do it (a DoSelect with a SQL step inside) and it worked a treat. It took 4 minutes to run, and a smart colleague of mine with PL/SQL knowledge bettered me with this (which ran in 15 seconds):
%Execute(/)
DECLARE CURSOR c1 IS
SELECT x.keyname
, x.key1
, x.key2
, x.key3
, x.key4
, x.key5
, x.key9
, RANK () OVER (PARTITION BY x.keyname, x.key1 ORDER BY x.keyname, x.key1, x.key9, x.key2) rk
FROM recname x;
BEGIN FOR c1_rec IN c1 LOOP
UPDATE recname y
SET y.key3 = c1_rec.rk
WHERE y.keyname = c1_rec.keyname
AND y.key1 = c1_rec.key1
AND y.key2 = c1_rec.key2
AND y.key9 = c1_rec.key9;
END LOOP;
END;
/
The above code snippet includes the %Execute(/) command needed for running PL/SQL within an App Engine SQL Step.
Oracle’s Project X – What does it mean for a PeopleSoft user? April 18, 2007
Posted by Duncan in Fusion, Oracle, PeopleSoft.comments closed
What is Project X?
There’s been a bit of talk today about Oracle’s Project X. It’s been bubbling around for a while, but now it has been officially announced as ‘Oracle Application Integration Architecture’ and – to paraphrase – it’s a method of joining together disparate ERP systems.
By purchasing Process Integration Packs (PIPs) clients will be able to connect systems – initially I’d imagine it would be PeopleSoft, Oracle e-Biz, Siebel and JDE, but other systems will no doubt be added in the fullness of time. This is, of course, a high visibility use of the much heralded SOA (Service Orientated Architecture) – one of the buzzwords you can’t avoid hearing in any Fusion discussion. I guess this is Oracle responding to customers saying ‘enough with the SOA/BPEL/XMLP tub-thumping, show me how it improves my business’.
What does it mean for PeopleSoft people?
Whenever Oracle come out with a big announcement, the first question for me is always ‘what does this mean for the PeopleSoft world’? After all, straight after the takeover Oracle announced that we’d all be forced to migrate to Fusion. Then we were going to be temporarily supported on our current ERPs before migrating. Next came Applications Unlimited, meaning we could hold fire a bit longer. Now, Oracle release a technology enabling us to not migrate to Fusion at all, but stay put and let the different ERPs communicate.
A cynic might wonder if they were having problems with Fusion. Or perhaps it’s all going swimmingly but they’re hearing that clients quite like their current systems and don’t want to move? Or are they just after the extra revenue stream PIP sales would bring before Fusion comes along?