Eight reports against the PSOPERATION, PSMSGNODEDEFN, PSIBRTNGDEFN, and IB log tables. Use them to find unauthenticated nodes, routings open to ~~ANY~~, sync ops running without logging, and dead operations no one bothered to deactivate.
Shows IB message volume for a date range broken down by async operations, pub/sub contracts, and logged sync operations
1 - Web Service Operation Access Audit
This report provides a consolidated view of which PeopleSoft service operations (web services) are accessible, through which permission lists and r…
New to psLens? This page documents one specific report. To see how it runs in the product, what
the output looks like, and how teams use it in practice, start with a live walkthrough.
This report provides a consolidated view of which PeopleSoft service operations (web services) are accessible, through which permission lists and roles, and how many active (unlocked) users have access through each role. It answers the question: “Who can call our web services and through what security chain?”
What It Captures
The report traces the full security chain for every service operation authorization:
Service Operation — The web service endpoint (from PSAUTHWS)
Permission List — The permission list granting access to that operation
Role — Each role that includes that permission list
Unlocked User Count — The number of users with that role whose accounts are not locked
Tables Queried
PSAUTHWS — Web Service Authorizations
Maps service operations to the permission lists that grant access.
Field
Description
IB_OPERATIONNAME
Service operation name (key)
CLASSID
Permission list granting access
PSROLECLASS — Role to Permission List Mapping
Maps roles to their assigned permission lists.
Field
Description
ROLENAME
Role name (key)
CLASSID
Permission list (key)
PSROLEUSER — Role to User Mapping
Maps roles to users, filtered to unlocked accounts only.
Field
Description
ROLENAME
Role name (key)
ROLEUSER
User OPRID (key)
PSOPRDEFN — User Definitions
Used as a subquery filter to count only unlocked users.
Field
Description
OPRID
User operator ID (key)
ACCTLOCK
Account lock status (0=unlocked, 1=locked)
Data Flow
1. Bulk fetch ALL PSAUTHWS records (paginated, batches of 300)
-> Build map: Service Operation -> Permission Lists
|
v
2. For each unique Permission List, query PSROLECLASS
-> Build map: Permission List -> Roles
|
v
3. For each unique Role, query PSROLEUSER
with subquery filter: ACCTLOCK = 0 on PSOPRDEFN
-> Build map: Role -> Unlocked User IDs
|
v
4. Group by service operation and sort by unique user count (descending)
-> Generate Markdown report
Report Output
The generated report contains:
Summary with counts of service operations, unique permission lists, and unique roles.
Access Details List grouped by service operation. Each section lists the service operation, its distinct unlocked user count, and a nested bulleted list of its granting permission lists, roles, and the actual active user IDs (truncated at 15).
Sorted by unique user count (descending) to highlight the most widely accessible operations.
Permission lists with no roles show “(No roles assigned)”.
Recommendations for security review.
Interpreting Results
High unlocked user counts on sensitive service operations indicate broad access that may violate least-privilege principles.
Permission lists with “(No roles assigned)” are assigned to service operations but not included in any role. They may be orphaned or misconfigured.
Roles with 0 unlocked users grant web service access but have no active users. They are candidates for cleanup.
Operations with multiple permission lists and roles have complex access chains that are difficult to audit manually.
Use Cases
Security audit — Identify which web services have the broadest user access
Least-privilege review — Find operations accessible to more users than expected
Cleanup — Identify permission lists or roles granting web service access with no active users
2 - IB Node Security Audit
This report audits Integration Broker node user accounts for security issues that go beyond authentication configuration (which is covered by the N…
New to psLens? This page documents one specific report. To see how it runs in the product, what
the output looks like, and how teams use it in practice, start with a live walkthrough.
This report audits Integration Broker node user accounts for security issues that go beyond authentication configuration (which is covered by the Nodes with No Password report). It checks for elevated user privileges on nodes, shared user accounts across multiple nodes, and nodes with no active routings.
What It Detects
CRITICAL — Anonymous Node User Analysis
Checks the ANONYMOUS node’s associated PeopleSoft user account. Flags as HIGH RISK if:
The user account is unlocked (can log into PIA directly)
The user has PeopleTools access (Application Designer, Data Mover, etc.)
The ANONYMOUS node handles unauthenticated IB traffic. Its user should have minimal privileges and a locked account.
WARNING — Shared Node Users
Identifies cases where the same PeopleSoft User ID (OPRID) is configured on multiple active nodes. Each node should have its own distinct service account for:
Audit trail — Knowing which node performed an action
Security isolation — Revoking one node’s access without affecting others
Least privilege — Tailoring permissions per node’s specific needs
WARNING — Active Nodes with No Active Routings
Finds active non-local nodes that have no active routings in PSIBRTNGDEFN. These nodes may be:
Leftover from decommissioned integrations
Candidates for deactivation to reduce attack surface
Covered only by wildcard (~~ANY~~) routings (reported separately)
WARNING — Node Users with PeopleTools Access
Identifies node service accounts whose permission lists grant access to PeopleTools clients (Application Designer, Data Mover, Query, etc.). The check covers the user’s primary permission list and every permission list granted through the user’s roles. Node accounts should never need development tool access.
Tables Queried
PSMSGNODEDEFN — Message Node Definitions
Field
Description
Values
MSGNODENAME
Node name (primary key)
ACTIVE_NODE
Whether the node is active
1 = Active, 0 = Inactive
LOCALNODE
Whether this is a local node
1 = Local, 0 = External
USERID
PeopleSoft user ID associated with the node
NODE_TYPE
Node type
PSIBRTNGDEFN — Routing Definitions
Field
Description
Values
SENDERNODENAME
Sending node name
Node name or ~~ANY~~
RECEIVERNODENAME
Receiving node name
EFF_STATUS
Effective status
A = Active, I = Inactive
PSOPRDEFN — User Definitions
Field
Description
Values
OPRID
User ID (primary key)
OPRCLASS
Primary permission list
ACCTLOCK
Account lock status
0 = Unlocked, 1 = Locked
PSROLEUSER / PSROLECLASS — Role Permission Lists
Used to find every permission list a node user holds through roles. PeopleTools access is usually granted through a role, not the primary permission list.
PSAUTHITEM — Menu/Tools Authorizations
Used to check if a permission list grants PeopleTools client access (APPLICATION_DESIGNER, DATA_MOVER, etc.).
Data Flow
1. Fetch ALL message nodes from PSMSGNODEDEFN
(batches of 300)
|
v
2. Fetch ALL active routings from PSIBRTNGDEFN
Build set of node names with active routings
|
v
3. For each unique UserID on active nodes:
Look up user in PSOPRDEFN and the user's
role permission lists (PSROLEUSER -> PSROLECLASS)
|
v
4. For each unique permission list found (primary + roles):
Check PSAUTHITEM for PeopleTools access
|
v
5. Analyze and categorize findings:
- Anonymous node user privileges
- Shared node users (same OPRID on 2+ nodes)
- Active nodes not in routing coverage set
- Node users with PeopleTools access
|
v
6. Generate Markdown report grouped by severity
Interpreting Results
CRITICAL findings on the ANONYMOUS node indicate that unauthenticated IB traffic is processed under a user with elevated privileges. This is a significant security risk.
Shared node users increase blast radius if one account is compromised and make it harder to trace which node performed specific actions.
Nodes with no routings represent unnecessary attack surface. If a node isn’t routing any messages, it should be deactivated.
PeopleTools access on node accounts means a compromised integration could potentially be used to modify PeopleSoft objects.
Recommendations
Lock the ANONYMOUS node user account to prevent direct PIA login
Remove PeopleTools access from node service accounts (their roles and primary permission list)
Create distinct service accounts for each Integration Broker node
Deactivate nodes with no active routings if they are no longer needed
3 - Active ANY to Local Node Routings
This report identifies Integration Broker routings where the sender node is ANY and the receiver is the default local node.
New to psLens? This page documents one specific report. To see how it runs in the product, what
the output looks like, and how teams use it in practice, start with a live walkthrough.
This report identifies Integration Broker routings where the sender node is ~~ANY~~ and the receiver is the default local node. The ~~ANY~~ sender is a wildcard that allows any external node to send messages to the local system for that routing’s operation, bypassing node-specific routing controls.
~~ANY~~ routings are sometimes intentional (e.g., for broadly available services), but if left active without review they let any external node send messages inbound. This report lists which operations are open to inbound messages from any node.
What It Detects
WARNING — Active ~~ANY~~ to Local Node Routings
Active routings in PSIBRTNGDEFN where:
SENDERNODENAME = '~~ANY~~'
RECEIVERNODENAME is the default local node
EFF_STATUS = 'A' (Active)
These routings are currently allowing any external node to send messages inbound.
Used to find inbound routings to the default local node.
Field
Description
Filter
ROUTINGDEFNNAME
Routing definition name
SENDERNODENAME
Sender node
Checked for ~~ANY~~
RECEIVERNODENAME
Receiver node
= {default local node}
EFF_STATUS
Effective status
A = Active, I = Inactive
EFFDT
Effective date
IB_OPERATIONNAME
Service operation name
DESCR
Description
Data Flow
1. Fetch ALL message nodes from PSMSGNODEDEFN
(batches of 300)
|
v
2. Filter for default local nodes:
LOCALNODE = 1 AND LOCALDEFAULTFLG = 'Y'
|
v
3. For each default local node, fetch inbound routings
from PSIBRTNGDEFN where RECEIVERNODENAME = node
|
v
4. Filter for active routings where SENDERNODENAME = '~~ANY~~'
|
v
5. Generate Markdown report with findings
Report Output
The generated report contains:
Header with database name and generation timestamp
Summary with total nodes scanned, default local node name(s), and count of active ~~ANY~~ routings
WARNING section (if any): Table of active ~~ANY~~ routings with routing name, receiver node, linked service operation, and description
Recommendations if active ~~ANY~~ routings are found
Interpreting Results
WARNING findings should be reviewed. Each active ~~ANY~~ routing means any external node can send messages for that operation to the local system. Determine whether this is intentional.
No findings means all inbound routings use explicit sender nodes, which is the most secure configuration.
Recommendations
Review each active ~~ANY~~ routing to determine if a wildcard sender is truly needed
Replace with explicit sender node routings where possible to restrict which nodes can send messages inbound
Deactivate unneeded ~~ANY~~ routings to reduce the attack surface
4 - Active Service Operations Report
This report lists all fully active service operations — those with at least one active version, at least one active routing, and at least one activ…
New to psLens? This page documents one specific report. To see how it runs in the product, what
the output looks like, and how teams use it in practice, start with a live walkthrough.
This report lists all fully active service operations — those with at least one active version, at least one active routing, and at least one active handler — along with their permission lists that grant access.
The report pulls all service operations with their child records (versions, handlers, routings) in a single paginated hierarchical query, then bulk-fetches PSAUTHWS to map each operation to its permission lists. Operations are filtered to those with at least one active version, routing, and handler before being written to the report. For a system with N service operations and A PSAUTHWS rows, expect roughly N/50 + A/300 API calls. A site with 500 operations and 2000 auth rows runs in about 17 calls.
Report Output
The generated report contains:
Header with database name and generation timestamp
Summary with total operations and count of active operations
Active handlers table (handler name, type, app class path)
Active routings table (routing name, sender, receiver, generated flag)
Permission lists table (linked to permission list detail pages)
Interpreting Results
Operations with no permission lists may be inaccessible or may rely on other authentication mechanisms
Operations with ~~ANY~~ sender routings accept messages from any external node. Review whether this is intentional
Operations with no active handlers may indicate stale configuration
Operations with many permission lists have broad access. Verify this is appropriate
Use Cases
IB inventory — Get a complete list of all active service operations and their configuration
Security review — Identify which operations are accessible and by whom
Cleanup — Find operations with no active handlers or routings that may be candidates for deactivation
5 - Active Service Operations with No Routings
This report identifies active service operations that have no active routing definitions.
New to psLens? This page documents one specific report. To see how it runs in the product, what
the output looks like, and how teams use it in practice, start with a live walkthrough.
This report identifies active service operations that have no active routing definitions. These operations have at least one active version but cannot process any messages because no routing is configured to direct traffic to or from them. Usually this means a half-finished setup or an operation that should have been deactivated when its routings were.
What It Detects
An operation is flagged when:
It has at least one active version (ACTIVE_FLAG = 'A' in PSOPRVERDFN)
It has zero active routings (EFF_STATUS = 'A' in PSIBRTNGDEFN)
The report also shows the count of inactive routings, which helps distinguish between operations that never had routings and those whose routings were intentionally deactivated.
1. Paginate through all PSOPERATION records
(batches of 300)
|
v
2. For each operation, fetch full details
(versions, routings)
|
v
3. Filter to operations with at least one
active version (ACTIVE_FLAG = 'A')
|
v
4. Exclude operations that have any active
routing (EFF_STATUS = 'A')
|
v
5. Generate summary table of flagged operations
Report Output
The generated report contains:
Summary with total operations, active operations, and count flagged with no routings
Flagged operations table with operation name (linked to detail page), service, type, active version count, inactive routing count, and description
Recommendations for remediation actions
Interpreting Results
Operations with zero total routings likely never had routings configured. These may be newly created or inherited operations that were never fully set up
Operations with inactive routings only suggest the routings were intentionally deactivated. Verify whether the operation itself should also be deactivated
Async operations without routings are especially notable since they rely on routings for subscription/publication contracts
Sync operations without routings cannot receive inbound requests
Recommendations
If the operation is needed: Create and activate routing definitions to enable message processing
If the operation is not needed: Inactivate all versions to keep the IB configuration clean
If routings exist but are inactive: Review whether deactivation was intentional or an oversight
6 - Unauthenticated Node Service Operations
This report identifies active nodes with no authentication configured (AUTHOPTN=‘N’) and then determines which fully-active service operations are …
New to psLens? This page documents one specific report. To see how it runs in the product, what
the output looks like, and how teams use it in practice, start with a live walkthrough.
This report identifies active nodes with no authentication configured (AUTHOPTN='N') and then determines which fully-active service operations are reachable through those nodes. A service operation is considered fully active only when it meets all three criteria: an active version, an active routing, and an active handler.
Any operation reachable through one of these nodes can be invoked without credentials.
What It Captures
For each active node with no authentication:
Node metadata (name, description, user ID)
All fully-active service operations routed through that node
The routing that links the operation to the node
Operation type (REST/HTTP Post, Sync/Async)
Tables Queried
PSMSGNODEDEFN — Message Node Definitions
Paginated to discover all nodes. Filtered to active nodes with AUTHOPTN = 'N'.
1. Paginate through all PSMSGNODEDEFN records
-> Filter to active nodes with AUTHOPTN = 'N'
-> Build set of no-auth node names
|
v
2. Paginate through all PSOPERATION records
(batches of 300)
|
v
3. For each operation, fetch full details
(versions, handlers, routings)
|
v
4. Filter to "fully active" operations:
- At least one active version
- At least one active handler
- At least one active routing
|
v
5. Check if any active routing references
a no-auth node (as sender OR receiver)
|
v
6. Generate report grouped by node
Report Output
The generated report contains:
Header with database name and generation timestamp
Summary with counts of no-auth nodes, total operations checked, and matching operations
No-Auth Nodes table listing each unauthenticated node with its user ID and count of reachable operations
Per-node sections with a table of all service operations accessible through that node, including operation type and routing name
Recommendations for remediation
Interpreting Results
Nodes with many accessible operations are higher risk and should be prioritized for remediation
The User ID on each node indicates what PeopleSoft user context is used for operations through that node. Review its privileges
REST operations are typically more easily exploitable from external systems than HTTP Post (SOAP) operations
If no nodes are found with AUTHOPTN='N', the report exits early with a clean result
Recommendations
Configure authentication (AUTHOPTN = 'P' or 'C') on all active nodes
Set internal and/or external passwords on nodes that require password authentication
Review the PeopleSoft user ID associated with each no-auth node for excessive privileges
Consider deactivating routings that should not be accessible without authentication
This report identifies active synchronous service operations that have active routings where message detail logging is disabled.
New to psLens? This page documents one specific report. To see how it runs in the product, what
the output looks like, and how teams use it in practice, start with a live walkthrough.
This report identifies active synchronous service operations that have active routings where message detail logging is disabled. When logging is off on a sync routing, transaction data is not recorded in the IB logs, making it impossible to troubleshoot failures or audit message traffic.
What It Detects
A routing is flagged when all three conditions are met:
The service operation is synchronous (RTNGTYPE = 'S' in PSOPERATION)
It has at least one active version (ACTIVE_FLAG = 'A' in PSOPRVERDFN)
An active routing (EFF_STATUS = 'A' in PSIBRTNGDEFN) has logging disabled (LOGMSGDTLFLG = '2')
Tables Queried
PSOPERATION — Service Operation Definitions
Paginated to discover all operations, filtered to synchronous only.
Message detail logging flag (0=Header, 1=Header+Detail, 2=No Logging)
Flagged when '2' (No Logging)
Data Flow
1. Paginate through all PSOPERATION records
(batches of 300)
|
v
2. For each operation, fetch full details
(versions, routings)
|
v
3. Filter to synchronous operations with at
least one active version
|
v
4. Check each active routing for LOGMSGDTLFLG
Flag routings where value is '2' (No Logging)
|
v
5. Generate table of flagged routings
Report Output
The generated report contains:
Summary with total operations, active sync operations, sync with active routings, and count of routings without logging
Flagged routings table with operation name (linked to detail page), service, routing name, sender node, receiver node, and description
Recommendations for enabling logging
Interpreting Results
High count of flagged routings may indicate a blanket policy of disabling logging. Consider enabling it at least for critical operations
Generated routings (auto-created by PeopleSoft) often have logging disabled by default. Review whether these carry important traffic
Custom routings without logging suggest an intentional decision that should be validated with the integration team
Recommendations
Enable logging: In PeopleTools > Integration Broker > Integration Setup > Routings, set the “Log Detail” flag to “Header Only” (0) or “Header & Detail” (1) for each flagged routing
Performance consideration: Header-only logging has trivial overhead. Header+Detail can balloon the IB log tables on high-volume routings — turn it on for the ones you actually want to troubleshoot
Review periodically: Logging may be intentionally disabled during high-volume batch processing. Re-enable after batch windows complete
8 - Daily IB Volume/Usage Report
This report shows Integration Broker message volume for a configurable date range. It breaks down traffic into four categories:
New to psLens? This page documents one specific report. To see how it runs in the product, what
the output looks like, and how teams use it in practice, start with a live walkthrough.
This report shows Integration Broker message volume for a configurable date range. It breaks down traffic into four categories:
Async Operations — publication headers (PSAPMSGPUBHDR), the top-level async message record
Publication Contracts — per-subscriber delivery records (PSAPMSGPUBCON)
Subscription Contracts — subscription handler execution records (PSAPMSGSUBCON)
Synchronous Operations — logged sync transactions (PSIBLOGHDR). Only operations with logging enabled appear here
Each category shows counts grouped by operation name and status (Done, Error, New, etc.), sorted by total volume descending.
Parameters
Parameter
Default
Description
from_date
Today (YYYY-MM-DD)
Start of the date range (inclusive)
to_date
Today (YYYY-MM-DD)
End of the date range (inclusive)
Leave both parameters blank to report on today’s traffic. Set a range such as from_date=2026-01-01 and to_date=2026-01-31 for a monthly view.
Tables Queried
PSAPMSGPUBHDR — Async Operation Headers
The master record for each async IB message (one row per publication).
Field
Description
Filter
IB_OPERATIONNAME
Service operation name
Grouped by
STATUSSTRING
Message status (DONE, ERROR, NEW, etc.)
Grouped by
CREATEDTTM
When the record was created
Date range filter
PSAPMSGPUBCON — Publication Contracts
One row per subscriber for each async publication.
Field
Description
Filter
IB_OPERATIONNAME
Service operation name
Grouped by
STATUSSTRING
Contract status
Grouped by
CREATEDTTM
When the record was created
Date range filter
PSAPMSGSUBCON — Subscription Contracts
One row per subscription handler execution.
Field
Description
Filter
IB_OPERATIONNAME
Service operation name
Grouped by
STATUSSTRING
Contract status
Grouped by
CREATEDTTM
When the record was created
Date range filter
PSIBLOGHDR — Sync Operation Log Headers
Logged synchronous transaction records. Only populated when message detail logging is enabled on the routing.
Field
Description
Filter
IB_OPERATIONNAME
Service operation name
Grouped by
STATUSSTRING
Transaction status
Grouped by
PUBLISHTIMESTAMP
When the transaction was processed
Date range filter
Data Flow
1. Fetch async operation summary (PSAPMSGPUBHDR)
GROUP BY IB_OPERATIONNAME, STATUSSTRING
|
v
2. Fetch publication contract summary (PSAPMSGPUBCON)
GROUP BY IB_OPERATIONNAME, STATUSSTRING
|
v
3. Fetch subscription contract summary (PSAPMSGSUBCON)
GROUP BY IB_OPERATIONNAME, STATUSSTRING
|
v
4. Fetch sync operation summary (PSIBLOGHDR)
GROUP BY IB_OPERATIONNAME, STATUSSTRING
|
v
5. Pivot each dataset into a per-operation table
with status columns, sorted by total descending
Report Output
The generated report contains:
Summary table with total message counts for each of the four categories
Async Operations table — one row per operation, columns for each status (Done, Error, New, etc.) plus Total
Publication Contracts table — same format
Subscription Contracts table — same format
Synchronous Operations table — same format, with a note that only logging-enabled operations appear
Interpreting Results
Async Operations
Done — successfully processed and delivered
Error — failed; check the IB Monitor for details
New — queued but not yet processed (may indicate a stuck dispatcher)
A high Error count relative to Done signals a systemic integration problem. A high New count with no decrease over time indicates the IB dispatcher may be stopped.
Publication vs Subscription Contracts
Each async publication spawns one publication contract (PSAPMSGPUBCON) per subscribing node