Ensuring Data Integrity

This chapter provides an overview of data integrity tools and discusses how to:

Click to jump to top of pageClick to jump to parent topicUnderstanding Data Integrity Tools

PeopleSoft provides several tools to ensure the integrity of the data that is stored in the PeopleSoft system, such as SQL Alter , SYSAUDIT, and DDDAUDIT. You may want to use these tools during upgrades and system customizations, to verify the PeopleSoft system and check how it compares to the actual SQL objects.

Click to jump to top of pageClick to jump to parent topicRunning SQL Alter

The primary purpose of the PeopleSoft Application Designer SQL Alter function is to bring SQL tables into accordance with PeopleTools record definitions. You can run SQL Alter in an audit-only mode that alerts you to discrepancies between record definitions and SQL tables, but that doesn't actually perform an alter.

To audit tables or views:

  1. In PeopleSoft Application Designer, choose the records that you want to audit.

    You have the option of auditing the active record definition, the selected records in the project workspace, or all the records that are in the current project.

  2. Select the Build menu and select the appropriate option for the records that you want to audit.

    If you're auditing an open record definition, choose Build, Current Object. If you select one or more records in the project workspace, you can select Build, Selected Objects. If you want to audit all records in the current project, select Build, Project.

    The Build Scope shows a list of all the records that are affected, or audited in the case.

  3. Select Alter tables as the Build Option and select Build script file as the Build Execute option.

  4. Click Settings and choose the Alter tab in the Build Settings dialog.

  5. In the Alter Any group box, select the situations for which you want an Alter performed.

  6. Select the Scripts tab.

    You use the Scripts tab to specify the output for the build scripts in one file, in two files, where the file is generated, and so on.

  7. Select Write Alter comments to script.

    Performing alters with this option enabled adds comments to the SQL script about what fields are being manipulated.

  8. Choose the other script file options.

  9. Click OKto close the Build Settings dialog and return to the Build dialog.

  10. Press Buildon the Build dialog.

Click to jump to top of pageClick to jump to parent topicUnderstanding Table and Column Audits

The SELECT statements that are produced by auditing with SQL Alter deal with inconsistencies between PeopleTools tables and SQL in the definition of tables or columns. A SQL table is equivalent to a record in PeopleSoft Application Designer, and a column is equivalent to a field.

To fix problems that are found in the system tables and columns, you need to know how PeopleSoft field types correspond to SQL data types:

Application Designer Field Type

SQL Data Type

SQL Description

Character

CHAR

Alphanumeric; fixed length.

Long character

LONGVAR

Alphanumeric; variable length.

Date

DATE

Dates; stored as fixed length; displayed in various formats.

Number or signed number

SMALLINT

Numeric; integers only (no decimals); 1 to 4 digits (and 5 digits if RawBinary).

Number or signed number

INTEGER

Numeric; integers only (no decimals); 5 to 9 digits (and 10 digits if RawBinary).

Number or signed number

DECIMAL

Numeric; either (1) 10 or more digits or (2) contains decimal positions.

Note. In PeopleSoft Application Designer, if a field is specified as required, or if a field is numeric and does not have a format of Phone, SSN (social security number), or SIN, you need to initialize the starting value of the column and specify the NOT NULL attribute in SQL.

Click to jump to top of pageClick to jump to parent topicRunning DDDAUDIT

This section discusses DDDAUDIT queries.

The Database Audit Report (DDDAUDIT) finds inconsistencies between PeopleTools record and index definitions and the database objects. This audit consists of nine queries: four on tables, two on views, and three on indexes.

Note. This SQR refers to the Data Designer, the PeopleTool that allowed you to create record definitions in the PeopleTools releases prior to release 7. Now, all of the development tools are incorporated into one integrated development environment called the PeopleSoft Application Designer.

To run DDDAUDIT:

  1. Using Windows Explorer, navigate to PS_HOME\sqr and locate DDDAUDIT.SQR.

  2. Double-click it.

  3. Type in the database name, username, and password.

    You probably need to use the database access ID and password to execute the DDDAUDIT properly.

  4. Verify the Report arguments and click OK.

    The f argument indicates where the system writes the .LIS file.

  5. At the Command Prompt, press ENTER.

    At the end of a successful run, you're prompted to press Enter again.

When you run DDDAUDIT.SQR, its results are written to a file called DDDAUDIT.LIS in the \TEMP folder. After running DDDAUDIT, view the .LIS file by using any text editor. Here's a sample excerpt of this file:

Click to jump to top of pageClick to jump to parent topicDDDAUDIT Queries

The following table lists the names of each query that DDDAUDIT performs on the PeopleSoft system, what it means if rows are returned, and how to resolve the inconsistency.

Note. The query names in this table are arranged alphabetically, and are not necessarily in the order in which they appear in DDDAUDIT.LIS:

Query

If Rows are Returned?

Resolution

INDEX-1

Indexes are defined in PeopleSoft Application Designer and not found in the database.

Use PeopleSoft Application Designer to create the index.

INDEX-2

Indexes are defined in the database and not found in PeopleSoft Application Designer.

If the index is valid, use PeopleSoft Application Designer to define the index.

Otherwise, drop the index.

INDEX-3

Uniqueness or the number of keys in the Index Definition do not match between PeopleSoft Application Designer and the database.

See INDEX-1.

TABLE-1

SQL table names are defined in the Data Designer that are not blank and not the same as the record name.

Use Application Designer to enter the record name as the Non-Standard SQL Table Name.

TABLE-2

SQL tables are defined in the Data Designer and not found in the database.

If you want to delete the record definition, use PeopleSoft Application Designer (select File, Delete).

Otherwise, to create the SQL table, use Application Designer. This command also creates the appropriate indexes for keys, duplicate order keys, alternate keys, and list items.

TABLE-3

SQL tables are defined in the database and not found in the Data Designer.

SYSINDEXES and SYSTABLES can be ignored in these results.

For Informix: PSALTERLONG can also be ignored.

If the table is not valid, drop it.

Otherwise, define a new record in PeopleSoft Application Designer.

TABLE-4

Tablespace is not defined for the SQL table in PeopleSoft Application Designer.

If you're using or migrating to a relational database management system that uses table spaces, you should use PeopleSoft Application Designer to assign table spaces to these tables.

TABLE-5

Table contains more than 500 fields.

Use PeopleSoft Application Designer to adjust the number of fields on the table, as needed.

VIEWS-1

Views are defined in the Data Designer and not found in the database.

If you want to delete the view definition, use PeopleSoft Application Designer (select File, Delete).

Otherwise, to create the SQL view, use Application Designer.

VIEWS-2

Views are defined in the database and not found in the Data Designer.

If the view is not valid, Drop it.

Otherwise, define a new view in PeopleSoft Application Designer.

TRIGGER-1

Trigger defined in the PeopleSoft Application Designer and not found in the database.

Delete the definition if it is not needed.

Otherwise, use PeopleSoft Application Designer to create the trigger in the database.

Click to jump to top of pageClick to jump to parent topicRunning SYSAUDIT

This section provides an overview of how to run SYSAUDIT and discusses audits for:

Click to jump to top of pageClick to jump to parent topicUnderstanding How to Run SYSAUDIT

The System Audit (SYSAUDIT) identifies orphaned PeopleSoft objects and other inconsistencies within the system. An example of an orphaned object is a module of PeopleCode that exists, but which does not relate to any other objects in the system.

Select PeopleTools, Utilities, Audit, Perform System Audit.

System Audit page

Audit AE Integrity

Audits PeopleSoft Application Engine program definitions and components.

Audit Clear List Integrity

Audits the SYSCLRLIST* component.

Audit EDI Manager Integrity

Audits the EC* component for EDI Manager.

Audit Field Integrity

Audits the DBFLD* component for PeopleSoft Application Designer fields.

Audit Menu Integrity

Audits the MENU* component for PeopleSoft Application Designer menus.

Audit Security Integrity

Audits the AUTH*, OPRDF* components for PeopleTools Security.

Audit Page Integrity

Audits the PNL* component for PeopleSoft Application Designer pages.

Audit Optimization Integrity

Audits the definitions for Optimization Engine.

Audit PeopleCode Integrity

Audits the PCM* and PRG* components for PeopleCode programs.

Audit Query Integrity

Audits the QRY* component for PeopleSoft Query.

Audit Record Integrity

Audits the REC* and VIEWT* components for PeopleSoft Application Designer records.

Audit Related Lang Integrity

Audits Related Language Integrity. Query the *LANG component.

Audit SQL Integrity

Audits the referential integrity of the tables supporting SQL objects in the db component.

Audit Tree Integrity

Audits the TREE* component.

Audit Translates Integrity

Audits the XLAT* component.

Audit PSLOCKS Version Integrity

Audits the VERSN* component.

To run SYSAUDIT:

  1. Select PeopleTools, Utilities, Audit, Perform System Audit.

  2. When prompted, enter a new run control ID and click OK.

  3. Select the desired Integrity Audit options.

  4. Click Run.

  5. Select the appropriate settings on the Process Scheduler Request page, and click .OK.

Accessing SYSAUDIT Output

When you run SYSAUDIT, you can specify the type and format of the output on the Process Scheduler Request page, as you can with any Process Scheduler request. By default, the results are written to the configured report repository as an Adobe Acrobat PDF file called SYSAUDIT_runctrl_ID.pdf, where runctrl_ID is the run control ID you specified for the audit.

