Contents
Contents

Architecture and Object Model

Struggling to bridge the legacy gap? Cedar Hills Group provides specialized PeopleSoft integration consulting to help teams design, build, and optimize their connection strategies.

When integrating external systems or loading batch data into PeopleSoft, developers face a fundamental question: how do you insert or update rows in PeopleSoft’s database tables while still honoring every field default, prompt table validation, PeopleCode event, and record-level audit rule built into the online application?

Why Component Interfaces Exist

In a standard PeopleSoft Pure Internet Architecture (PIA) transaction, a user’s browser communicates with the Web Server, which forwards requests to the Application Server. The Application Server loads the Component definition, allocates the component buffer in memory, executes PeopleCode events (SearchInit, RowInit, FieldEdit, FieldChange, SaveEdit, SavePreChange, SavePostChange), validates prompt tables and translate values, and issues SQL against the database.

flowchart TD subgraph Online["Online PIA Transaction"] Browser["Web Browser"] --> WebSrv["Web Server"] WebSrv --> AppSrv["Application Server"] end subgraph BatchOrIB["Programmatic / Integration Transaction"] IB["Integration Broker Handler"] --> CI["Component Interface API"] AE["Application Engine"] --> CI PCode["Online PeopleCode"] --> CI end CI --> Comp["Component Buffer & Business Logic"] AppSrv --> Comp Comp ---> DB[("PeopleSoft Database")] Direct["Direct SQL / Record API \n NOT RECOMMENDED"] ---> DB

If an Integration Broker handler or Application Engine program bypasses the Component Processor and writes directly to underlying application tables using SQLExec or standalone Record.Insert() / Record.Update() calls:

  • Business logic is skipped: Any validation, calculation, or cross-record synchronization written in Component, Page, or Record PeopleCode is completely bypassed.
  • Sibling and child tables drift out of sync: A single online save in a complex component like USERMAINT or JOB_DATA updates dozens of related tables. Direct SQL leaves orphan or incomplete rows if even one table is missed.
  • Patches and upgrades break custom SQL: When Oracle delivers an application image update that adds a new required column or validation rule to a component, a Component Interface inherits the change automatically, whereas hardcoded SQL inserts silently corrupt data.

A Component Interface (CI) wraps a single PeopleSoft Component inside an object-oriented API. It exposes a black-box interface of keys, properties, collections, and methods so external or internal programs can drive the component buffer without an active browser session.

The Runtime Object Hierarchy

At runtime, every Component Interface is instantiated from the current PeopleSoft Session object (%Session) and follows a strict hierarchical object model.

