Strategy and structure
Users, Portfolios, Programs, StrategicGoals. Define authenticated internal participants and the strategic structure for investment decisions.
- Users
- Portfolios
- Programs
- StrategicGoals
The canonical records behind portfolio governance.
26 tables · 58 relationships
Users, Portfolios, Programs, StrategicGoals. Define authenticated internal participants and the strategic structure for investment decisions.
Scorecards, ScorecardDimensions, Proposals, ProposalScores. Keep review frameworks and proposal evidence tied to their frozen versions.
Initiatives, InitiativeProjects, GoalAlignments, StageGates, GateCriteria, GateReviews, GateScorecards. Connect approved initiatives to delivery context and preserve independent gate decisions.
Budgets, BudgetAllocations, FundingAllocations. Separate approved funding and reserved headroom from reconciled actual spend.
KPIs, KPIMeasurements, Risks, Dependencies, RoadmapSnapshots, RoadmapTimeline, PortfolioReviews, PortfolioReviewAttendees. Retain dated observations, dependencies and the participants in each portfolio review.
Preserve canonical identifiers and relationship targets. A proposal promotes once; reviewer scores are unique per proposal or gate dimension. Funding and budget currency must agree. External ProjectRef values resolve only through authorized source mappings.
| Field | Type | Required | Details |
|---|---|---|---|
UserID | text | yes | Stable unique mapping to the authenticated platform principal; never derived from email |
FullName | text | yes | |
Email | text | yes | |
Department | text | ||
Title | text | ||
AppRole | select | yes | Admin, PortfolioManager, ProgramManager, InitiativeOwner, GateReviewer, ProjectManager, Executive, Finance |
OnGateReviewBoard | toggle | yes | Eligible to be assigned to GateScorecards rows |
Active | toggle | yes |
| Field | Type | Required | Details |
|---|---|---|---|
PortfolioCode | text | yes | |
Name | text | yes | |
Charter | text | Markdown — the portfolio's mandate | |
Owner | reference | yes | → Users (PortfolioManager) |
ExecutiveSponsor | reference | yes | → Users (Executive) |
Status | select | yes | Active, Paused, Sunsetting, Closed |
StartDate | date | yes | |
TargetMixRunPercent | number | Target % Run-the-Business | |
TargetMixGrowPercent | number | Target % Grow-the-Business | |
TargetMixTransformPercent | number | Target % Transform-the-Business | |
AlignmentScore | formula | fx: weighted avg of contained Initiatives.AlignmentScore | |
KPIScore | formula | fx: weighted avg of contained Programs.KPIScore | |
HealthScore | select | Green, Amber, Red, Unknown — derived nightly by kpi-rollup | |
InitiativeCount | number | Derived count of visible Initiatives in this portfolio | |
AllocatedAmount | decimal | Derived current-year BudgetAllocations total in the portfolio budget currency |
| Field | Type | Required | Details |
|---|---|---|---|
ProgramCode | text | yes | |
Name | text | yes | |
Description | text | ||
Portfolio | reference | yes | → Portfolios |
ParentProgram | reference | → Programs (self) — for nested programs | |
Owner | reference | yes | → Users (ProgramManager) |
Status | select | yes | Active, Paused, Sunsetting, Closed |
StartDate | date | yes | |
TargetEndDate | date | ||
AlignmentScore | formula | fx: weighted avg of contained Initiatives.AlignmentScore | |
KPIScore | formula | fx: weighted avg of contained Initiatives' KPI attainment | |
InitiativeCount | number | Rollup |
| Field | Type | Required | Details |
|---|---|---|---|
GoalCode | text | yes | |
Goal | text | yes | One-line statement |
Description | text | Markdown | |
Theme | select | yes | Run, Grow, Transform |
Owner | reference | yes | → Users (Executive) |
MeasureType | select | yes | Numeric, Currency, Percent, Binary, Milestone |
StartValue | number | ||
TargetValue | number | ||
CurrentValue | number | ||
Unit | text | e.g. ARR, NPS, % | |
StartFiscalYear | text | yes | e.g. FY26 |
EndFiscalYear | text | yes | e.g. FY28 |
Status | select | yes | Active, Achieved, Retired |
| Field | Type | Required | Details |
|---|---|---|---|
ScorecardCode | text | yes | |
Name | text | yes | |
ScorecardType | select | yes | ProposalScoring, GateReview |
Description | text | ||
ScaleMin | number | yes | Default 1 |
ScaleMax | number | yes | Default 5 |
Active | toggle | yes | |
Version | number | yes |
| Field | Type | Required | Details |
|---|---|---|---|
Scorecard | reference | yes | → Scorecards |
Sequence | number | yes | |
DimensionCode | text | yes | |
Name | text | yes | |
Description | text | What "great" looks like | |
Weight | number | yes | 0–100; sum across dimensions should equal 100 |
InvertScale | toggle | When true, adjusted score = frozen ScaleMin + frozen ScaleMax − raw score before averaging; retain raw and adjusted values |
| Field | Type | Required | Details |
|---|---|---|---|
ProposalNumber | text | yes | |
Title | text | yes | |
Description | text | yes | Markdown |
Sponsor | reference | yes | → Users |
Submitter | reference | yes | → Users |
SubmittedAt | date | yes | |
Source | select | yes | IntakeForm, ExecAsk, PortfolioPlanning, Other |
ProposedPortfolio | reference | → Portfolios (suggested home) | |
ProposedProgram | reference | → Programs | |
EstimatedCost | currency | USD | |
EstimatedBenefit | currency | USD | |
EstimatedDurationMonths | number | ||
Scorecard | reference | → Scorecards (the framework used) | |
WeightedScore | formula | fx: SUM(DimAvgScore × DimWeight) / SUM(DimWeight), using complete eligible reviewer scores at the frozen framework version | |
LastScoredAt | date | ||
BacklogRank | number | 1 = top | |
Status | select | yes | Backlog, UnderReview, Approved, Promoted, Rejected, Deferred |
PromotedToInitiative | reference | → Initiatives (when Status = Promoted) | |
DecisionAt | date | ||
DecisionNotes | text |
| Field | Type | Required | Details |
|---|---|---|---|
Proposal | reference | yes | → Proposals |
Reviewer | reference | yes | → Users |
Dimension | reference | yes | → ScorecardDimensions |
Score | number | yes | Within Scorecard's scale |
Notes | text | ||
ScoredAt | date | yes |
| Field | Type | Required | Details |
|---|---|---|---|
InitiativeNumber | text | yes | |
Name | text | yes | |
Description | text | Markdown | |
Portfolio | reference | yes | → Portfolios |
Program | reference | → Programs | |
Sponsor | reference | yes | → Users (Executive) |
Owner | reference | yes | → Users (InitiativeOwner) |
SourceProposal | reference | → Proposals (when promoted) | |
StartDate | date | yes | |
TargetEndDate | date | yes | |
ActualEndDate | date | ||
EstimatedCost | currency | yes | USD — masked from ProjectManager |
EstimatedBenefit | currency | yes | USD — masked from ProjectManager |
BenefitType | select | yes | RevenueLift, CostSavings, RiskReduction, ComplianceMandatory, StrategicCapability, Other |
RiskLevel | select | yes | Low, Medium, High, Critical |
CurrentStage | reference | → StageGates (current gate row) | |
Status | select | yes | Proposed, Approved, InFlight, ReadyForGate, OnHold, Completed, Cancelled |
AlignmentScore | formula | fx: SUM(GoalAlignments.AlignmentWeight) capped at 100 | |
HealthScore | select | Green, Amber, Red, Unknown — written by the roadmap-recompute workflow as min(linked Projects' health enum, KPI rollup status, Risks max-score band) | |
PercentComplete | formula | fx: SUM(InitiativeProjects.ProjectPercentComplete × InitiativeProjects.ContributionPercent) / SUM(InitiativeProjects.ContributionPercent) — weighted by ContributionPercent | |
KPIAttainment | formula | fx: avg attainment across own KPIs |
| Field | Type | Required | Details |
|---|---|---|---|
Initiative | reference | yes | → Initiatives |
ProjectRef | text | yes | ProjectNumber from pm-projects (cross-app reference by code) |
ProjectName | text | yes | Snapshot of Project name for display |
ContributionPercent | number | 0–100; how much of the Project's effort counts toward this Initiative | |
LinkedAt | date | yes |
| Field | Type | Required | Details |
|---|---|---|---|
Initiative | reference | yes | → Initiatives |
StrategicGoal | reference | yes | → StrategicGoals |
AlignmentWeight | number | yes | 0–100; sum across an Initiative's rows capped at 100 |
Rationale | text | Why this Initiative ladders to this Goal |
| Field | Type | Required | Details |
|---|---|---|---|
StageCode | text | yes | |
Name | text | yes | Discovery, Plan, Approve, Build, Validate, Release, Sustain |
Sequence | number | yes | 1 = first |
Description | text | ||
GateScorecard | reference | → Scorecards (ScorecardType = GateReview) | |
ApprovalThreshold | number | Min weighted score to pass | |
RequiredQuorum | number | Min reviewers needed to make a decision | |
Active | toggle | yes |
| Field | Type | Required | Details |
|---|---|---|---|
Stage | reference | yes | → StageGates |
Sequence | number | yes | |
Criterion | text | yes | |
Description | text | ||
Mandatory | toggle | yes |
| Field | Type | Required | Details |
|---|---|---|---|
GateReviewNumber | text | yes | |
Initiative | reference | yes | → Initiatives |
Stage | reference | yes | → StageGates |
Scorecard | reference | yes | → Scorecards (gate's GateScorecard at review-open time) |
Facilitator | reference | yes | → Users (PortfolioManager) |
ScheduledAt | date | yes | |
HeldAt | date | ||
Status | select | yes | Scheduled, InReview, Approved, ConditionallyApproved, Rejected, Deferred, Closed, Cancelled |
WeightedScore | formula | fx: SUM(EligibleDimensionAverage × FrozenDimensionWeight) / SUM(FrozenDimensionWeight) | |
Quorum | formula | fx: count of DISTINCT eligible non-conflicting Reviewer identities with all required dimensions Submitted at the frozen version; abstentions do not satisfy decision quorum | |
DecisionRationale | text | ||
Conditions | text | Markdown — required follow-ups if ConditionallyApproved | |
DecidedAt | date | ||
CriteriaEvidence | longtext | Versioned criterion-by-criterion evidence and required deliverable references frozen when review opens |
| Field | Type | Required | Details |
|---|---|---|---|
GateReview | reference | yes | → GateReviews |
Reviewer | reference | yes | → Users |
Dimension | reference | yes | → ScorecardDimensions |
Score | number | Within Scorecard scale — masked from Initiative Owner pre-decision | |
Vote | select | Approve, ConditionallyApprove, Reject, Abstain | |
Notes | text | ||
Status | select | yes | NotStarted, InProgress, Submitted |
SubmittedAt | date |
| Field | Type | Required | Details |
|---|---|---|---|
BudgetNumber | text | yes | |
Portfolio | reference | yes | → Portfolios |
FiscalYear | text | yes | e.g. FY26 |
Currency | select | yes | USD |
TotalAmount | currency | yes | USD — the envelope set by Finance |
AllocatedAmount | formula | fx: SUM(BudgetAllocations.Amount) | |
RemainingAmount | formula | fx: TotalAmount − AllocatedAmount | |
SpentAmount | currency | USD — actuals fed in from Finance | |
Status | select | yes | Draft, Approved, Locked, Closed |
ApprovedBy | reference | → Users (Finance) | |
ApprovedAt | date |
| Field | Type | Required | Details |
|---|---|---|---|
Budget | reference | yes | → Budgets |
Initiative | reference | yes | → Initiatives |
Amount | currency | yes | USD — masked except Finance + PortfolioManager + own InitiativeOwner |
FundingAllocation | reference | → FundingAllocations (source approval) | |
AllocatedAt | date | yes | |
Notes | text |
| Field | Type | Required | Details |
|---|---|---|---|
RequestNumber | text | yes | |
Initiative | reference | yes | → Initiatives |
Requester | reference | yes | → Users (InitiativeOwner) |
FiscalYear | text | yes | |
RequestedAmount | currency | yes | USD |
ApprovedAmount | currency | USD | |
Justification | text | yes | |
Status | select | yes | Draft, Submitted, UnderReview, Approved, PartiallyApproved, Rejected, Withdrawn |
ApprovedBy | reference | → Users (Finance + PortfolioManager) | |
ApprovedAt | date | ||
RejectionReason | text | ||
PortfolioApprovedBy | reference | → Users; distinct Portfolio Manager decision signer | |
PortfolioApprovedAt | datetime | Recorded portfolio co-approval time | |
FinanceApprovedBy | reference | → Users; distinct Finance decision signer | |
FinanceApprovedAt | datetime | Recorded Finance co-approval time |
| Field | Type | Required | Details |
|---|---|---|---|
KPICode | text | yes | |
Initiative | reference | yes | → Initiatives |
Name | text | yes | |
Description | text | ||
MeasureType | select | yes | Numeric, Percent, Currency, Binary, Milestone |
Unit | text | e.g. ARR$, NPS, % adoption | |
TargetDirection | select | yes | HigherIsBetter, LowerIsBetter |
BaselineValue | number | ||
TargetValue | number | ||
CurrentValue | number | Latest measurement (refreshed by kpi-rollup) | |
AmberThreshold | number | Crossing this flips Status: Green → Amber | |
RedThreshold | number | Crossing this flips Status: Amber → Red | |
Cadence | select | yes | Weekly, Monthly, Quarterly, Annual, Adhoc |
Owner | reference | yes | → Users (typically InitiativeOwner or named ProjectManager) |
Status | select | Green, Amber, Red, Achieved |
| Field | Type | Required | Details |
|---|---|---|---|
MeasurementNumber | text | yes | |
KPI | reference | yes | → KPIs |
PeriodEnd | date | yes | |
Value | number | yes | |
ReportedBy | reference | yes | → Users |
ReportedAt | date | yes | |
Source | select | Manual, ProjectImport, IntegrationFeed | |
Notes | text |
| Field | Type | Required | Details |
|---|---|---|---|
RiskNumber | text | yes | |
Initiative | reference | yes | → Initiatives |
Title | text | yes | |
Description | text | ||
Category | select | yes | Schedule, Cost, Scope, Resource, Technical, Vendor, Regulatory, Adoption, Other |
Likelihood | select | yes | Rare, Unlikely, Possible, Likely, AlmostCertain |
Impact | select | yes | Negligible, Minor, Moderate, Major, Severe |
Score | formula | fx: Likelihood-rank × Impact-rank (1–25) | |
Mitigation | text | ||
Owner | reference | yes | → Users |
Status | select | yes | Open, Mitigating, Closed, Realized |
IdentifiedAt | date | yes | |
ClosedAt | date |
| Field | Type | Required | Details |
|---|---|---|---|
DependencyNumber | text | yes | |
DownstreamInitiative | reference | yes | → Initiatives (the one that needs the upstream) |
UpstreamInitiative | reference | yes | → Initiatives (the one being depended on) |
Type | select | yes | DeliverableHandoff, SharedResource, TechnicalPlatform, PolicyChange, DataDependency, Other |
Description | text | ||
NeedByDate | date | When the downstream needs the upstream's deliverable | |
RiskFlag | select | OK, AtRisk, Slipping, Blocked | |
Status | select | yes | Open, Resolved, Cancelled |
RaisedBy | reference | yes | → Users |
RaisedAt | date | yes |
| Field | Type | Required | Details |
|---|---|---|---|
SnapshotNumber | text | yes | |
Portfolio | reference | yes | → Portfolios |
SnapshotDate | date | yes | |
GeneratedBy | select | yes | Scheduled, Manual |
GeneratedAt | date | yes | |
InitiativeCount | number | Snapshot count | |
Notes | text | Markdown — for manual snapshots taken before a re-plan |
| Field | Type | Required | Details |
|---|---|---|---|
Snapshot | reference | yes | → RoadmapSnapshots |
Initiative | reference | yes | → Initiatives |
StartDate | date | yes | Snapshot of Initiatives.StartDate at snapshot time |
TargetEndDate | date | yes | Snapshot of Initiatives.TargetEndDate at snapshot time |
CurrentStage | text | yes | StageGate name at snapshot time |
HealthScore | select | yes | Green, Amber, Red |
PercentComplete | number |
| Field | Type | Required | Details |
|---|---|---|---|
ReviewNumber | text | yes | |
Portfolio | reference | yes | → Portfolios |
ReviewQuarter | text | yes | e.g. FY26-Q1 |
ScheduledAt | date | yes | |
HeldAt | date | ||
Facilitator | reference | yes | → Users (PortfolioManager) |
PacketURL | text | Generated PortfolioReviewPacket PDF link | |
Status | select | yes | PacketPrepared, Scheduled, InProgress, Completed, Cancelled |
DecisionsSummary | text | Markdown — what got greenlit / paused / killed / refunded | |
RebalanceActions | text | Markdown — concrete actions for next quarter | |
StructuredActions | longtext | Validated action list: action, initiative, decision owner, due date and originating review; decisions never execute funding transfers implicitly |
| Field | Type | Required | Details |
|---|---|---|---|
PortfolioReview | reference | yes | → PortfolioReviews |
Attendee | reference | yes | → Users |
RoleAtReview | select | yes | Facilitator, ExecutiveSponsor, PortfolioManager, ProgramManager, InitiativeOwner, Finance, Observer |
InviteStatus | select | yes | Invited, Accepted, Declined, Tentative |
Attended | toggle | Set post-meeting | |
NotesContributed | text |
Create your ERP.AI account and get started with Proto.
We use essential cookies to run the site and optional cookies for features, analytics, and relevant content. See Cookie policy
We use cookies to enhance your experience, analyze site traffic, and serve relevant content. By clicking "Accept All," you agree to our use of cookies. You can customize your preferences at any time.
Learn more about how we use cookiesThese cookies are required for the website to function properly. They ensure security, enable basic features like page navigation, and store user session data. You cannot disable these cookies.
These cookies enable additional features that enhance your experience, such as live chat, video playback, personalized content recommendations, and remembering user preferences.
These cookies help us understand how visitors interact with our site by collecting anonymous usage data. This allows us to measure performance, detect issues, and continuously improve the user experience.
These cookies allow us and advertising partners, including X, to deliver ads tailored to your interests. They track browsing habits across sites to provide relevant advertising and measure ad effectiveness.