Overview
Simplify the change request (CR) workflow by removing a confusing type categorization system, streamlining the form, and moving approval to Slack. One CR per change. Approval = implementation.
More Info
Stakeholders
Product Stakeholder:
Software Stakeholder: @chpy04 @wavehassman @Peyton-McKee
Reference Users:
User Story
- As a member, I want a simple form that just asks what I'm changing and why, without confusing type choices and multiple text boxes.
- As a head/admin, I want to approve changes directly from Slack without opening finishline.
- As a reviewer, I want to see a diff of what changed before approving.
Success Metrics
- Slack-based approvals: % of approvals via Slack reply
- Approval turnaround: time from submission to turnaround
- CR submission time: reduced form fields = faster submission
Rollout Plan
- Migration: extract enum data to text field, remove old type tables
- Form + UI changes: remove type field, collapse multi-CR workflow, simplify button
- Slack integration: reply based approval, diff in thread
Out of Scope
- Cross-project blocking WP timeline propagation
- Changes to activation, stage gate, leadership, or budget CR types (auto-implementing CRs stay as-is)
Background / Context
The existing CR system has four manual types: ISSUE, DEFINITION_CHANGE, and OTHER. In practice, users don't understand the distinctions and nearly always select OTHER. The form is cluttered, stacking multiple changes onto one request is confusing, and approval happens inside the app with no push notifications.
Auto-implementing types (activation, stage gate, leadership changes) work fine and are untouched.
Acceptance Criteria & Mock-ups
Remove type field and only have "Why are you making this change?" text box
Field is free-text and required. Old type enum data is migrated into this field as a human-readable string on existing CRs.
Approval logic: requested review OR any head/admin can approve
If a specific reviewer is requested, approval must come from that person or any head/admin. Heads/admins can always approve regardless of reviewer assignment.
Slack notification with diff, tagging and reply-based approval
On CR submit: notify project's Slack channel tagging the project head and requested reviewer if it is not auto implementing. Thread includes a diff. Users reply "approve" to auto-approve. Bot validates permissions and responds with confirmation or rejection message. Like the attendance feature.
Remove legacy UI elements
Select existing CR" and "Make new change request" buttons removed from project/WP views. Remove /change-requests/new route. The only entry point is the edit button for both project and workpackage. After CR approval: "create new project" and "create new WP" buttons hidden. Review comment made optional CR edit page: "Submit" and "Request change" merged into one context-aware button.
Migrate existing enum data before removing old tables
Extract ISSUE/DEFINITION_CHANGE/OTHER type + any associated proposed changes data into human-readable JSON string. Make the new buttons auto-implement or not. Populate new why text field. Then drop the old enum column and related tables. Activation/stage gate/leadership/budget tables untouched.
Would we be getting rid of Scope_CR, Scope_CR_Why, Wbs_Proposed_Changes and Proposed_Solution tables on top of the enum values?
Stage gate date input defaults to today
When a user stage gates a work package, the date field is shown and defaults to the current date. User can change it.
Tickets
Overview
Simplify the change request (CR) workflow by removing a confusing type categorization system, streamlining the form, and moving approval to Slack. One CR per change. Approval = implementation.
More Info
Stakeholders
Product Stakeholder:
Software Stakeholder: @chpy04 @wavehassman @Peyton-McKee
Reference Users:
User Story
Success Metrics
Rollout Plan
Out of Scope
Background / Context
The existing CR system has four manual types: ISSUE, DEFINITION_CHANGE, and OTHER. In practice, users don't understand the distinctions and nearly always select OTHER. The form is cluttered, stacking multiple changes onto one request is confusing, and approval happens inside the app with no push notifications.
Auto-implementing types (activation, stage gate, leadership changes) work fine and are untouched.
Acceptance Criteria & Mock-ups
Remove type field and only have "Why are you making this change?" text box
Field is free-text and required. Old type enum data is migrated into this field as a human-readable string on existing CRs.
Approval logic: requested review OR any head/admin can approve
If a specific reviewer is requested, approval must come from that person or any head/admin. Heads/admins can always approve regardless of reviewer assignment.
Slack notification with diff, tagging and reply-based approval
On CR submit: notify project's Slack channel tagging the project head and requested reviewer if it is not auto implementing. Thread includes a diff. Users reply "approve" to auto-approve. Bot validates permissions and responds with confirmation or rejection message. Like the attendance feature.
Remove legacy UI elements
Select existing CR" and "Make new change request" buttons removed from project/WP views. Remove /change-requests/new route. The only entry point is the edit button for both project and workpackage. After CR approval: "create new project" and "create new WP" buttons hidden. Review comment made optional CR edit page: "Submit" and "Request change" merged into one context-aware button.
Migrate existing enum data before removing old tables
Extract ISSUE/DEFINITION_CHANGE/OTHER type + any associated proposed changes data into human-readable JSON string. Make the new buttons auto-implement or not. Populate new why text field. Then drop the old enum column and related tables. Activation/stage gate/leadership/budget tables untouched.
Would we be getting rid of Scope_CR, Scope_CR_Why, Wbs_Proposed_Changes and Proposed_Solution tables on top of the enum values?
Stage gate date input defaults to today
When a user stage gates a work package, the date field is shown and defaults to the current date. User can change it.
Tickets