BuilderVault
PMO implementation package

Intake and triage implementation package

A lightweight portfolio intake portal with request scoring, approval routing, communications, and a decision log.

2
Tables
3
Screens
2
Power Fx snippets
2
Flow recipes
Downloadable guideIntake and triage build guideDownloadable implementation guide with data model, screen blueprint, formulas, flows, and rollout checklist.

Build checklist

  • Define intake categories and required questions.
  • Build the request table and submitter form.
  • Add triage scoring and status transitions.
  • Automate submitter and reviewer communications.
  • Publish Power BI demand funnel and aging views.

Workflow map

Requester drafts demand
Submit intake request
PMO validates completeness
Clarification loop if needed
Weighted triage scoring
Approve, defer, or reject
Create charter record when approved

Data model package

EitherIntake Requests

Primary demand record submitted by business users and triaged by the PMO.

ColumnTypeRequiredNotes
TitleSingle line textYesShort request name used in queues and reports.
Request TypeChoiceYesProject, enhancement, automation, report, process improvement, support.
Business UnitChoice or lookupYesUse a lookup when departments need owners, sponsors, or reporting attributes.
SponsorPerson or lookup to Contact/UserYesThe accountable business sponsor.
Problem StatementMultiple lines textYesCapture the business pain in plain language.
Expected BenefitCurrency or numberNoUse text early if benefits are qualitative.
ComplexityChoiceYesLow, Medium, High. Feed scoring and routing.
Priority ScoreNumberNoCalculated from weighted criteria; avoid manual entry when possible.
Current StatusChoiceYesDraft, Submitted, Clarification Requested, Ready for Triage, Approved for Charter, Deferred, Rejected.
Decision ReasonMultiple lines textNoRequired when rejecting or deferring.

Relationships

  • One Intake Request can create one Project Charter.
  • Many Triage Decisions can relate to one Intake Request.
  • Many Communication Log rows can relate to one Intake Request.

Indexes

  • Current Status
  • Business Unit
  • Sponsor
  • Submitted Date
  • Triage Owner
  • Decision Date
EitherScoring Criteria

Configurable scoring rubric so the PMO can change weights without editing the app.

ColumnTypeRequiredNotes
Criterion NameSingle line textYesStrategic alignment, benefit, urgency, risk, complexity.
WeightNumberYesUse whole numbers that total 100 across active criteria.
Score GuidanceMultiple lines textYesExplains what low, medium, and high scores mean.
ActiveYes/NoYesDeactivate instead of deleting to preserve history.

Relationships

  • Scoring Criteria is referenced by triage scoring controls.

Indexes

  • Active
  • Sort Order

Power Apps screen package

Business requesterRequest Intake Submit Screen

Capture a clean demand request without exposing PMO-only scoring fields.

Layout

  • Header with request type and save state
  • Left column for business need and sponsor
  • Right column for timing, benefit, complexity, and attachments
  • Footer command bar with Save Draft and Submit

Controls

  • frmIntakeRequest bound to Intake Requests
  • cmbRequestType
  • cmbBusinessUnit
  • cmbSponsor
  • txtProblemStatement
  • txtExpectedBenefit
  • dpDesiredStart
  • attBusinessCase
  • btnSaveDraft
  • btnSubmit

Formula notes

  • btnSubmit.DisplayMode checks required fields and varWorking
  • OnSuccess sets status to Submitted and navigates to confirmation
  • Use IfError around SubmitForm or Patch to show clear failure messages

Data sources

  • Intake Requests
  • Business Units
  • Sponsors or Users
  • Attachments
PMO analystPMO Triage Queue Screen

Work the intake backlog by owner, status, age, score, and business unit.

Layout

  • Filter rail for status, owner, business unit, aging
  • Gallery of intake cards
  • Selected request summary panel
  • Action buttons for assign, clarify, score, approve, defer, reject

Controls

  • galTriageQueue
  • cmbStatusFilter
  • cmbOwnerFilter
  • txtSearch
  • frmSelectedRequest
  • btnRequestClarification
  • btnMoveToScoring
  • btnDecision

Formula notes

  • Gallery Items uses delegable status and StartsWith filters
  • Age badge uses DateDiff(SubmittedDate, Today())
  • Decision buttons require decision reason for defer/reject

Data sources

  • Intake Requests
  • Triage Decisions
  • Communication Log
PMO analyst or review boardTriage Scoring Screen

Score requests consistently and produce a recommendation.