The tables in the following sections list the names of each of the audit queries that SYSAUDIT performs on the PeopleSoft system, what it means if rows are returned, and how to resolve the discrepancies that the audit report uncovers.

Note. The query names in these tables are arranged alphabetically, and are not necessarily in the order in which they appear in the output.

See Also

Scheduling Process Requests

Click to jump to top of pageClick to jump to parent topicApplication Engine Integrity

The following table describes the audit queries and resolutions for this area:

Query

Description

Resolution

AE-01

AE programs without any sections.

If the affected program is delivered by PeopleSoft and is not modified, contact the GSC.

If the affected program is converted as part of an upgrade, this may be a symptom that the conversion failed. Contact the GSC.

Otherwise, use the Application Engine designer to either create valid sections for the program or remove the program. It is not possible to recover the missing sections.

AE-02

AE sections without AE programs.

If the affected program is delivered by PeopleSoft and is not modified, contact the GSC.

If the affected program is converted as part of an upgrade, this may be a symptom that the conversion failed. Contact the GSC.

If the affected program is a customization, it is not possible to recover the missing program. Restore it from a backup if needed.

Use SysAECleanUp.dms (located in PS_HOME\scripts.) to remove any orphans remaining after you have followed the steps above.

AE-03

AE state records without AE programs.

If the affected record is delivered by PeopleSoft, contact the GSC.

If the affected program is converted as part of an upgrade, this may be a symptom that the conversion failed. Contact the GSC.

Otherwise, ignore the warnings or restore the program from a backup. It is not possible to recover the missing program.

AE-04

AE state records without record definitions.

If the affected record is delivered by PeopleSoft, contact the GSC.

If the affected program is converted as part of an upgrade, this may be a symptom that the conversion failed. Contact the GSC.

Otherwise, using PeopleTools Application Designer, remove invalid records from the program definition or create record definitions.

AE-05

AE section details without base section definitions.

If the affected program is delivered by PeopleSoft and is not modified, contact the GSC.

If the affected program is converted as part of an upgrade, this may be a symptom that the conversion failed. Contact the GSC.

Otherwise, ignore the warnings or restore the program from a backup. It is not possible to recover the missing sections.

AE-06

AE steps without sections.

If the affected program is delivered by PeopleSoft and is not modified, contact the GSC.

If the affected program is converted as part of an upgrade, this may be a symptom that the conversion failed. Contact the GSC.

If the affected program is a customization, it is not possible to recover the missing program. Restore it from a backup if needed.

Use SysAECleanUp.dms (located in PS_HOME\scripts.) to remove any orphans remaining after you follow the steps above.

AE-07

AE Call Section actions referring to nonexistent sections

If the affected program is delivered by PeopleSoft and is not modified, contact the GSC.

If the affected program is converted as part of an upgrade, this may be a symptom that the conversion failed. Contact the GSC.

Otherwise, use the Application Engine either to open the program containing the Call Section and change it to call the correct section, or create the required section.

AE-08

AE Log Message actions without an AE step.

If the affected record is delivered by PeopleSoft, contact the GSC.

If the affected program is converted as part of an upgrade, this may be a symptom that the conversion failed. Contact the GSC.

If the affected program is a customization, it is not possible to recover the missing program; restore it from a backup if needed.

Use SysAECleanUp.dms (located in PS_HOME\scripts.) to remove any orphans remaining after you follow the steps above.

AE-09

AE actions without an AE step.

If the affected record was delivered by PeopleSoft, contact the GSC.

If the affected program was converted as part of an upgrade, this may be a symptom that the conversion failed. Contact the GSC.

If the affected program is a customization, it is not possible to recover the missing program; restore it from a backup if needed.

Use SysAECleanUp.dms (located in PS_HOME\scripts.) to remove any orphans remaining after you follow the steps above.

AE-10

AE temp tables that are attached to invalid AE programs.

If the affected temp table was delivered by PeopleSoft, contact the GSC.

If the affected program is converted as part of an upgrade, this may be a symptom that the conversion failed. Contact the GSC.

Otherwise, ignore the warnings or restore the program from a backup. It is not possible to recover the missing programs.

AE-11

Orphaned AE PeopleCode.

Because of platform issues and Structured Query Report (SQR), this check may not be included in the audit report. But SysAECleanUp.dms cleans up these orphans.

AE-12

Orphaned AE SQL objects.

Because of platform issues and SQR, this check may not be included in the audit report. But SysAECleanUp.dms cleans up these orphans.

AE-13

Verify that enough rows are loaded into PS_AEONLINEINST.

Contact the GSC. This table is a critical element of the Application Engine Runtime.

AE-14

Verify that enough rows are loaded into PS_AEINSTANCENBR.

Contact the GSC. This table is a critical element of the Application Engine Runtime.

AE-15

Verify that a row is loaded into PS_AELOCKMGR.

Contact the GSC. This table is a critical element of the Application Engine Runtime.

Click to jump to top of pageClick to jump to parent topicClear List Integrity

The following table describes the audit queries and resolutions for this area:

Query

Description

Resolution

SYSCLRLIST-01

Entries in PSACTIVITYDEL and PSACTIVITYDEFN are not mutually exclusive.

Run the VERSION Application Engine program.

SYSCLRLIST-02

Entries in PSAEAPPLDEL and PSAEAPPLDEFN are not mutually exclusive.

Run the VERSION Application Engine program.

SYSCLRLIST-05

Entries in PSCOLORDEL and PSCOLORDEFN are not mutually exclusive.

Run the VERSION Application Engine program.

SYSCLRLIST-06

Entries in PSFMTDEL and PSFMTDEFN are not mutually exclusive.

Run the VERSION Application Engine program.

SYSCLRLIST-07

Entries in PSHOLIDAYDEL and PSHOLIDAYDEFN are not mutually exclusive.

Run the VERSION Application Engine program.

SYSCLRLIST-09

Entries in PSIMPDEL and PSIMPDEFN are not mutually exclusive.

Run the VERSION Application Engine program.

SYSCLRLIST-10

Entries in PSMENUDEL and PSMENUDEFN are not mutually exclusive

Run the VERSION Application Engine program.

SYSCLRLIST-11

Entries in PSPCMPROGDEL and PSPCMPROG are not mutually exclusive.

Run the VERSION Application Engine program.

SYSCLRLIST-12

Entries in PSPNLDEL and PSPNLDEFN are not mutually exclusive.

Run the VERSION Application Engine program.

SYSCLRLIST-13

Entries in PSPNLGRPDEL and PSPNLGRPDEFN are not mutually exclusive.

Run the VERSION Application Engine program.

SYSCLRLIST-14

Entries in PSPRCSRUNCDEL and PSPRCSRUNCNTL are not mutually exclusive

Run the VERSION Application Engine program.

SYSCLRLIST-15

Entries in PSPROJECTDEL and PSPROJECTDEFN are not mutually exclusive

Run the VERSION Application Engine program.

SYSCLRLIST-16

Entries in PSQRYDEL and PSQRYDEFN are not mutually exclusive.

Run the VERSION Application Engine program.

SYSCLRLIST-17

Entries in PSRECDEL and PSRECDEFN are not mutually exclusive.

Run the VERSION Application Engine program.

SYSCLRLIST-18

Entries in PSRECURDEL and PS_PRCSRECUR are not mutually exclusive.

Run the VERSION Application Engine program.

SYSCLRLIST-19

Entries in PSSTYLEDEL and PSSTYLEDEFN are not mutually exclusive.

Run the VERSION Application Engine program.

SYSCLRLIST-20

Entries in PSTOOLBARDEL and PSTOOLBARDEFN are not mutually exclusive.

Run the VERSION Application Engine program.

SYSCLRLIST-21

Entries in PSTREEBRADEL and PSTREEBRANCH are not mutually exclusive.

Run the VERSION Application Engine program.

SYSCLRLIST-22

Entries in PSTREEDEL and PSTREEDEFN are not mutually exclusive.

Run the VERSION Application Engine program.

SYSCLRLIST-23

Entries in PSTREESTRDEL and PSTREESTRCT are not mutually exclusive.

Run the VERSION Application Engine program.

SYSCLRLIST-24

Entries in XLATTABLEDEL and XLATTABLE are not mutually exclusive.

Run the VERSION Application Engine program.

Click to jump to top of pageClick to jump to parent topicEDI Manager Integrity

The following table describes the audit queries and resolutions for this area:

Query

Description

Resolution

ECINMPFL-1

Inbound work records that are not found in the PSRECDEFN table.

Either modify the inbound map definition to not use the Inbound Row ID Work Record (ECINMAPFILE), or create the Work Record Definition.

ECINMPFL-2

Inbound work record EC Map ID is not found in the PS_ECMAPDEFN table.

Create an entry in the map definition table (ECMAPDEFN).

ECINMPFD-1

Inbound work record fields are not found with valid EC Map ID and EC File Row ID combination from the PS_ECINMAPFILE table

Either remove the invalid map ID from the Inbound Work Record (ECINMAPFLD), or create an Inbound Row ID Work Record entry.

ECINMPFD-2

Inbound work record fields from PS_ECINMAPFLD are not found in PSRECFIELD

Either remove the invalid entry in the inbound work record or create the record/field definition.

ECINMPRC-1

Target inbound records are not found in the PSRECDEFN table

Either modify the inbound map definition to not use the Inbound Row ID Target Record (ECINMAPREC), or create the Work Record Definition.

ECINMPRC-2

Target inbound EC Map ID is not found in the PS_ECMAPDEFN table

