| name | aidp-peoplesoft |
| description | Read from Oracle PeopleSoft into a Spark DataFrame in an AIDP notebook via the AIDP `aidataplatform` Spark format handler. Use when the user mentions PeopleSoft, PSFT, HCM, FSCM, Campus Solutions, or has a PeopleSoft host/port. Auth is host/port + database name + user/password. Read-only. |
| allowed-tools | Read, Write, Edit, Bash |
aidp-peoplesoft — Oracle PeopleSoft via AIDP aidataplatform
When to use
- User wants to ingest PeopleSoft data (HCM, FSCM, Campus Solutions, ELM, CRM) into a Spark DataFrame from an AIDP notebook.
- User mentions: "PeopleSoft", "PSFT", "PS HCM", "Campus Solutions".
When NOT to use
Prerequisites in the AIDP notebook
- Helpers on
sys.path (run aidp-connectors-bootstrap first).
- Env vars / OCI Vault secrets:
PSFT_HOST (PeopleSoft DB host)
PSFT_PORT (typically 1521 for the underlying Oracle DB)
PSFT_DATABASE_NAME (Oracle SID / service)
PSFT_USER, PSFT_PASSWORD
PSFT_SCHEMA (typically SYSADM)
PSFT_TABLE (PeopleSoft record table, e.g. PS_JOB, PS_VOUCHER)
Read
import os
from oracle_ai_data_platform_connectors.aidataplatform import (
AIDP_FORMAT, aidataplatform_options,
)
opts = aidataplatform_options(
type="ORACLE_PEOPLESOFT",
host=os.environ["PSFT_HOST"],
port=int(os.environ["PSFT_PORT"]),
database_name=os.environ["PSFT_DATABASE_NAME"],
user=os.environ["PSFT_USER"],
password=os.environ["PSFT_PASSWORD"],
schema=os.environ.get("PSFT_SCHEMA", "SYSADM"),
table=os.environ["PSFT_TABLE"],
)
df = spark.read.format(AIDP_FORMAT).options(**opts).load()
df.show(10)
Pushdown SQL
Push a complete source query at the database — connector skips schema/table option building and runs the SQL verbatim. Useful for joins, filters, derived columns where you don't want Spark to fetch the full table.
opts = aidataplatform_options(
type="ORACLE_PEOPLESOFT",
host=os.environ["PSFT_HOST"],
port=int(os.environ["PSFT_PORT"]),
database_name=os.environ["PSFT_DATABASE_NAME"],
user=os.environ["PSFT_USER"],
password=os.environ["PSFT_PASSWORD"],
extra={
"pushdown.sql": (
"SELECT EMPLID, EFFDT, DEPTID, JOBCODE "
"FROM SYSADM.PS_JOB "
"WHERE EFF_STATUS = 'A' AND EFFDT >= DATE '2025-01-01'"
),
},
)
df = spark.read.format(AIDP_FORMAT).options(**opts).load()
df.show(10)
Gotchas
- Connector is read-only. PeopleSoft is treated as a source-of-truth system; writes back must go through PeopleSoft's own application APIs, not Spark.
- Underlying Oracle DB. Most PeopleSoft installs run on Oracle DB; the connector hits the DB directly. Network reachability rules from
aidp-oracle-db apply — cluster pod CIDR needs L3 path to the PeopleSoft DB host.
SYSADM schema is the standard PeopleSoft owner. Ensure the connector user has SELECT privs on the PS_* tables you need — PeopleSoft tables are not granted to PUBLIC by default.
- Read row count before pulling — PeopleSoft fact tables can have hundreds of millions of rows. Always include a
WHERE filter via pushdown.sql for production.
References