Full transfer

Mapping Ellucian Banner STVTERM to Workday Academic Periods

BNWD Banner · STVTERM ──▶ Workday Student · Academic Periods

Term codes are the spine of every downstream academic record. This pathway walks the canonical mapping from Banner validation tables to Workday academic period objects, and the edge cases that silently corrupt enrolment history at cutover.

TypeFull transfer
Indicative timeline8–16 weeks
ComplexityHigh
DeliveryFixed-scope
  • Term codes mapped to Workday academic periods
  • Enrolment history preserved at cutover
  • Edge cases found before they corrupt data
transfer migration banner stvterm workday student academic periods
How it works

In a Banner-centred estate, the term code drives registration, billing, financial aid disbursement, and transcript assembly. It is referenced by dozens of operational spokes, most of which read it directly rather than through an integration layer. Before any record moves to Workday Student, the term dimension has to be reconciled — or the migration inherits fifteen years of quietly inconsistent term semantics.

The source: STVTERM

Banner stores term definitions in a validation table. The columns that matter for a migration are the code itself, its descriptive label, the start and end dates, and the housekeeping flags that determine which terms are still active for reporting.

ColumnRoleMigration note
STVTERM_CODEPrimary term identifierEncodes year + semester; parsing convention varies by institution
STVTERM_DESCHuman labelFree text — not safe as a join key
STVTERM_START_DATEPeriod startMaps to the Workday period start
STVTERM_END_DATEPeriod endWatch inclusive vs exclusive end conventions
STVTERM_FA_PROC_YRFinancial aid yearOften diverges from the academic year — do not assume equality

The target: Workday academic periods

Workday models time hierarchically rather than as a flat code. A Banner term maps onto an academic period that sits under an academic year, which itself sits under an academic calendar tied to a program of study. The one-to-one assumption most teams start with breaks the moment a Banner term is reused across multiple programs with different calendars.

Implementation note

Extracting STVTERM cleanly is trivial. Reconciling it against the twenty-plus spokes that read the term code directly — and building the translation layer that keeps them running during a phased cutover — is where projects stall. That reconciliation is the isolated, fixed-scope engagement we build first.

Run the risk calculator

Canonical model between the two

Rather than translating Banner directly into Workday, route both through a canonical academic-period record. The source system publishes into it; the target consumes from it. When the ERP is eventually deprecated, the canonical record and every spoke reading from it are untouched.

// canonical academic period — the contract both systems map onto
{
  "period_id": "2026-FA",
  "source_refs": {
    "banner_stvterm": "202610",
    "workday_period": "AY2026_Fall_Semester"
  },
  "start": "2026-08-24",
  "end":   "2026-12-13",
  "fa_year": "2026-2027",
  "status": "active"
}

Edge cases that corrupt history

  • Reused term codes. Institutions occasionally recycle a term code across calendars. A naive one-to-one load collapses two distinct periods into one.
  • Financial-aid year drift. STVTERM_FA_PROC_YR not equalling the academic year silently misaligns disbursement records if mapped as identical.
  • Inclusive end dates. A one-day boundary error moves every enrolment that ended on the last day of term.
  • Inactive-but-referenced terms. Old terms flagged inactive are still referenced by historical transcripts and cannot simply be dropped.

Sequence

  1. Snapshot STVTERM and profile the code-parsing convention actually in use.
  2. Enumerate every spoke that reads the term code directly (this is usually the largest surprise).
  3. Define the canonical period contract and publish Banner into it read-only.
  4. Map Workday periods onto the canonical record; validate against a sample of historical transcripts.
  5. Cut spokes over to the canonical record one at a time, not all at once.

Free reference snippet

Yours to use

A working piece from this integration — no sign-up. The full build handles the edge cases, safeguards, and cutover.

/* Banner STVTERM → Workday Academic Period mapping (canonical) */

SELECT
  stvterm_code                            AS Academic_Period_ID