Either remove the invalid map ID from the Inbound Row ID Target Record or create an entry in the Map Definition table.

ECINMPRF-1

EC Map ID/EC File Row ID combination is not found in PS_ECINMAPREC for the target inbound record field in PS_ECINMAPRECFLD

Remove the invalid map ID from the Inbound Target Record.

ECINMPRF-2

A Field for a Record in PS_ECINMAPRECFLD was not found in PSRECFIELD

Create the appropriate definitions in PSRECFIELD or remove the invalid map ID from the Inbound Target Record.

ECINMPRF-4

A related record in PS_ECINMAPRECFLD is not found in PSRECDEFN

Either create the record definition or remove the reference to the related record in the Inbound Target Record.

ECINMPRF-5

An EC Related Record in PS_ECINMAPRECFLD does not have a valid EC Related Row ID from PS_ECINMAPREC

Either remove the reference to the related record from the Inbound Target Record or create an appropriate entry in the Inbound Row ID Target Record.

ECINMPRF-6

A related field in PS_ECINMAPRECFLD is not found in PSRECFIELD

Either remove or correct the reference to the related field record from the Inbound Target Record or create the correct definition in PSRECFIELD.

ECOTMPRC-1

Target outbound records are not found in the PSRECDEFN table

Either modify the outbound map definition to not use the Outbound Target Record, or create the record definition.

ECOTMPRC-2

Outbound work record EC Map ID is not found in the PS_ECMAPDEFN table

Create an entry in the map definition table.

ECOTMPRC-3

Parent records from the outbound work record are not found in the PSRECDEFN table

Remove the reference to the parent record or create a record definition for the parent.

ECOTMPRC-4

File records from the outbound work record are not found in the PSRECDEFN table

Create a record definition for the file record.

ECOTMPFD-1

Outbound work record fields are not found with a valid EC Map ID and EC File Row ID combination from the PS_ECOUTMAPREC table

Either remove the entry from the Outbound Work Record (ECOUTMAPFLD) or create an entry in the Outbound Target Record (ECOUTMAPREC).

ECOTMPFD-2

Outbound work record fields from PS_ECOUTMAPFLD are not found in PSRECFIELD

Create the appropriate definitions in PSRECFIELD or remove the invalid map ID from the Outbound Work Record.

SYSECMGR-1

Inbound work record field does not exist in the type definitions in PSDBFIELD

Call PeopleSoft GSC for resolution.

Click to jump to top of pageClick to jump to parent topicField Integrity

The following table describes the audit queries and resolutions for this area:

Query

Description

Resolution

FIELD-3

The following default fields are invalid.

Modify the default value in record field properties.

FIELD-4

Fields used in record definitions that do not exist in PSDBFIELD

Define the field in PeopleSoft Application Designer.

FIELD-5

Fields have multiple default field labels in PSDBFLDLABL.

Open the field, select default label, and resave.

FIELD-06

Deleted fields have orphaned field labels in PSDBFLDLABL.

DELETE FROM PSDBFLDLABL WHERE FIELDNAME NOT IN (SELECT FIELDNAME FROM PSDBFIELD)

Click to jump to top of pageClick to jump to parent topicMenu Integrity

The following table describes the audit queries and resolutions for this area:

Query

Description

Resolution

MENU-01

A row in the MenuItem table has no corresponding row in the MenuDefinition table.

Issue the following SQL:

DELETE FROM PSMENUITEM WHERE MENUNAME = 'x';

MENU-02

A component-type menu item specifies no component.

Use the Menu Designer to change each of these menu items to reference an existing component.

MENU-03

A menu item has a specified component, but that component has no corresponding row in the ComponentDefinition table.

Use the Menu Designer to change each of these menu items to reference an existing component.

MENU-04

A PeopleCode-type menu item has a specified enabling component, but that component is not specified for any component-type menu item within the same menu. (Such menu items never get enabled at runtime.)

Use the Menu Designer to change each of these menu items to reference a component that is associated with a component-type menu item within the same menu.

MENU-05

A menu has no rows in the MenuItem table.

Use the Menu Designer to add any appropriate menu items to each of these menus.

Click to jump to top of pageClick to jump to parent topicSecurity Integrity

The following table describes the audit queries and resolutions for this area:

Query

Description

Resolution

SEC-1

Authorized Signon Operator does not exist in the Class Definition table. Incomplete permission list: Orphan signon times:

(Verifies the existence of permission lists owning signon times.)

Delete the extra signon times. If this is a permission list that should exist, recreate it through PeopleTools Security.

DELETE FROM PSAUTHSIGNON WHERE CLASSID='x'

SEC-2

Incomplete permission list: Orphan page permissions:

(Verifies the existence of permission lists owning page permissions.)

Delete the extra page permissions. If this is a permission list that should exist, recreate it through PeopleTools Security.

DELETE FROM PSAUTHITEM WHERE CLASSID='x'

SEC-3

Incomplete permission list: Orphan process groups:

(Verifies existence of permission lists owning process groups.)

Delete the extra process group authorizations. If this is a permission list that should exist, recreate it through PeopleTools Security.

DELETE FROM PSAUTHPRCS WHERE CLASSID='x'

SEC-4

Incomplete permission list: Orphan process profiles:

(Verifies existence of permission lists owning process profiles.)

Delete the extra process profiles. If this is a permission list that should exist, recreate it through PeopleTools Security.

DELETE FROM PSPRCSPRFL WHERE CLASSID='x'

SEC-5

Permission list references a nonexistent process group:

(Verifies the existence of process groups.)

Delete the extraneous process groups. If this group should exist, recreate it.

DELETE FROM PSAUTHPRCS WHERE CLASSID='x' AND PRCSGRP = 'y'

SEC-6

User profile references a role that does not exist:

Open the user profile in PeopleTools Security and remove the reference to the Role that does not exist.

SEC-7

Role references a permission list that does not exist:

Open the Role in PeopleTools Security and remove the reference to the Permission List that does not exist.

SEC-8

Role references a user that does not exist in the PSOPRDEFN table.

Remove the user from the PSROLEUSER table.

SEC-9

Permission list references a role that does not exist in the PSROLEDEFN table.

Remove the role from the PSROLECLASS table.

SEC-28

Invalid entries in the PSAUTHITEM table.

(Continues in next row)

Run the following SQL:

DELETE FROM PSAUTHITEM WHERE (PSAUTHITEM.MENUNAME NOT LIKE 'WEBLIB_%' AND PSAUTHITEM.MENUNAME NOT IN ('CLIENTPROCESS', 'DATA_MOVER', 'IMPORT_MANAGER', 'OBJECT_SECURITY', 'QUERY', 'PERFMONPPMI') AND PSAUTHITEM.MENUNAME NOT LIKE ('APPLICATION_DESIGNER%') AND PSAUTHITEM.MENUNAME <>'REN' AND NOT EXISTS (SELECT 'X' FROM PSMENUITEM MI WHERE PSAUTHITEM.MENUNAME = MI.MENUNAME AND PSAUTHITEM.BARNAME = MI.BARNAME AND PSAUTHITEM.BARITEMNAME = MI.ITEMNAME AND (MI.ITEMTYPE IN (0, 1, 2, 3, 4, 6, 7, 8, 10, 11) OR (MI.ITEMTYPE = 5 AND EXISTS (SELECT 'X' FROM PSPNLGRPDEFN GD, PSPNLGROUP GI WHERE MI.PNLGRPNAME = GD.PNLGRPNAME AND MI.MARKET = GD.MARKET AND GD.PNLGRPNAME = GI.PNLGRPNAME AND GD.MARKET = GI.MARKET AND PSAUTHITEM.PNLITEMNAME = GI.ITEMNAME))

SEC-28

(Continued)

OR (MI.ITEMTYPE = 9 AND EXISTS (SELECT 'X' FROM PSPCMNAME PCN, PSPCMPROG PCP WHERE PCN.OBJECTID1 = 3 AND PCN.OBJECTVALUE1 = MI.MENUNAME AND PCN.OBJECTID2 = 4 AND PCN.OBJECTVALUE2 = MI.BARNAME AND PCN.OBJECTID3 = 5 AND PCN.OBJECTVALUE3 = MI.ITEMNAME AND PCN.OBJECTID4 = 12 AND PCN.OBJECTVALUE4 = 'ItemSelected' AND PCN.OBJECTID1 = PCP.OBJECTID1 AND PCN.OBJECTVALUE1 = PCP.OBJECTVALUE1 AND PCN.OBJECTID2 = PCP.OBJECTID2 AND PCN.OBJECTVALUE2 = PCP.OBJECTVALUE2 AND PCN.OBJECTID3 = PCP.OBJECTID3 AND PCN.OBJECTVALUE3 = PCP.OBJECTVALUE3 AND PCN.OBJECTID4 = PCP.OBJECTID4 AND PCN.OBJECTVALUE4 = PCP.OBJECTVALUE4)) OR (MI.ITEMTYPE = 12 AND EXISTS (SELECT 'X' FROM PSXFERITEM XI WHERE MI.MENUNAME = XI.MENUNAME AND MI.ITEMNAME = XI.ITEMNAME)))))

SEC-28

(Continued)

