Flight Test Execution in Teamcenter
How post-flight execution data is captured inside Active Workspace using the standard Teamcenter pattern: data lives on the Mission, Flight Event and Test Point result objects, people enter it on those objects' own pages, and workflow moves the status.
Approach
The post-flight execution deck lays out a five-page wizard: Mission, then each Event, then Test Points, then parameters, then service data. We keep its content and drop its shape. Teamcenter users do not fill in forms that sit outside the objects. They open an object, use Edit, change fields on a tab, and Save. Tables of child data are edited inline. Status changes happen through workflow tasks, which also lock the record.
So each page of the deck becomes a tab or a table on the object that owns the data, and the wizard's Save Draft and Submit buttons become an Inbox task. The deck and the attributes spreadsheet remain the inventory of what must be captured.
Almost all of that inventory already has a home. The Catalyst template built execution on top of Verification Management: the Mission is a Verification Request, the Flight Event is a test run, and each Test Point in a Flight Event is a validation link that already carries the execution fields, including the votes.
Decisions taken
Repeat runs go in a run table
Teamcenter allows only one result link per Test Point per Flight Event (tested 2 Nov). So the link holds the Test Point's final result, and each execution is a row in a run table on the Flight Event. Test Points are never copied to record a repeat. Proposed; needs your OK.
Service data goes to SLM
Landings, engine time, power-on time and gear cycles are recorded against the serialized tail in SLM, where maintenance already reads them. They are not stored on the Flight Event.
Configuration first
Release 1 is pages, BMIDE rules, workflows and one server action. A guided entry panel is considered only if users find the results table slow after real use.
Object map
Inheritance read from the 2506 export. The Mission and the Flight Event both inherit Crt0VldnContractRevision, which is where the shared Flight Test fields xve5ExecutionState, xve5PlannedDate and crt0ValStartDate live.
flowchart LR M["Mission
XVE5Mission
(Verification Request)"] --> E1["Flight Event
XVE5FlightEvent
(Test Run)"] M --> E2["Flight Event ..."] M --> D["Execution Card Deck
XVE5MissCardDeck
xve5IsExecutionCard = true"] D --> C["Execution Test Card
XVE5TestCard
xve5ExecutedFlightEvent"] E1 --> R["Result row per run
Crt0ValidationLink"] R --> TP["Test Point
XVE5TestPoint"] TP --> REQ["Requirements
(verification rollup)"] E1 -.-> SLM["Serialized tail
SLM as-maintained"]
Execution flow
- Mission is approved.The Test Card Release workflow has released the cards; the Mission and its Flight Events reach
xve5ExecutionState= Approved. - Start Execution.The test conductor runs Start Execution on the Mission. The server builds the execution card decks and adds one result row per planned Test Point to each Flight Event. See Start Execution.
- Post-flight task arrives.The execution workflow puts a Record post-flight data task in the Inbox of the responsible flight test engineer, one per Flight Event. A Home tile, Missions to execute, runs a saved query for anyone who prefers to start from the Mission.
- Record the Flight Event.From the task, the engineer opens the Flight Event and fills in the Execution tab and the Test Point Results table, including any unplanned repeat runs and build-up parameters, then records service data in SLM.
- Submit.Completing the task validates the record, sets
xve5LockExecutionProp, and moves the Flight Event to Executed. When every Flight Event is Executed, the Mission task opens for the Mission-level outcome and delays. - Data assessment (vote 3).Each discipline engineer gets a task for the Test Points they own, reviews the data and records acceptability on the result row.
- Grade and roll up.Event and Mission grades are derived from the result rows. Accepted Test Point results roll up to requirement verification status.
Mission page: Execution tab
A new tab on XVE5MissionRevision, shown when xve5ExecutionState is Approved or later. Fields are read-only unless the Mission task is open and the lock flag is false.
| Label | Property | Type / LOV | Entry | Status |
|---|---|---|---|---|
| Header | ||||
| Mission ID, Revision, Title | item_id, item_revision, object_name | OOTB | System / planning | In model |
| Execution state | xve5ExecutionState | XVE5MissionStatusLOV (Draft, Planned, Scheduled, Approved, Executed) | Workflow only | In model |
| Planned date | xve5PlannedDate | Date | Planning, read-only here | In model |
| Executed date | crt0ValStartDate | Date | Defaults to earliest Flight Event takeoff; editable | In model |
| Test site | xve5TestSite | XVE5FTTestSiteLOV | Editable | In model |
| Entered by | last_mod_user and the workflow performer | OOTB | System | In model |
| Outcome | ||||
| Execution result | xve5ExecutionStatus | XVE5FlightEventStatusLOV (Canceled, Aborted, Successful, Partially Successful, Non-Productive) | Required at submit; see open question 1 | In model |
| Reason | xve5NonSuccExeReason | XVE5FTNonSuccExeReasonLOV (aircraft, resource, weather, personnel) | Shown and required unless result is Successful | In model |
| Delays (inline table) | ||||
| Delay rows | xve5MissionDelayTbl, rows of XVE5MissDelayTable: xve5MissionDelayReason, xve5MissionDelayDay, xve5MissionDelayHour, xve5MissionDelayMin | Reason LOV XVE5FTMissionReasonLOV | Add / remove rows | In model confirmed live |
| Total delay | xve5TotalDelay | Runtime, DD:HH:MM | Computed from rows | New |
| Events | ||||
| Flight Events | Flight Events whose crt0ParentVldnContract is this Mission | Table: Event ID, Name, Aircraft ID, Execution state, Result | Click a row to open the Flight Event | In model confirmed live; not a GRM relation |
| Qualifications | xve5AssignedProfiles, XVE5LinkToQualDef | References | Planning, read-only here | In model |
Flight Event page: Execution tab
A new tab on XVE5FlightEventRevision. Every field on page 2 of the deck and in the EVENT block of the spreadsheet exists in the model.
| Label | Property | Type / LOV | Entry | Status |
|---|---|---|---|---|
| Identification | ||||
| Aircraft ID (tail) | xve5AircraftID | XVE5TestArticleIDLOV | Planning, editable if the tail changed | In model |
| Event type | xve5EventType | XVE5FTEventTypeLOV | Planning, read-only | In model |
| Flight date | iav0TestRunDate | Date | Defaults from takeoff; editable | In model |
| Flight #, Sortie #, Test # | xve5FlightNum, xve5SortieNum, xve5TestNum | String | Editable | In model |
| OPS # | xve5OPSNum | Integer in the model, confirmed live; "Alphanumeric" in the deck and spreadsheet | Editable | Conflict |
| Outcome | ||||
| Execution result | xve5ExecutionStatus | XVE5FlightEventStatusLOV | Required at submit | In model |
| Reason | xve5NonSuccExeReason | XVE5FTNonSuccExeReasonLOV | Conditional, as on the Mission | In model |
| Post flight code | xve5PostFlightCode | XVE5FTPostFlightCodeLOV | Required at submit | In model |
| Delays (inline table) | ||||
| Delay rows | xve5EventDelayTbl, rows of XVE5EventDelayTable: xve5EventDelayReason, xve5EventDelayDay, xve5EventDelayHour, xve5EventDelayMins | Reason LOV XVE5FTEventDelayReasonLOV | Add / remove rows | In model confirmed live |
| Total delay | xve5TotalDelay | Runtime, DD:HH:MM | Computed | New |
| Times (stored in UTC, shown in the user's time zone) | ||||
| Electrical power on | xve5ElecPwrOnTime | Date and time | Required | In model |
| Engine start | xve5EngineStartTime | Date and time | Required for flights | In model |
| Taxi start | xve5TaxiStartTime | Date and time | Required for flights | In model |
| Takeoff | xve5EventTakeOffTime | Date and time | Required for flights | In model |
| Landing | xve5EventLandingTime | Date and time | Required for flights | In model |
| Engine off | xve5EventEngineOffTime | Date and time | Required for flights | In model |
| Electrical power off | xve5ElectricalPowerOffTime | Date and time | Required | In model |
| Flight duration | xve5FlightDuration | Double, hours and tenths | Defaults to landing minus takeoff on save; editable | In model |
"Required for flights" applies when the event type is a flight. A ground test or functional checkout needs only the power times.
Flight Event page: Test Point Results tab
Two tables on the Flight Event, both edited inline.
- Test Point Results: the Verification Management results table, one row per Test Point (a
Crt0ValidationLink). It holds the Test Point's final outcome for this Flight Event: vote 3, rejection reason, verification result and data files. - Test Point Runs: a new table property
xve5TPRunTblon the Flight Event, rows of a new table-row typeXVE5TPRunTable(the same mechanism as the delay tables). One row per execution: Test Point, sequence #, run type, IADS ID, start and stop time, votes 1 and 2 with their reasons, and run status. Add Repeat Run adds a row for the selected Test Point with the next sequence number and run type Repeat. This replaces "Add a Copy" in the deck.
Start Execution creates one result row and one run row per planned Test Point. In the table below, the run-level columns (sequence through run status) move from the link to the run table; the link keeps the rest.
| Column | Property | Type / LOV | Entered at | Status |
|---|---|---|---|---|
| Test Point | crt0SourceObject | Reference to Test Point revision | Start Execution / Add Repeat Run | In model |
| Test Card | xve5TestCard | Reference to execution Test Card | Start Execution | New |
| Run sequence # | xve5RunSeq | Integer | System, editable | New |
| Run type | xve5RunType | New LOV: Prescriptive Build-up, Inflight Build-up, Compliance, Repeat | Defaults from the Test Point's xve5TestPointRunType; editable | New |
| IADS ID | xve5IADSID | String | Post-flight | In model |
| Start / stop time | xve5StartTime, xve5StopTime | String in the model | Post-flight | Verify strings, not dates; decide format |
| Executed properly (vote 1) | xve5ExecProperly | Y / N | Post-flight | In model |
| Reason, improper execution | xve5ExecRiskReason | LOV | Required when vote 1 is N | In model labeled "Improper Execution Reason" |
| Behaved properly (vote 2) | xve5BehaveAsExpected | Y / N | Post-flight | In model |
| Reason, improper behavior | xve5ProductRiskReason | LOV | Required when vote 2 is N | In model labeled "Improper Behaved Reason" |
| Run status | xve5ExecutionStatus | Executed, Not executed, Aborted | Post-flight | In model |
| Data acceptable (vote 3) | xve5RequestorVote | Accept / Reject | Assessment task, read-only before | In model |
| Rejection reason | xve5RejectionReason | LOV | Required when vote 3 is Reject | In model |
| Verification result | crt0Result | OOTB result | Set by assessment; feeds rollup | In model |
| Data files | crt0Attachments | Datasets | Quick Look Report and data extracts | In model |
xve5OrigTestPoint, xve5TPRun) with its own link. That multiplies Test Points and splits the requirement rollup, so the run table is recommended.Build-up parameters
Page 4 of the deck lists a Test Point's parameters (altitude, KCAS, gear, configuration, G, pitch rate) with min, goal and max, editable for an in-flight build-up. In Teamcenter these are the Test Point's Parameter Management values, and the build-up values are overrides in the context of the run, not edits to the released Test Point.
Users reach them from the result row with Edit Run Parameters, which opens the Parameters table for that row. The released Test Point keeps its planned values.
Service data
Page 5 of the deck records landings, engine time, electrical power-on time and gear cycles for the tail. These update the serialized aircraft in SLM, using SLM's own usage recording against the as-maintained structure for xve5AircraftID.
- Engine time defaults to engine off minus engine start; editable.
- Power-on time defaults to power off minus power on; editable.
- Landings and gear cycles are entered.
The Flight Event gets a Record Usage command that opens the SLM entry for that tail with these defaults filled in.
Utilization business object, the likely target. Still to confirm: how SLM records usage against a serialized tail on 2506, and whether the tail's characteristic list matches the four on the slide.Start Execution
One server-side action on an approved Mission. It is the only custom code in release 1. It must be safe to run twice: a second run fills gaps and never duplicates.
- Check.The Mission and every Flight Event are Approved; every assigned Test Card is released and not past
xve5ExpDate. Otherwise stop and list what is wrong. - Build execution decks.For each approved Mission Card Deck, create an execution copy with
xve5IsExecutionCard= true andxve5ExecutedVRpointing to the Mission. - Build execution cards.For each card assigned to a Flight Event, create an execution copy with
xve5IsExecutionCard= true andxve5ExecutedFlightEventpointing to that event. - Create result rows.For each Test Point on those cards, add a result row to the Flight Event in card order:
xve5RunSeq= 1,xve5RunTypefrom the Test Point,xve5TestCardset. - Start the workflow.Set the execution state and start the post-flight workflow for each Flight Event.
Workflows
| Workflow | Target | Tasks | On completion | Status |
|---|---|---|---|---|
| FT Post-Flight Record | Flight Event | Record post-flight data (flight test engineer), then Review (test conductor) | Validate the rules; set xve5LockExecutionProp; set Executed; when all events are Executed, start the Mission task | New |
| FT Mission Close-out | Mission | Record Mission outcome and delays | Lock; set the Mission to Executed; start assessment | New |
| FT Data Assessment | Result rows, grouped by discipline | One task per discipline engineer (xve5Discipline on the Test Point) to record vote 3 | Derive Event and Mission grades; set results for rollup; flag rejected Test Points as retest candidates | New |
The existing Test Request, Test Plan and Test Card Release workflows are unchanged.
Rules
Put these in BMIDE (conditions, property constants and a save-time check) and in the page layout's visibility conditions, so they hold for every way data gets in, including imports and the API.
- Conditional reasons. Each reason field is visible and required only when its result field is not the success value.
- Time order. Power on ≤ engine start ≤ taxi ≤ takeoff ≤ landing ≤ engine off ≤ power off. Missing times are allowed while drafting and blocked at submit.
- Derived defaults. Flight duration, Executed date and Flight date are filled on save when empty and stay editable. They are stored values, not runtime properties, so later edits stick.
- Lock. When
xve5LockExecutionPropis true, execution fields are read-only for everyone except the DBA role. - Vote order. Vote 3 can only be set on a run whose status is Executed.
- Grade derivation. Event: Successful if every executed run has vote 3 Accept, Partially Successful if some do, Non-Productive if none do. Mission: Successful if every Event is Successful, Partially Successful if at least one is, Non-Productive if none are. Canceled and Aborted are set by people, never derived.
Screen crosswalk
Where each part of the post-flight execution deck ends up.
| Deck | Becomes |
|---|---|
| Slide 1, start from a Mission or a Home tile | Start Execution command on the Mission; Inbox task; "Missions to execute" tile |
| Page 1, Mission outcome, delays, events list | Mission Execution tab |
| Page 2, Event outcome, delays, flight IDs, times | Flight Event Execution tab |
| Page 3, Test Point execution grid, Add a Copy | Test Point Results tab; Add Repeat Run |
| Page 4, build-up parameter tables | Edit Run Parameters on a result row |
| Page 5, service characteristics | Record Usage, into SLM |
| Save Draft | Save (the record stays editable until the task is completed) |
| Submit, mark Event Complete | Complete the workflow task |
| "Entered by" | Last modifying user and the workflow audit |
Open questions
- Outcome at post-flight versus grade after assessment. The deck asks for Successful, Partially Successful or Non-Productive at post-flight. The product summary defines those grades as the result of the data vote, which happens later. Proposal: at post-flight the engineer records only Flown, Aborted or Canceled, and the three grades are derived after assessment. This needs a decision before the LOV is fixed.
- OPS #. The model has an integer; the deck and spreadsheet say alphanumeric. Changing the type of an existing property is a migration, so confirm what values are really used.
- Run start and stop times. The model stores them as strings. Decide whether they are clock times, IADS times or offsets from takeoff.
- Without TcQualification. The product summary leaves open what replaces qualification checks if the customer does not license it. This affects the Start Execution check, not data entry.
Checks against the 2506 tier
Run read-only on 2 Nov 2026 against the Saber 2.0 / Pre-Int 2506 tier: type descriptions plus the properties and relations of the 4 Missions, 1 Flight Event and 4 Test Cards found there. Nothing was written.
| Check | Result | Status |
|---|---|---|
| Delay table properties | xve5MissionDelayTbl on the Mission, xve5EventDelayTbl on the Flight Event | Settled |
| Mission to Flight Event link | crt0ParentVldnContract on the Flight Event (FE-0000005 points to MISS-0000004). The Flight Event also carries runtime copies of the Mission's title and dates. | Settled |
| Reason fields on the result row | xve5ExecRiskReason is "Improper Execution Reason", xve5ProductRiskReason is "Improper Behaved Reason", xve5RequestorVote is "Data Acceptable", xve5RejectionReason is "Non Acceptance Reason" | Settled |
| Same Test Point twice in one Flight Event | Not allowed. Tested as infodba: Verification Management collapses a repeated Test Point to one link, and a second link is refused with code 35010 ("already exists"). Probe objects left on the tier: MISS-0000008 and FE-0000007, both named "ZZ PROBE exec test 2026-11-02", owned by infodba, with one link from FE-0000007 to TPT-000019. | Settled |
| Who can create Missions | The cmartini account was refused write access on a new Mission revision (code 2010); infodba succeeded. Access Manager rules for Flight Test objects must be part of the deployment. | Open |
| Parameter values per run | Verification Management attaches parameters to a Verification Request (here, the Flight Event) per content element, with a direction and a "copy" option, so a Flight Event can hold its own copy of a Test Point's parameter values. Whether two runs of one Test Point in one Flight Event can hold different values is still untested. | Open |
| Create path for Start Execution | Missions and Flight Events should be created with createVerificationRequest (it takes the parent Mission and the content list in one call), not with generic create. Generic create failed on required fields and on an invalid tag. | Settled |
| SLM usage recording | Utilization type present in the export; command and flow not checked | Open |