, stvterm_desc                            AS Academic_Period_Name
, TO_CHAR(stvterm_start_date,'YYYY-MM-DD') AS Start_Date
, TO_CHAR(stvterm_end_date  ,'YYYY-MM-DD') AS End_Date
, SUBSTR(stvterm_code,1,4)                AS Academic_Year
, CASE SUBSTR(stvterm_code,5,1)           /* session-digit → Workday term */
    WHEN '1' THEN 'Spring'
    WHEN '2' THEN 'Summer'
    WHEN '3' THEN 'Fall'
    WHEN '4' THEN 'Winter'
  END                                      AS Term
FROM stvterm
WHERE stvterm_fice_code = '001'
  AND stvterm_active_ind = 'Y';

/* Sample output rows */
stvterm_code | stvterm_desc   | Start_Date | End_Date   | AY  | Term
-----------------+-------------------+------------+------------+-----+--------
202410           | Fall 2024         | 2024-08-19 | 2024-12-13 | 2024 | Fall
202510           | Fall 2025         | 2025-08-18 | 2025-12-12 | 2025 | Fall
202411           | Spring 2025       | 2025-01-13 | 2025-05-09 | 2025 | Spring

/* Edge-case guard: Banner 8-term codes (e.g. 2024A) break Workday validation */
WHERE REGEXP_LIKE(stvterm_code,'^[0-9]{5}$')   /* enforce YYYYS format */
  AND stvterm_end_date > SYSDATE - 730;          /* exclude stale terms */

Implementation pathway

Step by step

How we'd take this from discovery to a production-safe cutover — the phases, the canonical mapping, and the edge cases that bite.

This pathway maps Ellucian Banner validation table STVTERM to Workday Student Academic Periods, the foundational anchor for all downstream academic records. Errors here corrupt enrollment history, grading periods, and financial aid windows silently and irreversibly.

Phases

  1. Discovery. Extract STVTERM rows where STVTERM.STATUS_IND is not 'I' (inactive). Pull STVTERM_CODE, STVTERM_DESC, STVTERM_START_DATE, STVTERM_END_DATE, STVTERM_SESS_CODE, and STVTERM_TERM_CODE (the parent term for sub-terms). Cross-reference STVSESS to confirm session type mappings. Validate against the academic calendar in STVACAT. Confirm whether the institution uses numeric term codes (e.g., 202410) or alphanumeric (e.g., 2024FA) — this varies by Banner release and institutional configuration.
  2. Hierarchy design. Workday Academic Periods are parent-child: an Academic Year contains Terms, which contain Sessions. Banner term codes encode all three levels into a single string. Parse the 6-digit STVTERM_CODE as YYYYTS — Year (4), Term type (1), Session code (1). Build the parent Academic Year period (e.g., 2024-2025) first, then terms, then sessions. Confirm the Workday Academic Period Type参照値 list matches Banner term type codes via STVTTYP.
  3. Field mapping. Map STVTERM_START_DATE to Academic Period Start Date and STVTERM_END_DATE to End Date. Map STVTERM_DESC to Academic Period Name. Map STVTERM_SESS_CODE to determine if this is a parent Term or a child Session — sessions get the parent term reference populated; standalone terms leave it null. Set Status to Active for current and future terms; historical terms set to Inactive only after confirming no open enrollment or grading windows remain.
  4. Integration layer build. Implement the extract as a Banner-delivered view or stored procedure against STVTERM, STVSESS, and STVRAPT (reporting term). Schedule the Workday Inbound Integration as a Academic Periods — Student connector. Set the Workday tenant to use Academic Period Reference ID as the idempotency key. Configure the integration to PUT (update) existing periods and POST (create) new ones — do not use PATCH or replace modes, which truncate child session associations.
  5. Validation and reconciliation. Run a row-count reconciliation: total STVTERM rows (excluding inactive) must equal total Academic Periods in Workday (excluding system-generated placeholders). Spot-check date ranges — STVTERM_START_DATE must fall within the parent Academic Year bounds. Validate that every session term has a populated Parent Academic Period reference pointing to its base term. Run the Workday Student Academic Calendar report post-load and compare term counts and date spans against Banner STVTERM.
  6. User acceptance testing. Test with three consecutive academic years including a summer split (if applicable). Confirm enrollment business processes can find and attach the correct academic period to a student record. Validate that financial aid award periods auto-populate from the newly created Academic Periods. Test the reverse: that moving a student section to an academic period correctly gates enrollment date validation.
  7. Cutover. Execute a final delta load from Banner to Workday immediately before go-live. Freeze STVTERM data changes at the source for the duration of the cutover window. Validate the count one final time, then set the Workday integration to production mode and enable the Workday Business Process that prevents manual Academic Period creation (enforce source-of-truth).