OR (PSAUTHITEM.MENUNAME LIKE 'WEBLIB_%' AND NOT EXISTS (SELECT 'X' FROM PSPCMPROG PCP WHERE PCP.OBJECTID1 = 1 AND PCP.OBJECTVALUE1 = PSAUTHITEM.MENUNAME AND PCP.OBJECTID2 = 2 AND PCP.OBJECTVALUE2 = PSAUTHITEM.BARNAME)) OR (PSAUTHITEM.MENUNAME IN ('CLIENTPROCESS', 'DATA_MOVER', 'IMPORT_MANAGER', 'OBJECT_SECURITY', 'QUERY', 'PERFMONPPMI') AND (PSAUTHITEM.BARNAME <> ' ' OR PSAUTHITEM.BARITEMNAME <> ' ' OR PSAUTHITEM.PNLITEMNAME <> ' ')) OR (PSAUTHITEM.MENUNAME LIKE ('APPLICATION_DESIGNER%') AND ((PSAUTHITEM.BARNAME <> ' ' AND PSAUTHITEM.BARNAME NOT IN (SELECT OBJNAME FROM PS_APP_DES_OBJECTS WHERE PSAUTHITEM.BARNAME = OBJNAME)) OR PSAUTHITEM.BARITEMNAME <> ' ' OR PSAUTHITEM.PNLITEMNAME <> ' ')) OR (PSAUTHITEM.MENUNAME = 'REN' AND ((PSAUTHITEM.BARNAME <> ' ' AND PSAUTHITEM.BARNAME NOT IN (SELECT OBJNAME FROM PS_APP_DES_OBJECTS WHERE PSAUTHITEM.BARNAME = OBJNAME)) OR PSAUTHITEM.BARITEMNAME <> ' ' OR PSAUTHITEM.PNLITEMNAME <> ' ' ))

SEC-29

The displayed PSPRSMPERM rows contain invalid PORTAL_PERMTYPE values.

Run the following SQL:

DELETE from PSPRSMPERM where PORTAL_PERMTYPE = ' ' and exists (select 'x' from PSPRSMPERM PP2 where PSPRSMPERM.PORTAL_NAME = PP2.PORTAL_NAME and PSPRSMPERM.PORTAL_REFTYPE = PP2.PORTAL_REFTYPE and PSPRSMPERM.PORTAL_OBJNAME = PP2.PORTAL_OBJNAME and PSPRSMPERM.PORTAL_PERMNAME = PP2.PORTAL_PERMNAME and PP2.PORTAL_PERMTYPE <> ' '); UPDATE PSPRSMPERM set PORTAL_PERMTYPE = 'P' where PORTAL_PERMTYPE = ' ' and exists (select 'x' from PSCLASSDEFN where CLASSID = PSPRSMPERM.PORTAL_PERMNAME);

Click to jump to top of pageClick to jump to parent topicPage Integrity

The following table describes the audit queries and resolutions for this area:

Query

Description

Resolution

PAGE-01

Page definition's page field count is not equal to the count of its page fields in the PageField table, and there is at least one row in the PageField table for that page.

Enter the following SQL:

SELECT COUNT(*) FROM PSPNLFIELD WHERE PNLNAME = 'x'; UPDATE PSPNLDEFN SET FIELDCOUNT = count WHERE PNLNAME = 'x';

PAGE-02

Page definition's page field count is not equal to zero, but there are no rows in the PageField table for that page definition.

Enter the following SQL:

UPDATE PSPNLDEFN SET FIELDCOUNT = 0 WHERE PNLNAME = 'x';

PAGE-03

A subpage contains itself as a page field.

Use the Page Designer to change each of these page fields to reference a different subpage.

PAGE-04

A row in the PageField has no corresponding row in the PageDefinition table.

Issue the following SQL:

DELETE FROM PSPNLFIELD WHERE PNLNAME = 'x';

PAGE-05

A subpage-type page field has no corresponding row in the Page Definition table for its specified subpage.

Use the Page Designer to change each of these page fields to reference an existing subpage.

PAGE-06

A page field's specified record/field has no corresponding row in the RecordField table.

Use the Page Designer to change each of these page fields to reference an existing record/field.

PAGE-07

A row in the ComponentItem table has no corresponding row in the ComponentDefinition table.

Issue the following SQL:

DELETE FROM PSPNLGROUP WHERE PNLGRPNAME = 'x';

PAGE-08

A component item's specified page has no corresponding row in the PageDefinition table.

Use Application Designer to replace each of these component items with one that references an existing page.

PAGE-09

A component's specified access detail page has no corresponding row in the PageDefinition table.

Use Application Designer to change each of these components to reference an access detail page that exists.

PAGE -10

A component's specified search record has no corresponding row in the RecordDefinition table.

Use Application Designer to change each of these components to reference a search record that exists.

PAGE-11

A component's specified add search record has no corresponding row in the RecordDefinition table.

Use Application Designer to change each of these components to reference an add search record that exists.

Click to jump to top of pageClick to jump to parent topicOptimization Integrity

The following table describes the audit queries and resolutions for this area:

Query

Description

Resolution

OPTZN-01

Problem type records that do not have matching record definitions.

Execute the following SQL:

DELETE FROM PSOPTREC WHERE RECNAME = 'recordname'; DELETE FROM PSOPTFIELD WHERE RECNAME = 'recordname';

OPTZN-02

Optimization delete records that do not have matching definitions.

In PeopleSoft Application Designer, open the base record definition properties. Clear the optimization delete record name, and perform an alter.

OPTZN-03

Optimization base record has fields that delete record does not.

Using PeopleSoft Application Designer, delete the optimization delete record definition, drop the table, and recreate it by cloning the base record. Run Build. You may need to recreate triggers on the base record on some platforms where deferred processing is not done.

OPTZN-04

Optimization delete record has fields that base record does not.

Using PeopleSoft Application Designer, delete the optimization delete record definition, drop the table and recreate it by cloning the base record. Run Build. You may need to recreate triggers on the base record on some platforms where deferred processing is not done.

OPTZN-06

Optimization base record defn has the trigger flag set but has no delete record name, or vice versa.

Using PeopleSoft Application Designer, open the record definition properties, make sure that the optimization delete record name is set, and save. Build the record with the create triggers check box set to create optimization triggers.

OPTZN-07

Optimization records that need to have trigger flag set and do not.

Using PeopleSoft Application Designer, open the record definition properties, make sure that the optimization delete record name is set, and save. Build the record with the create triggers check box set to create optimization triggers.

OPTZN-08

Optimization records that have trigger flag set but are not marked readable in any problem type.

Using PeopleSoft Application Designer, open the record definition properties, clear the optimization delete record name and alter the record to drop optimization triggers as they are no longer needed but affect performance.

OPTZN-09

Optimization Tools table PSOPTREC is empty for the listed problem types.

In PeopleSoft Application Designer, open the problem type definition and select the Records tab. Make sure that the problem type definition contains a list of record names. If there are no records listed, the problem type definition needs to be corrected in order to add the list of records for that problem type. Save the problem type definition.

OPTZN-10

Optimization Tools table PSOPTSYNC does not have an entry for the listed opt records, that are marked READABLE in PSOPTREC.

Open the problem type definition in Application Designer, make sure that the readable flags are set correctly for each readable record, and save the problem type definition.

OPTZN-11

Optimization Tools table PSOPTSYNC does not have an entry with PROBINST = $ALL$ and is marked as NON SCENARIO_MANAGED and READABLE in PSOPTREC.

Using Problem Type Designer, make sure that the readable flags are set correctly for each readable record. Make sure that the scenario_managed flags are set correctly. Save the problem type definition.

OPTZN-12

Optimization Tools table PSOPTSYNC has extra entries for the listed record names that are not there in PSOPTREC.

Submit the following SQL to remove extra entries in PSOPTSYNC table.

Delete PSOPTSYNC Where RECNAME NOT IN (SELECT RECNAME FROM PSOPTREC)

OPTZN-13

The following record names in Optimization Tools table PSOPTREC do not have at least one field listed in the PSOPTFIELD table.

Open the problem type definition in Application Designer. Make sure that for every record in the problem type definition at least one field is selected to be loaded in the problem instance.

OPTZN-14

For the following transaction parameter of type RECARRAY, the default value contains an invalid record name.

Open the problem type definition in PeopleSoft Application Designer. Inspect the offending transaction parameter and make sure that the default value contains a valid record name.

OPTZN-15

PSOPTSOLVERCODE table is empty for the listed problem types.

You may ignore this if none of the problem types need a third-party solver. Otherwise, populate the PSOPTSOLVERCODE table with the third-party solver license key. Select PeopleTools, Utilities, Optimization, Solver Licenses.

OPTZN-16

PSOPTSOLVERCODE table has a null licence key for the listed problem types.

You may ignore this if the plugin does not need a third-party solver. Otherwise populate the PSOPTSOLVERCODE table with the third-party solver licence key. Select PeopleTools, Utilities, Optimization, Solver Licenses.

OPTZN-17

This query identifies readable base records in an analytic type that don't have an optimization delete record specified.

In Application Designer, either specify a delete record for the analytic type record, or clear the Readable check box for the analytic type record.

OPTZN-18

This query identifies base records in an analytic type that have an optimization delete record specified, but aren't readable.

In Application Designer, either select the Readable check box for the analytic type record, or don't specify an optimization delete record for the analytic type record.

OPTZN-19

This query identifies base records and their associated delete records in an analytic type that don't have all fields in the same order.

In Application Designer, change the field order of one of the records to match the field order of the other record.

OPTZN-21

This query identifies fields in main records used in an analytic model that aren't selected in the analytic type associated with that model.

