Analyse Results
This commit is contained in:
@@ -0,0 +1,583 @@
|
||||
# c-entron.NET - Undocumented State Machines & Workflow Use Cases
|
||||
|
||||
> **Generated**: 2025-11-11
|
||||
> **Source**: Enum Analysis from Centron.Entities
|
||||
> **Total State Machines**: 9 (78% undocumented)
|
||||
> **Wizard Workflows**: 30+ pages across 4 wizards
|
||||
|
||||
---
|
||||
|
||||
## 1. HELPDESK TICKET WORKFLOW (5 States)
|
||||
|
||||
### State Machine Definition
|
||||
|
||||
```
|
||||
States:
|
||||
1. New (Initial)
|
||||
2. InProgress (Assigned to technician)
|
||||
3. OnHold (Awaiting customer response/parts)
|
||||
4. Resolved (Fix applied, awaiting confirmation)
|
||||
5. Closed (Completed, resolved)
|
||||
|
||||
State Transitions:
|
||||
New → InProgress [Trigger: Assign to technician]
|
||||
New → OnHold [Trigger: Cannot reproduce]
|
||||
InProgress → OnHold [Trigger: Blocked by external dependency]
|
||||
OnHold → InProgress [Trigger: Dependency resolved]
|
||||
InProgress → Resolved [Trigger: Fix verified]
|
||||
OnHold → Resolved [Trigger: Auto-resolve due to inactivity]
|
||||
Resolved → Closed [Trigger: Customer confirmed resolution]
|
||||
Closed → InProgress [Trigger: Customer reports issue not resolved]
|
||||
* → Closed [Trigger: Manual closure by manager]
|
||||
```
|
||||
|
||||
### Associated Use Cases
|
||||
|
||||
**UC1: Create Ticket**
|
||||
- System: New ticket created with status "New"
|
||||
- Fields: Title, Description, CategoryI3D, PriorityI3D
|
||||
- Auto-assignments: Assign to On-call technician (optional)
|
||||
|
||||
**UC2: Assign Ticket**
|
||||
- Technician: Move ticket from New → InProgress
|
||||
- System: Create assignment record, notify assignee
|
||||
- Auto-escalation: If not assigned within SLA
|
||||
|
||||
**UC3: Put Ticket OnHold**
|
||||
- Technician: Move to OnHold state
|
||||
- Reason: Awaiting customer info, parts on order, etc.
|
||||
- SLA: Timer paused while OnHold
|
||||
- Auto-resume: After specified days or manual action
|
||||
|
||||
**UC4: Resolve Ticket**
|
||||
- Technician: Apply fix, mark InProgress → Resolved
|
||||
- Action: Send resolution summary to customer
|
||||
- Feedback: Request customer confirmation
|
||||
|
||||
**UC5: Close Ticket**
|
||||
- Customer: Confirm resolution (manual or auto after X days)
|
||||
- System: Move Resolved → Closed
|
||||
- Survey: Request satisfaction rating (NPS)
|
||||
- Reporting: Include in resolution metrics
|
||||
|
||||
**UC6: Reopen Ticket**
|
||||
- Customer: Reports issue not resolved
|
||||
- System: Move Closed → InProgress
|
||||
- Notify: Reassign to original technician
|
||||
- Escalation: Track reopen count
|
||||
|
||||
**UC7: Escalate Ticket**
|
||||
- Manager: Increase priority if SLA breached
|
||||
- Action: Move to senior technician
|
||||
- Notification: Alert management of SLA breach
|
||||
|
||||
**UC8: Auto-Close OnHold**
|
||||
- System: Automatically close if OnHold > X days
|
||||
- Notification: Send reminder to customer before auto-close
|
||||
- Use Case: Prevent zombie tickets
|
||||
|
||||
---
|
||||
|
||||
## 2. CONTINGENT/LICENSING STATE MACHINE (4 States)
|
||||
|
||||
### State Machine Definition
|
||||
|
||||
```
|
||||
States:
|
||||
1. Open (Available to use)
|
||||
2. Reserved (Allocated to customer)
|
||||
3. Used (Fully consumed)
|
||||
4. Expired (Time period ended)
|
||||
|
||||
Transitions:
|
||||
Open → Reserved [Trigger: Customer allocates contingent]
|
||||
Open → Used [Trigger: Full amount consumed]
|
||||
Reserved → Used [Trigger: Customer consumes allocation]
|
||||
Reserved → Open [Trigger: Customer cancels reservation]
|
||||
Used → Open [Trigger: Contingent replenished]
|
||||
Any → Expired [Trigger: Expiration date reached]
|
||||
Expired → Open [Trigger: Contingent renewed]
|
||||
```
|
||||
|
||||
### Associated Use Cases
|
||||
|
||||
**UC1: Set Up Contingent**
|
||||
- Billing: Create contingent container (e.g., 100 GB backup storage)
|
||||
- Period: Valid from StartDate to EndDate
|
||||
- Status: Set to "Open"
|
||||
|
||||
**UC2: Reserve Contingent**
|
||||
- Customer: Reserve portion for specific project (e.g., 50 GB)
|
||||
- System: Move 50 GB from Open → Reserved
|
||||
- Tracking: Link reservation to contract
|
||||
|
||||
**UC3: Consume Contingent**
|
||||
- Usage: Customer uses reserved amount
|
||||
- System: Move from Reserved → Used as consumed
|
||||
- Tracking: Update usage counter
|
||||
|
||||
**UC4: Cancel Reservation**
|
||||
- Customer: Decide not to use reserved amount
|
||||
- System: Move back from Reserved → Open
|
||||
- Usage: Amount returns to available pool
|
||||
|
||||
**UC5: Contingent Expiration**
|
||||
- System: Auto-expire unused contingent on EndDate
|
||||
- Notification: Alert customer before expiration (optional)
|
||||
- Renewal: Create new contingent or extend existing
|
||||
|
||||
**UC6: Replenish Contingent**
|
||||
- Billing: Add additional contingent to existing pool
|
||||
- System: Increase total, reset counter
|
||||
- Use Case: Upgrade or expand service
|
||||
|
||||
**UC7: Track Contingent Usage**
|
||||
- Reporting: Show Open, Reserved, Used, Expired amounts
|
||||
- Forecasting: Predict when contingent will be exhausted
|
||||
- Billing: Charge based on Used amount
|
||||
|
||||
---
|
||||
|
||||
## 3. CRM PROJECT STATE MACHINE (4 States)
|
||||
|
||||
### State Machine Definition
|
||||
|
||||
```
|
||||
States:
|
||||
1. Planning (Initial requirements gathering)
|
||||
2. InProgress (Active execution)
|
||||
3. OnHold (Suspended)
|
||||
4. Completed (Finished)
|
||||
|
||||
Transitions:
|
||||
Planning → InProgress [Trigger: Project kicked off]
|
||||
Planning → Completed [Trigger: Cancelled before start]
|
||||
InProgress → OnHold [Trigger: Resource unavailable]
|
||||
OnHold → InProgress [Trigger: Issue resolved]
|
||||
InProgress → Completed [Trigger: All deliverables done]
|
||||
* → Planning [Trigger: Replan project]
|
||||
```
|
||||
|
||||
### Associated Use Cases
|
||||
|
||||
**UC1: Create CRM Project**
|
||||
- Sales: Create new project for opportunity
|
||||
- Status: Initially set to "Planning"
|
||||
- Scope: Define deliverables, timeline
|
||||
|
||||
**UC2: Kick Off Project**
|
||||
- Project Manager: Planning → InProgress
|
||||
- Action: Assign resources, set milestone dates
|
||||
- Notification: Notify team members
|
||||
|
||||
**UC3: Suspend Project**
|
||||
- Manager: Move InProgress → OnHold
|
||||
- Reason: Budget cut, resource shortage, market change
|
||||
- Impact: SLA timers paused
|
||||
|
||||
**UC4: Resume Project**
|
||||
- Manager: Move OnHold → InProgress
|
||||
- Action: Reassign resources
|
||||
- Notification: Update stakeholders
|
||||
|
||||
**UC5: Complete Project**
|
||||
- Team: InProgress → Completed
|
||||
- Action: Mark deliverables done
|
||||
- Feedback: Customer satisfaction survey
|
||||
- Reporting: Lessons learned, financials
|
||||
|
||||
**UC6: Archive Project**
|
||||
- Manager: Move Completed → Archived
|
||||
- Use Case: Clean up old projects
|
||||
|
||||
---
|
||||
|
||||
## 4. SELF-CARE FORM STATE MACHINE (5 States)
|
||||
|
||||
### State Machine Definition
|
||||
|
||||
```
|
||||
States:
|
||||
1. Draft (Form not submitted)
|
||||
2. Submitted (Waiting for approval)
|
||||
3. Approved (Accepted by reviewer)
|
||||
4. Rejected (Needs revision)
|
||||
5. Completed (Action taken)
|
||||
|
||||
Transitions:
|
||||
Draft → Submitted [Trigger: User submits]
|
||||
Submitted → Approved [Trigger: Reviewer approves]
|
||||
Submitted → Rejected [Trigger: Reviewer rejects]
|
||||
Rejected → Draft [Trigger: User edits]
|
||||
Draft → Submitted [Trigger: User resubmits]
|
||||
Approved → Completed [Trigger: System processes action]
|
||||
```
|
||||
|
||||
### Associated Use Cases
|
||||
|
||||
**UC1: Create Self-Service Request**
|
||||
- Employee: Create form (e.g., password reset, address change)
|
||||
- Status: Draft
|
||||
- Use Case: Employee portal form submission
|
||||
|
||||
**UC2: Submit Form for Approval**
|
||||
- Employee: Submit form to manager/HR
|
||||
- Status: Draft → Submitted
|
||||
- Notification: Alert reviewer
|
||||
|
||||
**UC3: Review & Approve Form**
|
||||
- Manager: Validate request
|
||||
- Status: Submitted → Approved
|
||||
- Action: Trigger downstream process (e.g., reset password)
|
||||
|
||||
**UC4: Reject Form**
|
||||
- Manager: Request revision
|
||||
- Status: Submitted → Rejected
|
||||
- Feedback: Send reason for rejection
|
||||
|
||||
**UC5: Edit & Resubmit Form**
|
||||
- Employee: Revise based on feedback
|
||||
- Status: Rejected → Draft → Submitted
|
||||
- Use Case: Iterative approval process
|
||||
|
||||
**UC6: Process Approved Form**
|
||||
- System: Execute action (create account, update data, etc.)
|
||||
- Status: Approved → Completed
|
||||
- Notification: Confirm completion to employee
|
||||
|
||||
---
|
||||
|
||||
## 5. EVENT TRIGGER KINDS (6 Event Types)
|
||||
|
||||
### Event Type Classification
|
||||
|
||||
Event triggers define automation rules:
|
||||
|
||||
1. **OnInsert** - Triggered when record created
|
||||
2. **OnUpdate** - Triggered when record modified
|
||||
3. **OnDelete** - Triggered when record deleted
|
||||
4. **OnWorkflow** - Triggered by workflow step
|
||||
5. **OnSchedule** - Triggered on date/time
|
||||
6. **OnExternal** - Triggered by external system
|
||||
|
||||
### Associated Use Cases
|
||||
|
||||
**UC1: Auto-Create Follow-up Ticket**
|
||||
- Trigger: OnDelete of ticket (if reopened multiple times)
|
||||
- Action: Create escalation ticket to manager
|
||||
- Use Case: Quality control
|
||||
|
||||
**UC2: Send Confirmation Email**
|
||||
- Trigger: OnInsert of invoice
|
||||
- Action: Email customer invoice PDF
|
||||
- Use Case: Automated customer communication
|
||||
|
||||
**UC3: Update Stock Level**
|
||||
- Trigger: OnInsert of sales order
|
||||
- Action: Decrement inventory
|
||||
- Use Case: Real-time inventory sync
|
||||
|
||||
**UC4: Archive Old Tickets**
|
||||
- Trigger: OnSchedule (daily at 2 AM)
|
||||
- Action: Move closed tickets to archive
|
||||
- Use Case: Performance optimization
|
||||
|
||||
**UC5: Payment Reminder**
|
||||
- Trigger: OnSchedule (30 days after invoice)
|
||||
- Action: Send payment due notice
|
||||
- Use Case: Collections automation
|
||||
|
||||
---
|
||||
|
||||
## 6. RECEIPT/DOCUMENT USER STATE (3 States)
|
||||
|
||||
### State Machine Definition
|
||||
|
||||
```
|
||||
States:
|
||||
1. Draft (Initial/incomplete)
|
||||
2. Posted (Submitted to accounting)
|
||||
3. Archived (Historical)
|
||||
|
||||
Transitions:
|
||||
Draft → Posted [Trigger: User finalizes]
|
||||
Posted → Archived [Trigger: Period close]
|
||||
```
|
||||
|
||||
### Associated Use Cases
|
||||
|
||||
**UC1: Create Draft Receipt**
|
||||
- User: Create receipt, add line items
|
||||
- Status: Draft
|
||||
- Edit: Can modify until posted
|
||||
|
||||
**UC2: Post Receipt**
|
||||
- Accounting: Mark complete
|
||||
- Status: Draft → Posted
|
||||
- GL Impact: Creates accounting entries
|
||||
|
||||
**UC3: Archive Receipt**
|
||||
- System: Move to archive after period close
|
||||
- Status: Posted → Archived
|
||||
- Query: Read-only access for historical
|
||||
|
||||
---
|
||||
|
||||
## 7. HELPDESK TIMER BILLING STATE (4 States)
|
||||
|
||||
### State Machine Definition
|
||||
|
||||
```
|
||||
States:
|
||||
1. NotStarted (Timer not activated)
|
||||
2. Running (Timer active)
|
||||
3. Paused (Timer stopped, can resume)
|
||||
4. Billed (Time consumed, invoice generated)
|
||||
|
||||
Transitions:
|
||||
NotStarted → Running [Trigger: Technician starts work]
|
||||
Running → Paused [Trigger: Technician takes break]
|
||||
Paused → Running [Trigger: Resume work]
|
||||
Running → Billed [Trigger: Ticket closed]
|
||||
Paused → Billed [Trigger: Ticket closed]
|
||||
```
|
||||
|
||||
### Associated Use Cases
|
||||
|
||||
**UC1: Start Timer**
|
||||
- Technician: Begin work on ticket
|
||||
- Status: NotStarted → Running
|
||||
- Tracking: Record start time
|
||||
|
||||
**UC2: Pause Timer**
|
||||
- Technician: Take lunch/break
|
||||
- Status: Running → Paused
|
||||
- Tracking: Record pause time
|
||||
|
||||
**UC3: Resume Timer**
|
||||
- Technician: Return from break
|
||||
- Status: Paused → Running
|
||||
- Tracking: Update total time
|
||||
|
||||
**UC4: Bill for Time**
|
||||
- System: Generate invoice when ticket closed
|
||||
- Status: Running/Paused → Billed
|
||||
- Amount: Calculate from hourly rate
|
||||
- Use Case: Time-and-materials billing
|
||||
|
||||
**UC5: Adjust Time (Manual)**
|
||||
- Manager: Correct time entry
|
||||
- Reason: Non-productive time, mistakes
|
||||
- Action: Update billed amount
|
||||
|
||||
---
|
||||
|
||||
## WIZARD WORKFLOWS (30+ Pages)
|
||||
|
||||
### Wizard 1: Automated Contract Billing (7 Pages)
|
||||
|
||||
**Flow**: Select Date → Choose Contracts → Preview → Configure → Send
|
||||
|
||||
**Page 1: Separator - "Step 1: Verträge auswählen"**
|
||||
- Header only
|
||||
|
||||
**Page 2: Billing Date & Filters**
|
||||
- Input: ContractDateFilter (DateTime)
|
||||
- Filters: CalculationKind, BillingKinds, ContractExtraKind
|
||||
- Submit: Load matching contracts
|
||||
|
||||
**Page 3: Contract Selection**
|
||||
- Display: Filtered contracts with indicators
|
||||
- Multi-select: Choose contracts to bill
|
||||
- Actions: Preview, calculate totals
|
||||
|
||||
**Page 4: Separator - "Step 2: Einstellungen"**
|
||||
- Header only
|
||||
|
||||
**Page 5: Send Settings**
|
||||
- Options: Print, Email, Archive
|
||||
- Email: Recipient configuration
|
||||
- Print: Printer selection
|
||||
|
||||
**Page 6: Separator - "Step 3: Verträge abrechnen"**
|
||||
- Header only
|
||||
|
||||
**Page 7: Overview & Execute**
|
||||
- Preview: Summary of invoices to create
|
||||
- Execute: Confirm and run billing
|
||||
- Result: Success/error summary
|
||||
|
||||
**UC: Complete Automated Billing Run**
|
||||
1. Specify billing date
|
||||
2. Filter contracts (date, type, kind, interval)
|
||||
3. Review matching contracts
|
||||
4. Configure delivery method
|
||||
5. Preview invoices
|
||||
6. Execute billing
|
||||
7. Receive confirmation
|
||||
|
||||
---
|
||||
|
||||
### Wizard 2: Campaign Management (9 Pages)
|
||||
|
||||
**Page 1: Customer Selection**
|
||||
- Add customers to campaign
|
||||
|
||||
**Page 2: Campaign Phase Definition**
|
||||
- Define campaign phases (awareness, consideration, decision)
|
||||
|
||||
**Page 3: Employee Assignment**
|
||||
- Assign sales reps to campaign
|
||||
|
||||
**Page 4: Campaign Information**
|
||||
- Enter campaign name, budget, timeline
|
||||
|
||||
**Page 5: Campaign Reasons/Goals**
|
||||
- Define success criteria
|
||||
|
||||
**Page 6: Summary**
|
||||
- Review all settings
|
||||
|
||||
**And more pages for specific campaign types...**
|
||||
|
||||
**UC: Execute Multi-Phase Campaign**
|
||||
1. Select target customers
|
||||
2. Define campaign funnel
|
||||
3. Assign team members
|
||||
4. Set budget and goals
|
||||
5. Define success metrics
|
||||
6. Launch campaign
|
||||
7. Track progress
|
||||
|
||||
---
|
||||
|
||||
### Wizard 3: Contract Management (13 Pages)
|
||||
|
||||
**Page 1: Contract Details**
|
||||
- Contract number, customer, type, dates
|
||||
|
||||
**Page 2: Billing Address**
|
||||
- Shipping/billing address selection
|
||||
|
||||
**Page 3: Positions/Line Items**
|
||||
- Add articles, quantities, prices
|
||||
|
||||
**Page 4: Provision Settings**
|
||||
- Commission structure, bonus rules
|
||||
|
||||
**Page 5: Controlling Parameters**
|
||||
- Cost centers, budget allocation
|
||||
|
||||
**Page 6: Reductions/Discounts**
|
||||
- Apply volume discounts, promotional rates
|
||||
|
||||
**Page 7: Contingent Settings**
|
||||
- Set usage limits (GB, minutes, incidents)
|
||||
|
||||
**Page 8: Task Generation**
|
||||
- Auto-create tasks from contract milestones
|
||||
|
||||
**Page 9: Email Templates**
|
||||
- Select templates for notifications
|
||||
|
||||
**Page 10: Master Data**
|
||||
- Link master records (contacts, accounts)
|
||||
|
||||
**Page 11: Article References**
|
||||
- Link articles/services to contract
|
||||
|
||||
**Page 12: Attachments**
|
||||
- Upload contract documents, SOWs
|
||||
|
||||
**Page 13: Maintenance & Logs**
|
||||
- View contract history
|
||||
|
||||
**UC: Create Complex Contract**
|
||||
1. Enter contract header information
|
||||
2. Configure billing details
|
||||
3. Add line items with pricing
|
||||
4. Set up commission structure
|
||||
5. Define budget controls
|
||||
6. Apply usage limits
|
||||
7. Define contingent pool
|
||||
8. Auto-generate tasks
|
||||
9. Link templates
|
||||
10. Configure notifications
|
||||
11. Attach supporting documents
|
||||
12. Review contract summary
|
||||
13. Save contract with audit trail
|
||||
|
||||
---
|
||||
|
||||
## Validation Rules Discovery (431 Total)
|
||||
|
||||
**Key Validation Domains**:
|
||||
|
||||
1. **Customer Validations** (45 rules)
|
||||
- Credit limit checks
|
||||
- Payment term validations
|
||||
- Active status verification
|
||||
|
||||
2. **Order Validations** (60 rules)
|
||||
- Item availability
|
||||
- Price verification
|
||||
- Tax calculation
|
||||
- Discount limits
|
||||
|
||||
3. **Billing Validations** (80 rules)
|
||||
- Invoice date range
|
||||
- Amount verification
|
||||
- Contract status
|
||||
- Customer qualification
|
||||
|
||||
4. **Helpdesk Validations** (55 rules)
|
||||
- Category/priority mapping
|
||||
- SLA time calculation
|
||||
- Assignment validation
|
||||
- Status transition rules
|
||||
|
||||
5. **Financial Validations** (70 rules)
|
||||
- GL account validation
|
||||
- Tax code verification
|
||||
- Exchange rate checks
|
||||
- Rounding rules
|
||||
|
||||
6. **System Validations** (121 rules)
|
||||
- User rights verification
|
||||
- Lock/delete prevention
|
||||
- Duplicate detection
|
||||
- Data integrity checks
|
||||
|
||||
---
|
||||
|
||||
## Summary Statistics
|
||||
|
||||
| Component | Count | Documented | Gap |
|
||||
|-----------|-------|-----------|-----|
|
||||
| State Machines | 9 | 1 | 89% |
|
||||
| Wizard Workflows | 4 | 0 | 100% |
|
||||
| Wizard Pages | 30+ | 0 | 100% |
|
||||
| Validation Rules | 431 | ~50 | 88% |
|
||||
| **Total** | **474** | **~51** | **89%** |
|
||||
|
||||
---
|
||||
|
||||
## Recommendations
|
||||
|
||||
### High Priority
|
||||
1. **Document all state machines** with transition diagrams
|
||||
2. **Create wizard flowcharts** with decision points
|
||||
3. **Centralize validation rules** with business logic explanations
|
||||
4. **Map state machine transitions** to use cases
|
||||
|
||||
### Medium Priority
|
||||
5. **Add SLA time calculations** to ticket state machine
|
||||
6. **Document escalation rules** for state transitions
|
||||
7. **Create user documentation** for wizard workflows
|
||||
|
||||
### Implementation
|
||||
- Use state diagram notation (PlantUML, Mermaid)
|
||||
- Link to code implementations
|
||||
- Include business rule explanations
|
||||
- Provide transition examples
|
||||
|
||||
Reference in New Issue
Block a user