Field Mapping

Banner Field Workday Field Transform / Notes
STVTERM.STVRAPT_CODE Academic Period Reference ID Direct map. Must be unique within Workday tenant.
STVTERM.STVDESC Academic Period Name Direct map. Trim to Workday character limit (verify via tenant config).
STVTERM.STVTERMDESC Academic Period Long Name Optional. Use if institution has a formal long description.
STVTERM.STVSTART_DATE Start Date Direct map. Must align with Academic Year start boundary.
STVTERM.STVEND_DATE End Date Direct map. Must not exceed Academic Year end boundary.
STVTERM.STVTtrm.STVSESS_CODE Parent Academic Period Reference If STVSESS.STVSESS_SESS_CODE is not null and is a child session, set to parent term's STVRAPT_CODE. Else null.
STVTERM.STVTtrm.STVACAT_CODE Academic Period Type Join to STVCATD to derive type. Map to Workday Academic Period Type参照値 via lookup table (TODO: verify against institutional configuration).
STVTERM.STVSTATUS_IND Academic Period Status Map 'A' to Active, 'I' to Inactive. Historical terms should remain Inactive in Workday even if Active in Banner for reporting continuity.

Edge Cases

  • Sub-term explosion. Institutions with multiple sessions per term (e.g., 8-week A and B sessions) generate one STVTERM row per session. Each must be created as a child Academic Period with the correct parent reference. Missing the parent linkage renders sessions orphaned and invisible to enrollment processes.
  • Cross-year terms. Winter terms often span December–January (e.g., 20251 for Spring 2025 starting Dec 2024). The STVTERM_START_DATE predates the academic year numeric prefix. Workday Academic Year boundaries must accommodate this, or the term will fail load validation.
  • Term date overlaps. When a legacy Banner term has manual date overrides that conflict with the Academic Year bounds, Workday rejects the record. Detect and surface these in the discovery phase, not at cutover.
  • Co-term ambiguity. Some institutions encode co-enrollment terms (e.g., simultaneous graduate/undergraduate) in STVTERM. Workday has a single Academic Period concept — co-terms require multiple period associations on the student record, not duplicate periods.
  • Inactive indicator vs. effective dating. STVTERM.STATUS_IND = 'I' means inactive, but Banner may retain records for historical reporting. Workday requires a definitive Active/Inactive status per period. Setting active terms to Inactive in Workday breaks open enrollment windows without warning.
  • Non-standard term codes. Some Banner institutions extend the 6-character code (e.g., 202410A1 for a sub-session). Parsing logic that assumes YYYYTS breaks silently on 7+ character codes. Validate code length distribution in discovery.

Cutover

Cutover must be reversible until the first successful registration event posts to the new academic periods. Execute a full reconciliation report comparing Banner STVTERM row counts, date ranges, and parent-child relationships against Workday Academic Period objects immediately after the initial load. Lock STVTERM at the Banner source for the cutover window — any late-term code additions must be staged in a shadow table and merged post-validation. Before unlocking, confirm that a test student record can successfully attach to a Workday academic period and that enrollment date validation fires correctly. If any period fails validation or is missing a parent linkage, roll back the integration run, correct the mapping, and re-execute — do not patch individual records manually in Workday.

What a full implementation includes

  • Canonical mapping between Banner · STVTERM and Workday Student · Academic Periods, to the field level.
  • The edge cases that corrupt data at cutover — identified, handled, and tested.
  • Production-safe rollout: reversible, phased, with reconciliation checks.
  • Handover documentation your team can operate from.

Build this against your estate

Reading the reference is free. Delivering it under liability — with the safeguards that keep production running through the cutover — is what we do.

$16,000–$40,000
Contact us