In Application Designer, either specify an appropriate record in the analytic model, or select the appropriate corresponding fields in the analytic type definition.

OPTZN-22

This query identifies fields in aggregate records used in an analytic model that aren't selected in the analytic type associated with the model.

In Application Designer, either specify an appropriate record in the analytic model, or select the appropriate corresponding fields in the analytic type definition.

Click to jump to top of pageClick to jump to parent topicPeopleCode Integrity

The following table describes the audit queries and resolutions for this area:

Query

Description

Resolution

PEOPLECODE-1

The PeopleCode Name table contains a program name that does not exist in PcmProgram table

Run the following SQL:

DELETE FROM PSPCMNAME WHERE NOT EXISTS (SELECT 'X'FROM PSPCMPROG B WHERE B.OBJECTID1 = PSPCMNAME.OBJECTID1 AND B.OBJECTVALUE1 = PSPCMNAME.OBJECTVALUE1 AND B.OBJECTID2 = PSPCMNAME.OBJECTID2 AND B.OBJECTVALUE2 = PSPCMNAME.OBJECTVALUE2 AND B.OBJECTID3 = PSPCMNAME.OBJECTID3 AND B.OBJECTVALUE3 = PSPCMNAME.OBJECTVALUE3 AND B.OBJECTID4 = PSPCMNAME.OBJECTID4 AND B.OBJECTVALUE4 = PSPCMNAME.OBJECTVALUE4 AND B.OBJECTID5 = PSPCMNAME.OBJECTID5 AND B.OBJECTVALUE5 = PSPCMNAME.OBJECTVALUE5 AND B.OBJECTID6 = PSPCMNAME.OBJECTID6 AND B.OBJECTVALUE6 = PSPCMNAME.OBJECTVALUE6)

PEOPLECODE-2

The PeopleCode Program table contains a program name that does not exist in the PcmName table.

Run the following SQL:

DELETE FROM PSPCMPROG WHERE NAMECOUNT <> 0 AND NOT EXISTS (SELECT 'X'FROM PSPCMNAME B WHERE PSPCMPROG.OBJECTID1 = B.OBJECTID1 AND PSPCMPROG.OBJECTVALUE1 = B.OBJECTVALUE1 AND PSPCMPROG.OBJECTID2 = B.OBJECTID2 AND PSPCMPROG.OBJECTVALUE2 = B.OBJECTVALUE2 AND PSPCMPROG.OBJECTID3 = B.OBJECTID3 AND PSPCMPROG.OBJECTVALUE3 = B.OBJECTVALUE3 AND PSPCMPROG.OBJECTID4 = B.OBJECTID4 AND PSPCMPROG.OBJECTVALUE4 = B.OBJECTVALUE4 AND PSPCMPROG.OBJECTID5 = B.OBJECTID5 AND PSPCMPROG.OBJECTVALUE5 = B.OBJECTVALUE5 AND PSPCMPROG.OBJECTID6 = B.OBJECTID6 AND PSPCMPROG.OBJECTVALUE6 = B.OBJECTVALUE6)

PEOPLECODE-3

The PeopleCode Program table name count does not match the record count in PcmName table.

Run the following SQL:

UPDATE PSPCMPROG SET NAMECOUNT = (SELECT COUNT(*)FROM PSPCMNAME C WHERE C.OBJECTID1 = PSPCMPROG.OBJECTID1 AND C.OBJECTVALUE1 = PSPCMPROG.OBJECTVALUE1 AND C.OBJECTID2 = PSPCMPROG.OBJECTID2 AND C.OBJECTVALUE2 = PSPCMPROG.OBJECTVALUE2 AND C.OBJECTID3 = PSPCMPROG.OBJECTID3 AND C.OBJECTVALUE3 = PSPCMPROG.OBJECTVALUE3 AND C.OBJECTID4 = PSPCMPROG.OBJECTID4 AND C.OBJECTVALUE4 = PSPCMPROG.OBJECTVALUE4 AND C.OBJECTID5 = PSPCMPROG.OBJECTID5 AND C.OBJECTVALUE5 = PSPCMPROG.OBJECTVALUE5 AND C.OBJECTID6 = PSPCMPROG.OBJECTID6 AND C.OBJECTVALUE6 = PSPCMPROG.OBJECTVALUE6)

PEOPLECODE-4

PeopleCode contains invalid FILELAYOUT References.

Open the PeopleCode program in PeopleSoft Application Designer and correct the invalid reference.

PEOPLECODE-5

PeopleCode reference to an invalid record or field.

Open the PeopleCode program in PeopleSoft Application Designer and correct the invalid reference.

PEOPLECODE-6

PeopleCode reference to an invalid field.

Open the PeopleCode program in PeopleSoft Application Designer and correct the invalid field name.

Click to jump to top of pageClick to jump to parent topicProcess Scheduler

The following table describes the audit queries and resolutions for this area:

Query

Description

Resolution

PRCSSCHED-01

SQR-Related Process Definitions (PS_PRCSDEFN) that override the PARMLIST field from the Process Type Definition (PS_PRCSTYPEDEFN).

For the listed processes, select Process Scheduler, Processes, Override Options. Remove the value that is assigned to the Parameter List field.

Note. This PRRSCHED-01 is intended to be a warning. If the override of the parameter list that is specified in the process type definition is intentional, then the above action can be bypassed.

PRCSSCHED-03

Process Definitions (PS_PRCSDEFN), where the OUTDESTTYPE should be set to NONE.

For the listed processes, select Process Scheduler, Processes Destination. In the Output Destination Options group, set the Type option to (None).

PRCSSCHED-04

Process Definitions, where the API AWARE should be set to true.

For the listed processes, select Process Scheduler, Processes, Process Definition. Select the check box that reads API Aware.

If API Aware is not marked, this process gets an incorrect run status when it's viewed from Process Monitor. For additional information, please refer to the Process Scheduler PeopleBook.

PRCSSCHED-05

Process Definitions, where process type is not found in the Process Type Definition .

This occurs when a Process Definition is copied from another PeopleSoft database by using project upgrade. However, the Process Type definition that is associated with this Process Definition is not copied into the database. Review the project upgrade that is used to create the Process Definition. Create another project upgrade to copy Process Type definition from the database where the Process Definition originated.

PRCSSCHED-06

Process Job Item (PS_PRCSJOBITEM), where Process Type is listed as a job item, but is not found in the Process Definition (PS_PRCSDEFN).

This occurs when a PSJob is copied from another PeopleSoft database by using a project upgrade. However, the Process Definition for one or more job items in the PSJob is not copied from the database. Review the project upgrade that is used to create the PSJob. Create another project upgrade to copy the Process Definitions that are identified in this report from the database where the PSJob originated.

PRCSSCHED-07

Server Class List (PS_SERVERCLASS), where Process Type is not found in the Process Type Definition (PS_PRCSTYPEDEFN).

This occurs when a Server Definition is copied from another database by using a project upgrade. However, a process type in the Server Class list is not found in the Process Type Definition. Create another project upgrade to copy the Process Type definition from the database where the Server Definition is created.

PRCSSCHED-08

Process Definitions, where the process category is invalid

For the listed processes, select Process Scheduler, Processes, Process Definition. Correct the Process Category.

PRCSSCHED-09

Job Definitions, where the process category is invalid.

For the listed jobs, select Process Scheduler, Jobs, Job Definition. Correct the Process Category.

PRCSSCHED-10

Process Definitions, where the process category is missing.

For the listed processes, select Process Scheduler, Processes, Process Definition. Specify a Process Category.

PRCSSCHED-11

Job Definitions, where the process category is missing.

For the listed jobs, select Process Scheduler, Jobs, Job Definition. Specify a Process Category.

PRCSSCHED-12

Server Categories, where a category defined for a server does not exist in process category definition.

For the listed servers, select Process Scheduler, Servers, Server Definition. Remove the invalid Process Category.

PRCSSCHED-13

Server Categories, where a server is missing a process category definition.

For the listed servers, select Process Scheduler, Servers, Server Definition.

A warning message appears when you open the page, and the missing Process Category is added to the server when the page is saved.

PRCSSCHED-14

Process Scheduler Queue, where a queued/pending request specifies a category that does not exist in process category definition.

Run the following SQL:

DELETE FROM PSPRCSQUE SWHERE S.RUNSTATUS IN('5', '16') AND S.SERVERNAMERQST <> '' AND S.PRCSCATEGORY NOT IN (SELECT PRCSCATEGORY FROM PS_SERVERCATEGORY WHERE SERVERNAME=S.SERVERNAMERQST AND MAXCONCURRENT > 0)

PRCSSCHED-15

Process Definitions, where a process specifies an invalid destination folder.

For the listed processes, select Process Scheduler, Processes, Destination. Correct the Destination Folder or blank it out.

PRCSSCHED-16

Process Definitions, where a process definition specifies a recovery process that does not exist.

For the listed processes, select Process Scheduler, Processes, Process Definition Options. Correct the recovery process or blank it out.

PRCSSCHED-17

Job Definitions, where a job definition specifies a recovery process that does not exist.

For the listed jobs, select Process Scheduler, Jobs, Job Definition Options. Correct the recovery process or blank it out.

Click to jump to top of pageClick to jump to parent topicQuery Integrity

The following table describes the audit queries and resolutions for this area:

Query

Description

Resolution

QUERY-01

Query Definition Select count does not match the record count that is in the Query Select table.

The query definition is corrupt. Run the following SQL to delete the entire query definition:

DELETE FROM PSQRYDEFN WHERE OPRID = 'X' AND QRYNAME = 'Y' DELETE FROM PSQRYSELECT WHERE OPRID = 'X' AND QRYNAME = 'Y' DELETE FROM PSQRYRECORD WHERE OPRID = 'X' AND QRYNAME = 'Y' DELETE FROM PSQRYFIELD WHERE OPRID = 'X' AND QRYNAME = 'Y' DELETE FROM PSQRYCRITERIA WHERE OPRID = 'X' AND QRYNAME = 'Y' DELETE FROM PSQRYEXPR WHERE OPRID = 'X' AND QRYNAME = 'Y' DELETE FROM PSQRYBIND WHERE OPRID = 'X' AND QRYNAME = 'Y'

QUERY-02

Query Definition Expression count does not match the record count in the Query Expression table.

Run the following SQL:

UPDATE PSQRYDEFN SET EXPCOUNT = (SELECT COUNT(*) FROM PSQRYEXPR C where oprid = ‘x’ AND qryname = ‘y’) where oprid = ‘x’ AND qryname = ‘y’

QUERY-03

Query Definition Bind count does not match the record count in the Query Bind table

Run the following SQL:

UPDATE PSQRYDEFN SET BNDCOUNT = (SELECT COUNT(*) FROM PSQRYBIND where oprid = ‘x’ AND qryname = ‘y’) where oprid = ‘x’ AND qryname = ‘y’

QUERY-04

Query Definition Record name does not exist in the Record Definition table.

See resolution for QUERY-07.

QUERY-05

Query Definition Record JoinRecord name does not exist in the Query Record table

See resolution for QUERY-01.

QUERY-06

Query Definition Record JoinField name does not exist in the Query Field table.

See resolution for QUERY-01.

QUERY-07

Query Field Record Name does not exist in Record Definition Table

To salvage the query, you must use PeopleSoft Application Designer to re-create the record definition.

Having re-created the record, run Query and open the offending query. Remove or repair the affected areas and save the query.

Or, if the query is not important, you can delete the entire query definition by using the resolution for QRY-01.

QUERY-08

Query Definition Field name does not exist in the Field Definition table

If the record on which this field appears is deleted, you have seen errors for every referenced field that belongs to the deleted record. If this is the case, see the resolution for QUERY-1.

If this is not the case, some fields that the query depends on are either deleted or renamed. Run Query and open the offending query. Query automatically repairs itself and updates the query definition in the database.

QUERY-09

Query Selection Record count does not match the record count in Query Record table.

See resolution for QUERY-01.

QUERY-10

Query Selection Field count does not match the record count in Query Field table.

See resolution for QUERY-01.

QUERY-11

Query Selection Criteria count does not match the record count in Query Criteria table.

See resolution for QUERY-01.

QUERY-11A

Query Selection Criteria having count does not match the record count in Query Criteria table.

See resolution for QUERY-01.

QUERY-12

Query Selection Parent select number does not exist in Query Select table.

See resolution for QUERY-01.

QUERY-13

Query Criteria Selection-Left does not exist in the Query Selection table.

Run Query and delete the corrupted criteria entry. If you can't open the query, run the following SQL to delete the corrupted criteria entry:

DELETE FROM PSQRYCRITERIA WHERE OPRID = 'X' AND QRYNAME = 'Y' AND CRTNUM = count

QUERY-14

Query Criteria Selection-Right1 does not exist in the Query Selection table.

See resolution for QUERY-13.

QUERY-15

Query Criteria Selection-Right2 does not exist in the Query Selection table.

See resolution for QUERY-13.

QUERY-16

Query Criteria Field-Left does not exist in the Query Selection table.

See resolution for QUERY-13.

QUERY-17

Query Criteria Field-Right1 does not exist in the Query Selection table.

See resolution for QUERY-13.

QUERY-18

Query Criteria Field-Right2 does not exist in the Query Selection table.

See resolution for QUERY-13.

QUERY-19

Query Criteria Expression-Right1 does not exist in the Query Selection table.

See resolution for QUERY-13.

QUERY-20

Query Criteria Expression-Right2 does not exist in the Query Selection table.

See resolution for QUERY-13.

QUERY-22

Following Queries Were Created Without PUBLIC Access.

This is normal; the audit insures that PeopleSoft does not deliver nonpublic queries as part of its standard delivered products.

QUERY-23

The listed queries reference non-existent database records.

This is an internal PeopleSoft audit. Call PeopleSoft GSC for resolution.

The query definition is corrupt. Run the following SQL to delete the entire query definition:

DELETE FROM PSQRYDEFN WHERE OPRID = 'X' AND QRYNAME = 'Y' DELETE FROM PSQRYSELECT WHERE OPRID = 'X' AND QRYNAME = 'Y' DELETE FROM PSQRYRECORD WHERE OPRID = 'X' AND QRYNAME = 'Y' DELETE FROM PSQRYFIELD WHERE OPRID = 'X' AND QRYNAME = 'Y' DELETE FROM PSQRYCRITERIA WHERE OPRID = 'X' AND QRYNAME = 'Y' DELETE FROM PSQRYEXPR WHERE OPRID = 'X' AND QRYNAME = 'Y' DELETE FROM PSQRYBIND WHERE OPRID = 'X' AND QRYNAME = 'Y'

QUERY-24

The listed queries were created with the name UNTITLED.

Queries should not be saved as UNTITLED. You must either rename or delete these queries.

QUERY-25

This audit identifies any blank query names.

You must either rename the query or delete the query.

QUERY-26

This audit identifies queries that contain unions but select an unequal number of fields.

Ensure that every select statement in the query has an equal number of fields selected. These fields must also match in display type and length.

Click to jump to top of pageClick to jump to parent topicRecord Integrity

The following table describes the audit queries and resolutions for this area:

Query

Description

Resolution

RECORD-1

Record Definition Field count does not match the number of records in Record Field table.

Run the following SQL:

SELECT COUNT(*) FROM PSRECFIELD WHERE RECNAME = 'X'; UPDATE PSRECDEFN SET FIELDCOUNT = COUNT WHERE RECNAME = 'X';

RECORD-2

Record Definition Fields do not exist in Record Field table.

Run the following SQL:

UPDATE PSRECDEFN SET FIELDCOUNT = 0 WHERE RECNAME = 'X';

Or

DELETE FROM PSRECDEFN WHERE RECNAME = 'X';

RECORD-3

Record Definition Parent Record does not exist in Record Definition table.

Use Application Designer to open the definition. Select File, Object Properties, Use and specify a valid parent record.

RECORD-4

Record Definition SubRecord does not exist in Record Definition table.

Use Application Designer to open the definition. Select File, Object Properties, Type and specify a valid subrecord.

RECORD-5

Record Definition Query Security Record does not exist in Record Definition table

Use Application Designer to open the definition. Select File, Object Properties, Use and specify a valid query security record.

RECORD-6

Record Field definitions contain record names that do not exist in the Record Definition table.

Run the following SQL:

DELETE FROM PSRECFIELD WHERE RECNAME = 'X'

RECORD-7

DBField records do not exist for the following RecField table Fields.

Use PeopleSoft Application Designer to open the definition and fix the invalid fields.

RECORD-8

Record definitions do not exist for the following RecField table SubRecords.

Use PeopleSoft Application Designer to open the definition and fix the invalid fields.

RECORD-9

IDENTIFY INVALID RECORDS IN RECORD GROUP DEFINITIONS.

Run the following SQL:

DELETE FROM PS_REC_GROUP_REC WHERE RECNAME NOT IN (SELECT DISTINCT RECNAME FROM PSRECDEFN)

RECORD-11

Records with more than two Longs defined.

This depends on whether the database platform supports it or not. If it does not, then those records must be modified.

RECORD-12

Records with a blank or null RECNAME.

Run the following SQL:

DELETE FROM PSRECDEFN WHERE RECNAME = ''

RECORD-13

Temp Records that specify a non-standard SQL table name.

Run the following SQL:

UPDATE PSRECDEFN SET SQLTABLENAME = ' ' WHERE RECTYPE = 7 AND SQLTABLENAME <> ' '

Click to jump to top of pageClick to jump to parent topicRelated Language Integrity

The following table describes the audit queries and resolutions for this area:

Query

Description

Resolution

SYSLANG-01

Base Language Records that are found in the PSRECDEFNLANG table.

Run the following SQL:

DELETE FROM PSRECDEFNLANG WHERE LANGUAGE_CD = (SELECT B.LANGUAGE_CD FROM PSOPTIONS B)

SYSLANG-02

Base Language Fields that are found in the PSDBFIELDLANG table.

Check the value of LANGUAGE_CD on PSOPTIONS; this is the base language. Entries with this language code are found in PSDBFIELDLANG. Base language entries should only be in PSDBFIELD.

After you establish that the base language entries in PSDBFIELD are correct, you delete them from PSDBFIELDLANG as follows:

DELETE FROM PSDBFIELDLANG WHERE LANGUAGE_CD = (SELECT LANGUAGE_CD FROM PSOPTIONS)

SYSLANG-03

Foreign Language Records that are found in PSRECDEFNLANG table without related Base Records from PSRECDEFN.

Run the following SQL:

DELETE FROM PSRECDEFNLANG WHERE NOT EXISTS (SELECT 'X' FROM PSRECDEFN B WHERE PSRECDEFNLANG.RECNAME = B.RECNAME) AND PSRECDEFNLANG.LANGUAGE_CD <> (SELECT C.LANGUAGE_CD FROM PSOPTIONS C)

