Data Integrity Error

Data Integrity Error (124,85)

The data structure from the page does not match the data structure in the database.

This error often appears after you've made a change to the Component. As a developer you see it all the time and just reload the Component.

However, on some rare occasions it appears out of nowhere for a given Component. And it won't go away. And there's no reason for it. And you've been forced to search the web for an answer, and now you're reading this sentence like approximately one person per day does. Hello.

Run a trace file for each SQL statement.

You'll need to log out and back in again, this time via the link for tracing on the log in page. If you can't see it go ask your friendly infrastructure team to/how to enable it.

Trace each SQL statement and then search the trace file for 'deserialization integrity failure'. This will point you to the object that is causing the issue.

What's happened is that the version number on the object, and the version number on Table PSVERSION no longer match. There is an inconsistency between PeopleSoft's list of latest versions of objects and the version as reported on the object.

This can be fixed in two ways:

1) by running the AppEngine VERSION, or


2) If you want a quick fix and you don't mind having your ID as the last person that updated the object, you can simply open the object causing trouble, make any minor change to it, save it, and now the versions will match up again.

More detail here:
http://peoplesoftdbafriend.blogspot.com.au/2012/09/version-application-engine.html

Content Reference Menu Path SQL

How to find a "lost"content reference.

(Note that the 'Valid From Date' of the parent Folder must be less than a content reference/common mistake post migration)

Graciously lifted from Jim's PeopleSoft Journal (check out his book too).
http://jjmpsj.blogspot.com.au/2007/12/query-for-component-andor-cref.html


WITH PORTAL_REGISTRY AS (
SELECT RTRIM(REVERSE(SYS_CONNECT_BY_PATH(REVERSE(PORTAL_LABEL), ' >> ')), ' >> ') PATH
     , LEVEL LVL
  FROM PSPRSMDEFN
 WHERE PORTAL_NAME = 'EMPLOYEE'
 START WITH PORTAL_OBJNAME = &1
CONNECT BY PRIOR PORTAL_PRNTOBJNAME = PORTAL_OBJNAME )
SELECT PATH
  FROM PORTAL_REGISTRY
 WHERE LVL = (
SELECT MAX(LVL)
  FROM PORTAL_REGISTRY )

Custom Homepage Pagelets / Custom Navigation Collections

Great article:
http://peoplesofttipster.com/2009/04/27/applying-homepage-pagelets-to-others/

Change Font in SQR


Sometimes the easiest things...

begin-program
   alter-printer font=4 ! hp laser, helvetica
   ...

Reset Page Numbers in XML Publisher (XMLP)

@section:row_AMS_SOA_PROG_T?> That's it.

Database creation date time

select created from v$database;

Hiding Elements - Printable Version of a Page

Rather than create a printable version of a page that is a copy of a given page sans buttons, headers and other elements that don't look good on a hard-copy, you can add a simple button and then define which fields you don't want to be printable. Much easier.


  1. Add a button or link to your page.
  2. Under the Push Button/Hyperlink Page Properties setup as follows:
    Destination = 'External Link'
    External Link = 'Dynamic'
  3. Add some PeopleCode:
    DERIVED_REC.JS_PRINT.Value = "javascript:window.print()";

    Now you have a basic link on your page that when clicked will print it from the browser.
  4. Add a HTML Area to the page with the following value:

    <style type="text/css">
    @media print {
    #PAGEBAR, .PSHEADERTOOLBARFRAME, #PRINT_BTN,
    #INFO,
    #DERIVED_REC_JS_PRINT { display: none }
    }
    </style>


    Note that #DERIVED_REC_JS_PRINT is the link you made in step 1.
    #Info in this example is a chunk of HTML text I wrapped in <span id="Info">
    You can add any field, usually in the format RECORD_NAME_FIELD_NAME, check your HTML source to be sure.