Layout

  • Request context summary
  • Repeating scoring criteria gallery
  • Weighted score panel
  • Recommendation and decision notes
  • Submit decision command bar

Controls

  • galScoringCriteria
  • sldCriterionScore
  • lblWeightedTotal
  • cmbDecision
  • txtDecisionReason
  • btnSaveScore
  • btnCreateCharter

Formula notes

  • Weighted score = Sum(criteria score * weight)
  • Recommendation maps thresholds to approve/defer/reject
  • Create charter button patches Project Charters and links intake request

Data sources

  • Scoring Criteria
  • Intake Requests
  • Triage Decisions
  • Project Charters

Power Fx package

btnSubmit.OnSelectSubmit intake request with validation
Formula / code
If(
    IsBlank(Trim(txtProblemStatement.Text)) || IsBlank(cmbRequestType.Selected) || IsBlank(cmbSponsor.Selected),
    Notify("Complete request type, sponsor, and problem statement before submitting.", NotificationType.Warning),
    IfError(
        Patch(
            'Intake Requests',
            Coalesce(varCurrentRequest, Defaults('Intake Requests')),
            {
                Title: txtTitle.Text,
                'Request Type': cmbRequestType.Selected,
                Sponsor: cmbSponsor.Selected,
                'Problem Statement': txtProblemStatement.Text,
                'Current Status': { Value: "Submitted" },
                'Submitted Date': Now()
            }
        ),
        Notify("The request could not be submitted.", NotificationType.Error),
        Notify("Request submitted for PMO triage.", NotificationType.Success)
    )
);

Notes

  • Use Coalesce so the same button can submit a draft or new request.
  • Keep status transition in the same Patch as Submitted Date.
  • Replace SharePoint choice syntax with Dataverse choices if using Dataverse.
lblWeightedScore.TextWeighted triage score
Formula / code
With(
    {
        weightedScore: Sum(
            galScoringCriteria.AllItems,
            Value(txtScore.Text) * ThisRecord.Weight
        )
    },
    Text(weightedScore, "0")
)

Notes

  • Store the final score on the intake request when the decision is saved.
  • Keep scoring criteria in a config table so weights are not hard-coded forever.

Power Automate package

FlowIntake - Confirm Submission

Trigger: When an intake request is created or status changes to Submitted.

Check Current Status equals Submitted.
Send confirmation email to requester.
Post adaptive card or Teams message to triage channel.
Create initial triage decision row assigned to PMO queue.
Write Communication Log row.

Expressions

  • @equals(triggerOutputs()?['body/CurrentStatus/Value'], 'Submitted')
  • coalesce(triggerOutputs()?['body/Sponsor/Email'], 'unassigned')
FlowIntake - Create Charter

Trigger: When triage decision changes to Approved for Charter.

Get intake request.
Create Project Charter record.
Copy sponsor, business unit, request title, problem statement, and expected benefit.
Update intake Next Stage to Charter.
Notify requester and charter owner.

Expressions

  • @equals(triggerOutputs()?['body/Decision/Value'], 'Approved for Charter')
  • formatDateTime(utcNow(), 'yyyy-MM-dd')

Dataverse solution package

Create solution BV PMO Intake with publisher prefix bvpmointake.

Tables

  • bv_intakerequest
  • bv_scoringcriterion
  • bv_triagedecision
  • bv_communicationlog

Choices

  • bv_requesttype
  • bv_intakestatus
  • bv_complexity
  • bv_triagedecisiontype

Apps

  • PMO Intake Portal
  • PMO Triage Workbench

Cloud flows

  • Intake - Confirm Submission
  • Intake - Request Clarification
  • Intake - Create Charter
  • Intake - Weekly Aging Digest

Security roles

  • PMO Intake Requester
  • PMO Triage Analyst
  • PMO Sponsor Viewer
  • PMO Executive Viewer

Environment variables

  • PMO Intake Site URL
  • PMO Triage Team Email
  • PMO Digest Channel URL
  • Default Charter Owner

Dashboards

  • Demand Funnel
  • Triage Aging
  • Department Demand
  • Decision Mix

Deployment checklist

  • Create development, test, and production environments or sites before build-out.
  • Create publisher prefix, solution shell, environment variables, and connection references first.
  • Build tables and choices before apps and flows.
  • Import sample template rows, then test with non-admin users.
  • Run approval, rejection, revision, escalation, and overdue scenarios before release.
  • Publish Power BI pages after validating relationships, date fields, status definitions, and security trimming.
  • Document owners, support mailbox, release notes, and rollback steps.

Starter files