SYSLANG-04

Foreign Language Fields that are found in the PSDBFIELDLANG table without related Base Fields from PSDBFIELD.

Run the following SQL:

DELETE FROM PSDBFIELDLANG WHERE NOT EXISTS (SELECT 'X' FROM PSDBFIELD B WHERE PSDBFIELDLANG.FIELDNAME=B.FIELDNAME) AND PSDBFIELDLANG.LANGUAGE_CD <> (SELECT LANGUAGE_CD FROM PSOPTIONS)

SYSLANG-05

Foreign Language Translate Fields that are found in the XLATTABLE table without related Base Language Translate Fields.

Either delete the offending entries via SQL, or use PeopleSoft Application Designer to add the equivalent entries in the base language of the database.

SYSLANG-07

Related Language Records Which Are Not Valid Records.

In PeopleSoft Application Designer, delete the specified Related Language Records.

SYSLANG-08

The displayed Related Language Records are effective-dated but do not have an EFFDT field defined.

In PeopleSoft Application Designer, add EFFDT to the specified related language table.

SYSLANG-09

The displayed Related Language Records point to another Related Language Record

In PeopleSoft Application Designer, delete the related language reference for each record that is listed.

SYSLANG-10

The displayed Related Language Records do not contain a LANGUAGE_CD as a key field.

In PeopleSoft Application Designer, make LANGUAGE_CD field a key on the specified Related Language Tables.

SYSLANG-11

The displayed Related Language Views Have The Wrong Structure Defined.

In PeopleSoft Application Designer, make the key structures that are on the specified Related Language view identical to the key structure that is on the Base Table/view.

SYSLANG-12

The displayed Related Language Records Have The Wrong Key Structure Defined.

In Application Designer, make the key structures on the specified Related Language Tables identical to the key structure on the Base Table.

SYSLANG-13

Identify related language records that have more than one base record defined.

In PeopleSoft Application Designer, remove the related language table link to one of the base records.

SYSLANG-14

Identify related language RECORDS that have the wrong structure defined

In PeopleSoft Application Designer, make the key structures on the specified Related Language Tables identical to the key structure that is on the Base Table. Also remove any fields, except language_cd, on the related language record that do not exist on the base record.

SYSLANG-15

The displayed Related Language fields are orphaned.

(Continues in next row)

For each row on the related language record there must be a single row on the base table with matching keys. An orphan row is a row of data on the related language record that does not have a corresponding parent row on the base table. Orphan rows must be deleted.

Select against the related language table by using the key fields that are listed in the report to find discrepancies.

To fix this problem, using the platform's query tools, select against the related language table, by using the fields that are listed in the report, where the values do not match a row that is on the base table. For every row on the report there is an orphan row on the table. Do a SELECT first to ensure you get the same row count as the report, then delete the selected rows. Following is example SQL for a Microsoft SQL Server database:

SYSLANG-15

(Continued)

SELECT * FROM PSCONTDEFNLANG A WHERE NOT EXISTS (SELECT 'X' FROM PSCONTDEFN B WHERE A.ALTCONTNUM = B.ALTCONTNUM AND A.CONTNAME = B.CONTNAME AND A.CONTTYPE = B.CONTTYPE) DELETE FROM PSCONTDEFNLANG WHERE NOT EXISTS (SELECT 'X' FROM PSCONTDEFN B WHERE PSCONTDEFNLANG.ALTCONTNUM = B.ALTCONTNUM AND PSCONTDEFNLANG.CONTNAME = B.CONTNAME AND PSCONTDEFNLANG.CONTTYPE = B.CONTTYPE)

For each field name listed:

SELECT * FROM Related_Language_Record A WHERE NOT EXISTS (SELECT 'X' FROM BaseRecord B WHERE A.FieldName = B.FieldName)

Click to jump to top of pageClick to jump to parent topicSQL Integrity

The following table describes the audit queries and resolutions for this area:

Query

Description

Resolution

SQL-01

SQL text without a base definition.

Run the following SQL:

DELETE FROM PSSQLTEXTDEFN WHERE SQLID NOT IN (SELECT DISTINCT SQLID FROM PSSQLDEFN)

SQL-02

SQL definitions without SQL text.

Run the following SQL:

DELETE FROM PSSQLDEFN WHERE SQLID NOT IN ( SELECT DISTINCT SQLID FROM PSSQLTEXTDEFN)

SQL-03

SQL descriptions without a base definition.

Run the following SQL:

DELETE FROM PSSQLDESCR WHERE SQLID NOT IN ( SELECT DISTINCT SQLID FROM PSSQLDEFN)

SQL-04

SQL descriptions without associated SQL text.

Run the following SQL:

DELETE FROM PSSQLDESCR WHERE SQLID NOT IN ( SELECT DISTINCT SQLID FROM PSSQLTEXTDEFN)

SQL-05

AE SQL without SQL definitions.

This reveals Application Engine SQL Actions that do not contain any SQL code within them.

Open the Application Engine program and complete the entry of the SQL before attempting to run the program.

If the empty SQL actions are delivered by PeopleSoft, open an incident with the GSC to report the corrupt AE program.

SQL-06

AE SQL that's not referenced.

This reveals an Application Engine SQL object that is not being referenced by an AE program. This indicates that the AE program is deleted but the associated SQL is not. The orphaned SQL does not cause issues other than consuming disk space.

If the orphaned SQL is delivered by PeopleSoft, open an incident with GSC to make sure that it is not a symptom of a larger problem, such as a corrupted AE application.

SQL-07

Record Views/Dynamic Views without SQL definitions.

Complete the entry of the record view or dynamic view before attempting to build or create the view. Each record should be opened, and the SQL should be entered as required.

SQL-08

View SQL that are not referenced by record or dynamic views.

Run the following SQL:

DELETE FROM PSSQLDEFN WHERE SQLTYPE = 2 AND SQLID NOT IN (SELECT DISTINCT RECNAME FROM PSRECDEFN WHERE RECTYPE = 5 OR RECTYPE = 1) DELETE FROM PSSQLDESCR WHERE SQLTYPE = 2 AND SQLID NOT IN (SELECT DISTINCT RECNAME FROM PSRECDEFN WHERE RECTYPE = 5 OR RECTYPE = 1) DELETE FROM PSSQLTEXTDEFN WHERE SQLTYPE = 2 AND SQLID NOT IN (SELECT DISTINCT RECNAME FROM PSRECDEFN WHERE RECTYPE = 5 OR RECTYPE = 1)

Click to jump to top of pageClick to jump to parent topicTree Integrity

The following table describes the audit queries and resolutions for this area:

Query

Description

Resolution

TREE-01

Tree Structure table contains Level Record name that does not exist in Record Definition table

Use Tree Manager to open the structure and fix the invalid fields.

TREE-02

Tree Structure table contains Level Page name that does not exist in Page Definition table.

Use Tree Manager to open the structure and fix the invalid fields.

TREE-03

Tree Structure table contains Node Record name that does not exist in Record Definition table.

Use Tree Manager to open the structure and fix the invalid fields.

TREE-04

Tree Structure table contains Node Field name that does not exist in RecordField table.

Use Tree Manager to open the structure and fix the invalid fields.

TREE-05

Tree Structure table contains Node Page name that does not exist in Page Definition table.

Use Tree Manager to open the structure and fix the invalid fields.

TREE-06

Tree Structure table contains Detail Record name that does not exist in Record Definition table.

Use Tree Manager to open the structure and fix the invalid fields.

TREE-07

Tree Structure table contains Detail Record name that does not exist in Record Definition table.

Use Tree Manager to open the structure and fix the invalid fields.

TREE-08

Tree Structure table contains Detail Page name that does not exist in Page Definition table.

Use Tree Manager to open the structure and fix the invalid fields.

TREE-09

Tree Structure table contains Summary Tree that does not exist in Tree Level table.

See the following section on Notes for TREE-09.

TREE-10

Tree Structure table contains Level Menu-Menu Bar combination that does not exist.

Use Tree Manager to open the structure and fix the invalid fields.

TREE-11

Tree Structure table contains Node Menu-Menu Bar combination that does not exist.

Use Tree Manager to open the structure and fix the invalid fields.

TREE-12

Tree Structure table contains Detail Menu-Menu Bar combination that does not exist.

Use Tree Manager to open the structure and fix the invalid fields.

TREE-13

Tree Structure table contains Level Menu-Page combination that does not exist.

Use Tree Manager to open the structure and fix the invalid fields.

TREE-14

Tree Structure table contains Node Menu-Page combination that does not exist.

Use Tree Manager to open the structure and fix the invalid fields.

TREE-15

Tree Structure table contains Detail Menu-Page combination that does not exist.

Use Tree Manager to open the structure and fix the invalid fields.

TREE-16

Tree Definition Level count does not match the record count in Tree Level table.

Set the Count in the Tree Definition table to reflect the actual number of records that are in the PSTREELEVEL table for this tree branch. Note that a problem may occur if some levels are missing and there are still nodes referencing them. In this case, the nodes do not open the tree correctly. The third SELECT checks for the previous situation. If this is the problem, run PSTED, and define the missing levels, save the tree, and then close and reopen it.

SELECT COUNT(*) FROM PSTREELEVEL WHERE TREE_NAME = 'tree_name' AND SETID = 'setid' AND EFFDT = 'effdt'; UPDATE PSTREEDEFN SET LEVEL_COUNT = $count WHERE TREE_NAME = 'tree_name' AND SETID = 'setid' AND EFFDT = 'effdt';