flowchart TD Sess["Session (%Session)
PSMessagesMode"] --> PSMsg["PSMessages Collection
(Session Error Log)"] Sess -->|"GetCompIntfc(CompIntfc.CI_NAME)"| CI["Component Interface Instance
InteractiveMode / GetHistoryItems / EditHistoryItems"] CI ---> GK["GetKeys
(Search Record Keys)"] CI ---> FK["FindKeys
(Search + Alt Search Keys)"] CI ---> CK["CreateKeys
(Add Search Record Keys)"] CI --> Props["Level 0 Properties
(Exposed Fields)"] CI --> Meths["Methods
Standard: Get, Create, Find, Save, Cancel
Custom: User-Defined PeopleCode"] CI --> Col1["Level 1 Data Collection
(Scroll / Grid Record)"] Col1 -->|"Item(i) / InsertItem(i) / CurrentItem"| Item1["Level 1 Data Item
(Row)"] Item1 --> Props1["Level 1 Properties
(Row Fields)"] Item1 --> Col2["Level 2 Data Collection
(Nested Scroll / Grid)"] Col2 -->|"Item(j) / InsertItem(j)"| Item2["Level 2 Data Item
(Nested Row)"] Item2 --> Props2["Level 2 Properties
(Nested Row Fields)"]

Keys: GetKeys, FindKeys, and CreateKeys

Component Interface keys are automatically derived from the underlying component’s Search Record (and Add Search Record, if different). You cannot manually add or remove key fields inside the CI designer without changing the component’s search record.

Key Type How Created Purpose
GetKeys Search Key fields on the component’s Search Record Used with .Get() to retrieve a single, unique component instance (equivalent to entering full keys on an Update/Display search page and clicking Search).
FindKeys Search Key + Alternate Search Key fields on the Search Record Used with .Find() to run a partial or wildcard search that returns a collection of matching CI instances (equivalent to clicking the Search button to view a list of results).
CreateKeys Search Key fields on the component’s Add Search Record Used with .Create() to instantiate a new component buffer (equivalent to the Add a New Value tab online). Only present if the underlying component has the Add action enabled.

Properties: Level 0 Fields and Behavioral Flags

Properties represent individual fields exposed from the component buffer, plus four standard behavioral flags on the CI root object:

Behavioral Property Default Effect
InteractiveMode False When False, FieldEdit and FieldChange defer until .Save() is called. When True, setting each property immediately fires FieldEdit and FieldChange (slower, required when downstream fields depend on immediate derived-work-record logic).
GetHistoryItems False When False, .Get() operates in Update/Display mode (returning current and future-dated effective rows). When True, .Get() operates in Update/Display All (or Correction) mode and includes historical effective-dated rows in scroll collections.
EditHistoryItems False When True (combined with GetHistoryItems = True), operates in Correction mode so existing historical effective-dated rows can be modified.
StopOnFirstError False Controls whether validation halts on the first error logged to %Session.PSMessages.

Data Collections and Data Items (Levels 1–3)

Whenever a component contains a Level 1, Level 2, or Level 3 scroll area or grid, Application Designer exposes that record in the CI as a Data Collection (indicated by a 3D cube icon).

  • A Data Collection corresponds to a Rowset in standalone PeopleCode. It supports methods and properties such as .Count, .Item(index), .InsertItem(index), .DeleteItem(index), .CurrentItem, and .ItemByKeys(...).
  • Calling .Item(i) or .InsertItem(i) on a Data Collection returns a Data Item (corresponding to a Row in standalone PeopleCode).
  • On that Data Item, you read and write row-level Properties (fields) or drill down into a child Data Collection (Level 2 or Level 3 scroll).

Standard and Custom Methods

Every Component Interface provides up to five Standard Methods (enabled or disabled in Component Interface Properties > Standard Methods):

  • Get() — Populates the component buffer for an existing key set (True on success, False on failure).
  • Create() — Initializes a new component buffer for the specified CreateKeys (True on success, False on failure).
  • Find() — Returns a collection of CI instances matching partial/wildcard FindKeys.
  • Save() — Runs SaveEdit, SavePreChange, database INSERT/UPDATE/DELETE SQL, and SavePostChange (True on success, False on failure). Note: In Application Engine or Integration Broker handlers, Save() writes to the database within the active unit of work, subject to transaction commit control.
  • Cancel() — Releases the current component buffer state so the CI instance can be reset or discarded.

In addition, developers can write Custom Methods directly in the Component Interface’s PeopleCode workspace. For example, PeopleSoft’s delivered USER_PROFILE CI defines custom methods such as SetPassword(), ResetPassword(), and SetUserDescription() that execute specialized PeopleCode against the loaded component buffer.

Three-Way Terminology Mapping

Because PeopleSoft documentation, Application Designer, and PeopleCode developers use three different vocabularies for the exact same underlying structures, keep this translation table handy when designing or debugging a CI:

Online PIA / Database Term Standalone PeopleCode Term Component Interface Term
Component Component Buffer Component Interface
Search Page Keys (Update/Display) Search Record Key Fields GetKeys
Search Page Keys + Alt Search Keys Search Record Search + Alt Keys FindKeys
Add a New Value Keys Add Search Record Key Fields CreateKeys
Level 0 Page Field Record.Field Property
Scroll Area / Grid (Level 1–3) Rowset Data Collection
Scroll Row / Grid Row Row Data Item
Grid Row Field Row.Record.Field Item Property
Search / Add / Save Buttons Component Processor Actions Standard Methods (Get, Create, Find, Save, Cancel)
psLens Platform
psLens Operations & Intelligence

Look up any record, field, page, or component, audit security, and monitor Integration Broker across every database — in seconds.

  • 30+ object types browsable
  • 16 real-time alert types
  • Read-only by design
  • No App Designer or SQL required
Learn More
psLens Platform
psLens Operations & Intelligence

A web console built for the PeopleSoft community — operational monitoring, security auditing, and metadata browsing in one tool.

  • Sub-second object search
  • Catch stuck IB messages before users do
  • Audit service permissions from one screen
  • Works in any browser
Learn More
psLens Platform
psLens Operations & Intelligence

On-demand security and operational reports for your PeopleSoft environment — no client install required.

  • 14 on-demand reports
  • Markdown export for AI/LLM workflows
  • No shared tenancy
  • Built on 25+ years of PeopleSoft expertise
Learn More
psLens Platform
psLens Operations & Intelligence

Research any PeopleSoft object and monitor system health from a single browser tab — no App Designer, no SQL.

  • 30+ PeopleSoft object types browsable
  • Real-time alerts before users report problems
  • Read-only and secure
  • Private alpha — early access now
Learn More
Author Profile
Chris Malek

Chris Malek is a PeopleTools® Technical Consultant with over two decades of experience. He is available for consulting engagements.

Work with Chris
Subscribe to Updates
SWS Bolt-On
PeopleSoft Simple Web Services

SWS turns SQL into production REST APIs — ready for AI, modern apps, and partner integrations. One install, unlimited potential.

  • Configuration-driven, no coding required
  • JSON, XML, and CSV output
  • Works across all PeopleSoft pillars
  • Built on 25+ years of PeopleSoft expertise
Read More & Purchase
SWS Bolt-On
PeopleSoft Simple Web Services

A powerful PeopleSoft bolt-on that makes REST web services easy. You bring the SQL, SWS handles the rest.

  • Go from idea to production in minutes
  • Zero code migrations after install
  • JSON, XML, and CSV output supported
  • No PeopleCode or Integration Broker expertise required
Read More & Purchase
SWS Bolt-On
PeopleSoft Simple Web Services

Traditional PeopleSoft web services cost $3,600–$13,000 each to develop. SWS deploys production REST APIs in under 5 minutes through configuration alone.

  • No PeopleCode or Integration Broker expertise required
  • Works across Campus Solutions, HCM, and Financials
  • Built-in pagination, caching, and nested data structures
  • Trusted by institutions across higher education and government
Read More & Purchase
SWS Bolt-On
PeopleSoft Simple Web Services

Turn PeopleSoft data into clean REST APIs for AI integrations, modern applications, and vendor data feeds. Configuration-driven — no PeopleCode required.

  • Deploy production APIs in under 5 minutes
  • AI and LLM ready (RAG, chatbots, intelligent search)
  • JSON, XML, and CSV output
  • Zero modifications to delivered PeopleSoft objects
Read More & Purchase