TREE-17

Tree Definition Node count does not match the record count in Tree Node table.

Set the count in the Tree Definition table to reflect the actual number of the records that are in the PSTREENODE table for this tree branch.

SELECT COUNT(*) FROM PSTREENODE WHERE TREE_NAME = 'tree_name' AND SETID = 'setid' AND EFFDT = 'effdt' AND TREE_BRANCH = 'tree_branch_name'; UPDATE PSTREEDEFN SET NODE_COUNT = $count WHERE TREE_NAME = 'tree_name' AND SETID = 'setid' AND EFFDT = 'effdt' TREE_BRANCH = 'tree_branch_name';

TREE-18

Tree Definition Leaf count does not match the record count in Tree Leaf table.

Set the Count in the Tree Definition table to reflect the actual number of records that are in the PSTREELEAF table for this branch.

SELECT COUNT (*) FROM PSTREELEAF WHERE TREE_NAME = 'tree_name' AND SETID = 'setid' AND EFFDT = 'effdt' TREE_BRANCH = 'tree_branch_name'; UPDATE PSTREEDEFN SET LEAF_COUNT = $count WHERE TREE_NAME = 'tree_name' AND SETID = 'setid' AND EFFDT = 'effdt' TREE_BRANCH = 'tree_branch_name';

TREE-19

Tree Definition contains Structure ID that does not exist in Tree Structure table

Use Tree Manager to create the structure that you desire by using the name that is reported in this audit.

TREE-20

Tree Definition contains Query Access Group structure with undefined levels and leaves.

Query trees should have no leaves and no levels. This audit finds exceptions to that case in the definition counts.

UPDATE pstreedefn SET level_count = 0, leaf_count = 0 WHERE tree_strct_id = 'ACCESS_GROUP' AND (level_count <> 0 OR leaf_count <> 0);

TREE-21

Tree Selector Control contains Tree name that is not defined in Tree Definition table.

This audit flags records in the PSTREESELCTL tables for records that don't have a corresponding record in the PSTREEDEFN table.

DELETE FROM pstreeselctl A WHERE NOT EXISTS (SELECT 'x' FROM pstreedefn B WHERE B.setid = A.setid AND B.tree_name = A.tree_name AND B.effdt = A.effdt)

TREE-22

Tree Definition Level count does not match level use.

See the section titled “Notes for TREE-22” below.

TREE-23

Tree Level does not exist in Tree Definition table.

Tree Level records in the PSTREELEVEL table exist for trees that don't exist in the PSTREEDEFN table.

DELETE FROM pstreelevel A WHERE NOT EXISTS (SELECT 'x' FROM pstreedefn B WHERE B.setid = A.setid AND B.tree_name = A.tree_ name AND B.effdt = A.effdt)

TREE-24

Tree Node does not exist in Tree Definition table.

Tree Node records in the PSTREENODE table exist for trees that don't exist in the PSTREEDEFN table.

DELETE FROM pstreenode A WHERE NOT EXISTS (SELECT 'x' FROM pstreedefn B WHERE B.setid = A.setid AND B.tree_name = A.tree_name AND B.effdt = A.effdt)

TREE-25

Tree Leaf does not exist in Tree Definition table.

Tree Leaf records in the PSTREELEAF table exist for trees that don't exist in the PSTREEDEFN table.

DELETE FROM pstreeleaf A WHERE NOT EXISTS (SELECT 'x' FROM pstreedefn B WHERE B.setid = A.setid AND B.tree_name = A.tree_name AND B.effdt = A.effdt)

TREE-26

Tree Leaf ranges are not valid in Tree Definition table.

Finds records in the PSTREELEAF table where RANGE_FROM is less than RANGE_TO.

Use Tree Manager to open the tree and correct the invalid range values.

TREE-27

Tree Leaf does not have parent Tree Node in Tree Definition table.

DELETE FROM pstreeleaf A WHERE NOT EXISTS (SELECT 'x' FROM pstreenode B WHERE B.setid = A.setid AND B.tree_name = A.tree_name AND B.effdt = A.effdt AND B.tree_node_num = A.tree_node_num)

TREE-28

Tree Branch does not exist in Tree Branch table.

Refer to the "Tree Audit and Repair Utilities" chapter in the Tree Manager PeopleBook and run the Unbranch Tree Repair Utility so that all branches are removed from the tree.

TREE-29

Tree Branch does not exist in Tree Branch table.

Refer to the "Tree Audit and Repair Utilities" chapter in the Tree Manager PeopleBook and run the Unbranch Tree Repair Utility so that all branches are removed from the tree.

TREE-30

Tree Branch Node count does not match the record count in Tree Node table.

See Resolution for Tree-29.

TREE-31

Tree Branch Leaf count does not match the record count in Tree Leaf table

See Resolution for Tree-29.

TREE-32

Tree Node Num, Node Num End, or Level Num is invalid in Tree Branch table.

See Resolution for Tree-29.

TREE-33

Identify all orphan access group definitions as well as invalid access group definitions in the access group security.

Open Query Access Group Tree in Query Access Group Manager and update the identified Access Group so that a record is created in the Access Group Table.

TREE-34

Tree Definition Node Count Does Not Equal 0 for a Branched Tree.

See Resolution for Tree-29.

TREE-35

Tree Definition Leaf Count Does Not Equal 0 for a Branched Tree.

See Resolution for Tree-29.

Click to jump to top of pageClick to jump to parent topicNotes for TREE-09

Lists any Summary Tree Structures that reference a level number that is on a Detail Tree that does not exist in the Tree Level table. Since a Summary Tree is a tree that is built off of the nodes from an existing Detail Tree at a given level, the level that is specified on the Summary Tree Structure must exist in the detail tree's PSTREELEVEL table. In this case, the Summary Tree is not usable from nVision or other reporting tools.

The situation could occur from several possible causes :

To correct this :

  1. First determine if Detail Tree exists and is in a valid state. This can be done by checking the name of the Detail Tree on the Summary Tree's Structure record; check the Summary Tree tab on the Tree Structure record for the Summary Tree. Note the tree name, setID, and level number.

  2. If Detail Tree exists, check to see if the level number that is defined on the Summary Tree Structure (step 1) exists.

  3. To correct the situation, either add missing level to detail tree or update Summary Tree Structure to refer to a valid detail tree and level number.

Click to jump to top of pageClick to jump to parent topicNotes for TREE-22

This audit flags the Level Use type with the Level Count for conflicts. When the Level Use is N, there should be no levels defined, and when it is not N, levels should be defined. A problem in this audit may also report problems in the TREE-16 audit.

When the Level Use is N and the Level Count is 0 and TREE-16 does not indicate an error on the same tree, do the following:

UPDATE PSTREEDEFN SET USE_LEVELS = 'S' WHERE TREE_NAME = 'tree_name' AND SETID = 'setid' AND EFFDT = 'effdt'

When the Level Use is S and the Level Count is 0 and TREE-16 does not indicate an error on the same tree, do the following (after checking the resolution on TREE-16 to clean up any level records):

UPDATE PSTREEDEFN SET LEVEL_COUNT = 0 WHERE TREE_NAME = 'tree_name' AND SETID = 'setid' AND EFFDT = 'effdt'

When the Level Use is not N and the Level Count is 0 and TREE-16 does not indicate an error on the same tree, do the following (after checking the resolution on TREE-16 to clean up any level records):

UPDATE PSTREEDEFN SET USE_LEVELS = 'N' WHERE TREE_NAME = 'tree_name' AND SETID = 'setid' AND EFFDT = 'effdt' and

UPDATE PSTREENODE SET TREE_LEVEL_NUM = 0 WHERE TREE_NAME = 'tree_name' AND SETID = 'setid' AND EFFDT = 'effdt'

When TREE-23 indicates an error on the same Tree with the Level Count on the PSTREEDEFN = number of PSTREELEVEL records (when the PSTREELEVEL has no levels for this tree, count is 0 for the following):

SELECT COUNT(*) FROM PSTREELEVEL WHERE TREE_NAME = 'tree_name' AND SETID = 'setid' AND EFFDT = 'effdt'

UPDATE PSTREEDEFN SET LEVEL_COUNT = 0 WHERE TREE_NAME = 'tree_name' AND SETID = 'setid' AND EFFDT = 'effdt'

UPDATE PSTREEDEFN SET USE_LEVELS = 'N' WHERE TREE_NAME = 'tree_name' AND SETID = 'setid' AND EFFDT = 'effdt'

UPDATE PSTREENODE SET TREE_LEVEL_NUM = 0 WHERE TREE_NAME = 'tree_name' AND SETID = 'setid' AND EFFDT = 'effdt'

Click to jump to top of pageClick to jump to parent topicTranslate Integrity

The following table describes the audit queries and resolutions for this area:

Query

Description

Resolution

XLATT-1

Translate table Field does not exist in database Field.

Create the field by using PeopleSoft Application Designer.

XLATT-3

Translate fields do not have associated translate values defined.

Edit translate field and enter translate value.

Click to jump to top of pageClick to jump to parent topicPSLOCK Integrity

The following table describes the audit queries and resolutions for this area:

Query

Description

Resolution

Manager-XXX

Where XXX is the associated three-letter code of the object type.

Version Check of listed table against PSVERSION.

Run the Version Application Engine program.