Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

BR-001: Multi-Tenant Organization Support

Priority: CRITICAL
Owner: Product Owner

Description

The system shall support multiple independent utility companies (organizations) with complete data isolation at blob storage, processing, and user access levels.

Business Value

  1. Revenue Model: Enables SaaS subscription model across Nordic markets
  2. Cost Efficiency: Shared infrastructure reduces per-customer cost by 60-70%
  3. Market Penetration: Faster onboarding enables rapid customer acquisition
  4. Scalability: Single platform scales to serve 150+ Swedish utilities alone

Nordic Market Context

  • Sweden: ~150 electricity suppliers, ~290 district heating companies
  • Norway: ~140 electricity suppliers
  • Denmark: ~60 electricity suppliers
  • Finland: ~80 electricity suppliers

Total Addressable Market: 700+ potential customers

Acceptance Criteria

#CriterionMeasurement MethodTarget
1Concurrent organizations supportedLoad test with 50 orgsAll batches process successfully
2Data isolation enforcementCross-org access attempts100% blocked (403 Forbidden)
3Organization-specific blob containersVerify storage pathsPattern: {org-id}-{type}-{year}/
4User organization boundary enforcementAPI calls with wrong org contextAll rejected
5Independent branding per organizationUpload logo, verify renderingBranding applied correctly
6Configurable delivery channelsSet priority [email, postal]Order respected

Dependencies

  • Azure Blob Storage (container-per-organization strategy)
  • PostgreSQL schema with user_organization_roles table
  • Organization context middleware
  • Role-based access control (RBAC) implementation

Risks & Mitigation

RiskLikelihoodImpactMitigation
Data leakage between orgsLOWCRITICALMiddleware enforcement, automated testing, penetration testing
Performance degradation (50+ tenants)MEDIUMHIGHBlob auto-scaling, connection pooling, indexed queries
Swedish data residency requirementsLOWHIGHWest Europe primary, no cross-border transfer

...

BR-002: Multi-Vendor XML Format Support

Priority: HIGH
Owner: Product Owner

Description

The system shall process invoice batch files from multiple vendor billing systems (GASEL/Telinet, XELLENT/Karlskoga, ZYNERGY/EG Software) with automatic format detection and transformation to canonical JSON.

Business Value

  1. Market Coverage: Supports 70% of Swedish utilities market
  2. Zero Custom Development: No per-vendor integration coding required
  3. Faster Onboarding: 80% reduction in integration time
  4. Vendor Agnostic: Future-proofs against vendor migrations

Nordic Market Context

Top 3 Billing Systems in Swedish Market:

  • Telinet (EDIEL/GASEL format): ~30% market share
  • Karlskoga/Xellent (OIOXML format): ~25% market share
  • EG Zynergy (proprietary): ~15% market share

Combined Coverage: ~70% of addressable market

Acceptance Criteria

#CriterionMeasurement MethodTarget
1GASEL format detection50 sample files100% accuracy
2XELLENT format detection50 sample files100% accuracy
3ZYNERGY format detection50 sample files100% accuracy
4Canonical JSON transformationSchema validationAll fields present
5XSD schema validationVendor-specific XSDPass validation
6Unsupported format handlingUnknown XML upload415 error with vendor list
7Detection performance100MB file< 1 second

Vendor-Specific Requirements

GASEL (Telinet/EDIEL):

  • Namespace: urn:ediel:se:electricity:invoice:1.0
  • Date format: ISO 8601 (YYYY-MM-DD)
  • Amount format: Decimal with period separator
  • Required elements: InvoiceNumber, PartyName, PayableAmount

XELLENT (Karlskoga/OIOXML):

ZYNERGY (EG Software):

  • Namespace: http://eg.dk/Zynergy/1.0/invoice.xsd
  • Nested structure: Invoice > Customer, InvoiceData, InvoiceAddress
  • Multiple company ID references throughout
  • InvoiceAmount vs InvoiceBalance distinction

Dependencies

  • Schema registry with field mappings per vendor
  • XML parsing library (System.Xml.Linq)
  • XSD schema files from vendors
  • Canonical JSON schema definition

Risks & Mitigation

RiskLikelihoodImpactMitigation
Vendor schema changes without noticeMEDIUMHIGHVersion all schemas, support multiple versions, 3-month deprecation notice
EDIEL standard evolutionMEDIUMMEDIUMMonitor Ediel.org, participate in Nordic working groups, backward compatibility
Complex namespace handling (OIOXML)LOWMEDIUMXmlNamespaceManager, extensive unit testing per vendor
Incomplete field mappingsMEDIUMMEDIUMComprehensive validation, custom fields dictionary, lenient parsing mode

...

BR-003: Batch Invoice Processing

Priority: HIGH
Owner: Product Owner

Description

The system shall process batch invoice files containing up to 100,000 invoices with parallel processing, retry logic, and granular status tracking.

Business Value

  1. High-Volume Support: Typical Swedish utility has 50K-200K customers
  2. Time Efficiency: 95% reduction in manual processing effort
  3. Customer Satisfaction: Days → hours delivery time
  4. Predictable SLAs: Enables committed service levels

Nordic Market Context

Monthly Invoice Patterns:

  • Peak concentration: First/last week of month
  • Heating season (Oct-Mar): 40% higher volumes
  • January peak: Coldest month, highest consumption
  • Summer (Jun-Aug): 50-60% of winter volumes

Acceptance Criteria

#CriterionMeasurement MethodTarget
1Single batch capacityUpload 100K invoicesAll processed
2Asynchronous processingAPI response time< 500ms (202 Accepted)
3Real-time progress trackingPoll during processingUpdates every 30 seconds
4Failed item isolation10 errors in 1000-item batch990 succeed independently
5Retry mechanismForce temporary failure3 retries then poison queue
6Processing time SLA100K invoice batch≤ 120 minutes
7Format support (Phase 1)Upload XML, JSON, CSVXML fully supported

Processing Flow

1. API receives batch upload → 201 Created (batch stored)
2. POST /start → 202 Accepted (queued for processing)
3. ParserService picks from batch-upload-queue
4. Parse XML → Individual JSON files (canonical format)
5. Group into 32-item batches → Enqueue to batch-items-queue
6. DocumentGenerator renders 32 items in parallel
7. Generate HTML → PDF → Store in blob
8. Route to delivery queue (email or postal)
9. Update batch statistics in real-time
10. Complete when all items processed

Dependencies

  • Azure Storage Queues (message passing)
  • Worker auto-scaling (Container Apps + KEDA)
  • Blob storage (source files + processed invoices)
  • Batch metadata storage (real-time updates)

Risks & Mitigation

RiskLikelihoodImpactMitigation
Processing timeout during heating seasonMEDIUMHIGHPre-warm workers 1st/last week, priority queue, off-peak scheduling
Memory constraints (large XML >50MB)MEDIUMMEDIUMStream-based parsing, chunk processing, 100MB hard limit
Disk space exhaustionLOWMEDIUMEphemeral storage cleanup, blob-only persistence
Queue 64KB message limitMEDIUMMEDIUMStore data in blob, queue references only

...

BR-004: Template-Based Invoice Rendering

Priority: HIGH
Owner: Product Owner

Description

The system shall generate PDF and HTML invoices using organization-specific Handlebars templates with dynamic data binding and brand customization.

Business Value

  1. Brand Consistency: Professional appearance across all communications
  2. Regulatory Compliance: Swedish Energy Markets Inspectorate requirements
  3. Flexibility: Per-organization customization without code changes
  4. Future-Proof: Multi-language support foundation (SE, NO, DK, FI)

Swedish Regulatory Requirements

Energimarknadsinspektionen (Swedish Energy Markets Inspectorate) mandates:

  • Consumption details (period, kWh)
  • Tax breakdown (25% VAT for electricity)
  • Grid owner information
  • Metering point ID (mätpunkt)
  • Price per kWh
  • Fixed monthly fee (månadsavgift)

Acceptance Criteria

#CriterionMeasurement MethodTarget
1Custom template uploadUpload via API/blobStored successfully
2Dynamic data bindingTest with invoice dataAll fields populated
3PDF generationHTML → PDFA4 format, readable
4Template versioningCreate v2.0.0Old batches use v1.0.0
5In-flight batch isolationUpdate template during processingIn-flight uses old version
6Template validationMissing variable uploadValidation error returned
7Organization brandingLogo, colors, fontsVisible in rendered PDF
8Swedish regulatory fieldsVerify required elementsAll present

Template Structure

Required Fields (Swedish Regulations):

  • Invoice number (Fakturanummer)
  • Invoice date (Fakturadatum)
  • Due date (Förfallodatum)
  • Period (Period)
  • Metering point ID (Mätpunkt)
  • Grid area (Elområde)
  • Grid owner (Nätägare)
  • Consumption (Förbrukning)
  • Previous/current reading (Mätarställning)
  • Unit price (Pris per kWh)
  • Monthly fee (Månadsavgift)
  • Subtotal (Delsumma)
  • VAT 25% (Moms 25%)
  • Total amount (Att betala)
  • Payment info (Bankgiro, OCR)

Dependencies

  • Handlebars.Net template engine
  • PDF generation (Playwright + Chromium or IronPDF)
  • Blob storage (template files)
  • Template metadata storage with versioning

Risks & Mitigation

RiskLikelihoodImpactMitigation
Template rendering bottleneckHIGHHIGHCompiled template caching (24h), parallel rendering (32 items), POC: 10K in <5 min
PDF generation quality (Swedish chars)MEDIUMMEDIUMUTF-8 encoding, font embedding (åäö), visual regression testing
Swedish regulatory complianceLOWCRITICALLegal review, required fields checklist, annual update review
Template injection attacksLOWCRITICALSandboxed execution, no eval/exec helpers, sanitization, security review

...

BR-005: Multi-Channel Delivery with Nordic Integration

Priority: HIGH
Owner: Product Owner

Description

The system shall deliver invoices through multiple channels (email, postal, future: Kivra, e-Faktura) with configurable priority, automatic fallback, and integration with Nordic delivery partners.

Business Value

  1. Delivery Success: >98% vs ~92% email-only
  2. Cost Reduction: Reduced returned mail costs
  3. Customer Preference: Digital-first with postal backup
  4. Legal Compliance: Swedish "rätt till pappersfaktura" (right to paper invoice)
  5. Future-Ready: Digital mailbox mandate preparations

Nordic Market Context

Legal Requirements:

  • Sweden: Postal option legally required for all customers
  • Kivra Adoption: 4.2M users in Sweden (40% of population)
  • E-faktura: Standard for B2B invoicing across Nordics
  • Postal Tradition: Especially important for elderly customers

Delivery Statistics (Industry Average):

  • Email delivery: 90-95% success
  • Email + Postal fallback: 98-99% success
  • Pure postal: 97-98% success

Acceptance Criteria

#CriterionMeasurement MethodTarget
1Email delivery (SendGrid)1000 test invoices>95% delivered
2Postal delivery (21G SFTP)Create ZIP, uploadFile accepted by 21G
3Channel priority configurationSet [email, postal]Email attempted first
4Automatic fallbackForce email failurePostal triggered auto
5Delivery status trackingCheck invoice metadataStatus + timestamps recorded
6Retry logic (transient failures)Simulate SendGrid 429Retries with backoff
7Delivery confirmation loggingVerify audit logAll deliveries logged
821G bulk processing scheduleVerify postal queue12:00 and 20:00 CET

Channel Specifications

Email (SendGrid):

  • Dedicated Nordic IP for sender reputation
  • SPF/DKIM/DMARC configuration
  • Swedish-localized email templates
  • PDF attachment (compressed if >5MB)
  • Retry: 2 attempts (1 min, 5 min delays)
  • Failure → Postal fallback

Postal (21G Bulk SFTP):

  • Scheduled processing: 12:00 and 20:00 CET
  • ZIP archive format: PDFs + XML metadata
  • SFTP upload to /incoming/{org-code}/
  • SLA: 24-48 hours from upload to print
  • Tracking: Email confirmation from 21G

Phase 2 Channels:

  • Kivra digital mailbox (4.2M Swedish users)
  • e-Faktura/PEPPOL (B2B standard)
  • SMS notifications (Wiraya integration)

Dependencies

  • SendGrid account (Nordic IP reputation)
  • 21G SFTP server access and credentials
  • Azure Key Vault (credential storage)
  • Postal queue processing service
  • ZIP file generation for 21G format

Risks & Mitigation

RiskLikelihoodImpactMitigation
SendGrid Nordic deliverability issuesMEDIUMHIGHDedicated IP, SPF/DKIM/DMARC, sender reputation monitoring, backup: Azure Communication Services
21G SFTP connectivity issuesLOWHIGHRetry logic, dual credentials, alert on failure, 21G SLA monitoring, manual upload procedure
Postal delivery delays (Swedish postal)MEDIUMMEDIUMSet expectations (5-7 days), track confirmations, escalation for >10 days
Email spam filtering (Swedish ISPs)MEDIUMMEDIUMIP warmup, monitor bounce rates, ISP whitelist requests (Telia, Tele2, Telenor)

...

Non-Functional Requirements

NFR-001: Performance Targets

Priority: HIGH
Owner: Technical Architect

Performance Metrics

MetricTargetMeasurementTest Scenario
Monthly throughput10M invoicesApplication InsightsProduction monitoring
100K batch processing< 2 hoursTimestamp diffLoad test TC-200
API response (p50)< 200msApplication InsightsLoad test TC-201
API response (p95)< 500msApplication InsightsLoad test TC-202
API response (p99)< 1000msApplication InsightsLoad test TC-203
PDF generation (p95)< 5 seconds/invoiceCustom metricRender test TC-204
Handlebars render (p95)< 2 seconds/invoiceCustom metricRender test TC-205
Queue processing lag< 5 minutesQueue depth / throughputQueue monitoring
Database query (p95)< 100msPostgreSQL slow query logQuery analysis
ParserService (10K batch)< 2 minutesParse durationParser test TC-206

Load Testing Scenarios

Scenario 1: Steady State (Normal Month)

  • Duration: 24 hours
  • Load: 333K invoices evenly distributed
  • Concurrent batches: 5-10
  • Expected: All targets met, no errors

Scenario 2: Peak Load (Heating Season)

  • Duration: 8 hours
  • Load: 314K invoices (first week concentration)
  • Concurrent batches: 20+
  • Expected: 2-hour SLA met, >99% success

Scenario 3: Spike Test

  • Duration: 30 minutes
  • Load: 10 batches (50K invoices) uploaded simultaneously
  • Expected: Auto-scales, processes without degradation

Acceptance Criteria

#CriterionValidationTarget
1100K batch completionEnd-to-end test≤ 2 hours
2API latency under load1000 RPS testp95 ≤ 500ms
310M monthly capacityProduction monitoring≥ 10M in peak month
450-org performance50 concurrent uploadsAll SLAs met
5Worker auto-scalingMonitor queue during peaksLag ≤ 5 min
6PDF generation performance1000 PDFsp95 ≤ 5 seconds

...

NFR-002: Scalability & Auto-Scaling

Priority: HIGH
Owner: Technical Architect

Scaling Configuration

ComponentMinMaxTriggerThresholdScale UpScale Down
CoreApiService520CPU OR Request Rate70% OR 1000 RPS2 min10 min
ParserService210Queue Length>01 min5 min
DocumentGenerator2100Queue Length>321 min5 min
EmailService550Queue Length>501 min5 min
PostalService13Scheduled12:00, 20:00 CETN/AAfter completion

Peak Load Capacity

Normal Load (non-heating, mid-month):

  • 333K invoices/day average
  • 5-10 concurrent batches
  • Worker instances: 10-20 total

Peak Load (heating season, first/last week):

  • 2.2M invoices/week
  • 314K invoices/day
  • 20+ concurrent batches
  • Worker instances: 80-100 total

Pre-Warming Strategy (Heating Season)

Monthly Schedule:
- Day 1-7: Pre-warm to 50 instances at 00:00
- Day 8-23: Scale based on queue (2-20 instances)
- Day 24-31: Pre-warm to 50 instances at 00:00

Heating Season (Oct-Mar): Double levels
- Day 1-7: Pre-warm to 80 instances
- Day 24-31: Pre-warm to 80 instances

...

NFR-003: Availability & Reliability

Priority: HIGH
Owner: Technical Architect

Availability Targets

MetricTargetAllowed DowntimeMeasurement
System Uptime99.9%43 min/monthAzure Monitor
Batch Success Rate>99.5%50 failures per 10KProcessing logs
Delivery Success Rate>98%200 failures per 10KDelivery tracking
API Availability99.9%43 min/monthHealth checks
MTTR<30 minutesN/AIncident timestamps
MTBF>720 hoursN/AIncident tracking

Multi-Region Deployment

Primary Region: West Europe (Sweden, Denmark)
Secondary Region: North Europe (Norway, Finland)

Traffic Routing:

  • Azure Traffic Manager (Performance routing)
  • Health check: /health every 30 seconds
  • Auto-failover: 3 consecutive failures
  • Failover time: <2 minutes

...

NFR-004: Security Requirements

Priority: CRITICAL
Owner: Technical Architect

Authentication & Authorization

OAuth 2.0:

  • Grant Type: Client Credentials
  • Token Provider: Microsoft Entra ID
  • Token Lifetime: 1 hour
  • Algorithm: RS256

Roles:

  1. Super Admin (global)
  2. Organization Admin (single org)
  3. Template Admin (single org)
  4. Batch Operator (single org)
  5. Read-Only User (single org)
  6. API Client (single org)

Encryption

In Transit:

  • TLS 1.3 minimum
  • HSTS enabled

At Rest:

  • Blob Storage: AES-256
  • PostgreSQL: AES-256
  • Backups: AES-256

...

NFR-005: Data Retention

Priority: HIGH
Owner: Legal/Compliance

Data TypeRetentionStorage Tier Transitions
Invoices (PDF/HTML/JSON)7 yearsDay 0-365: Hot
Day 366-2555: Cool
Day 2556+: Archive
Batch Source (XML)90 daysDay 0-30: Hot
Day 31-90: Cool
Day 91+: Delete
Audit Logs7 yearsYear 0-1: PostgreSQL
Year 1-7: Blob (compressed)
Application Logs90 daysApplication Insights

...

Approval Section

Stakeholder Sign-Off

Stakeholder RoleNameSignatureDateStatus
Product Owner


☐ PENDING
Technical Architect


☐ PENDING

Approval Criteria

  •  All CRITICAL requirements reviewed and accepted
  •  All HIGH requirements reviewed and accepted
  •  All dependencies identified and acknowledged
  •  All risks reviewed with mitigation strategies
  •  All acceptance criteria defined and measurable
  •  Budget and timeline implications understood
  •  Resource allocation confirmed
  •  Compliance requirements validated (GDPR, Bokföringslagen)

Change Control

Any changes to approved CRITICAL or HIGH priority requirements must follow the change control process:

  1. Document proposed change in Jira (tag with egflow version)
  2. Impact assessment (scope, timeline, cost)
  3. Re-approval by Product Owner and Technical Architect
  4. Update this document with version increment
  5. Communicate changes to development team
  6. Update affected Jira issues with new fixVersion

Version History

VersionDateAuthorChangesRelease Target
1.02025-11-20Product OwnerInitial draftegflow-1.0.0
1.12025-11-21Product OwnerAdded FR-003 details, updated acceptance criteriaegflow-1.0.0
1.22025-11-27Product OwnerUpdated versioning strategy to match Gasell modelegflow-1.0.0 "Corny Flamingo"

...

End of Business Requirements Document

2. Business Requirements

2.0 Priority Level Definitions

PriorityDefinitionGo-Live ImpactStakeholder ApprovalExample
CRITICALCore system functionality, data integrity, legal compliance, securityBLOCKING - Cannot go live without thisAll stakeholders requiredAuthentication, GDPR, data isolation
HIGHPrimary business value, significant operational impactBLOCKING - Should not go live without thisProduct Owner + Technical ArchitectBatch processing, multi-vendor XML
MEDIUMImportant for operations, workarounds exist temporarilyNON-BLOCKING - Can go live with plan to completeProduct Owner approvalTemplate management UI, postal integration
LOWNice to have, minimal business impact, future optimizationNON-BLOCKING - Defer to Phase 2Product Owner decisionAdvanced filtering, custom dashboards

2.1 BR-001: Multi-Tenant Organization Support

Requirement: The system shall support multiple independent utility companies (organizations) with complete data isolation at the blob storage, processing, and user access levels.

Business Value:

  • Enables SaaS business model for Nordic utilities market
  • Reduces per-customer infrastructure costs by 60-70%
  • Accelerates new customer onboarding (weeks → days)
  • Increases addressable market across Sweden, Norway, Denmark, Finland

Priority: CRITICAL

Nordic Market Context: Swedish utilities market has ~150 electricity suppliers, ~290 district heating companies. Multi-tenancy is essential for market penetration.

Acceptance Criteria:

CriterionMeasurement MethodTest CaseTarget
System supports 50+ concurrent organizationsLoad test with 50 organizations uploading batches simultaneouslyTC-001All batches process successfully
Each organization has isolated blob storageVerify container naming: {org-id}-invoices-{year}TC-002No cross-org container access
Users cannot access other organizations' dataAttempt API calls to different org-id with valid tokenTC-003All return 403 Forbidden
Each organization configures own brandingUpload logo, colors; verify in rendered PDFTC-004Branding applied correctly
Each organization defines delivery channelsConfigure email priority; verify email sent firstTC-005Channel priority honored
Organization data never shared in logsReview Application Insights logs for data leakageTC-006No PII in logs

Dependencies:

  • Azure Blob Storage with container-per-organization strategy
  • PostgreSQL schema with user_organization_roles table
  • Middleware for organization context extraction and validation
  • Role-based access control implementation

Risks & Mitigation (Nordic Context):

RiskLikelihoodImpactMitigation StrategyOwner
Data leakage between organizationsLOWCRITICAL- Middleware enforces org boundaries
- Automated cross-org access testing
- Penetration testing by external auditor
- GDPR-compliant architecture review
Security Officer
Performance degradation with 50+ tenantsMEDIUMHIGH- Blob storage auto-scales
- PostgreSQL connection pooling
- Indexed queries on organization_id
- Load testing with 100 organizations
Technical Architect
Swedish data residency requirementsLOWHIGH- West Europe primary region
- Data residency enforced in org config
- No cross-border data transfer
Compliance

2.2 BR-002: Multi-Vendor XML Format Support

Requirement: The system shall process invoice batch files from multiple vendor billing systems (GASEL/Telinet, XELLENT/Karlskoga, ZYNERGY/EG Software) with automatic format detection and transformation to canonical JSON.

Business Value:

  • Eliminates integration barrier for new customers (any billing system supported)
  • Reduces onboarding time by 80% (no custom integration development)
  • Increases market addressability to all Nordic utilities regardless of billing system
  • Enables vendor-agnostic downstream processing

Priority: HIGH

Nordic Market Context: Top 3 billing systems in Swedish utilities market: Telinet (EDIEL format), Karlskoga/Xellent (OIOXML), EG Zynergy (proprietary). Supporting these covers ~70% of market.

Acceptance Criteria:

CriterionMeasurement MethodTest CaseTarget
System auto-detects GASEL formatTest with 50 GASEL XML samplesTC-010100% accuracy
System auto-detects XELLENT formatTest with 50 XELLENT XML samplesTC-011100% accuracy
System auto-detects ZYNERGY formatTest with 50 ZYNERGY XML samplesTC-012100% accuracy
All formats transform to canonical JSONParse each format, verify JSON schemaTC-013All required fields present
XML validation against vendor XSDValidate sample files against schemasTC-014Schema validation passes
Clear error for unsupported formatsUpload unknown format XMLTC-015Returns 415 with vendor list
Detection within 1 secondPerformance test with 100MB filesTC-016< 1 second

Dependencies:

  • Schema registry with field mappings for each vendor
  • XML parsing library supporting complex namespaces
  • XSD schema files from vendors (Telinet, Karlskoga, EG)
  • Canonical JSON schema definition

Risks & Mitigation (Nordic Context):

RiskLikelihoodImpactMitigation StrategyOwner
Vendor XML schema changes without noticeMEDIUMHIGH- Version all schemas (v1.0, v1.1, etc.)
- Support multiple versions simultaneously
- 3-month deprecation notice in vendor contracts
- Automated schema change detection
- Direct vendor communication channels
Product Owner
EDIEL standard evolutionMEDIUMMEDIUM- Monitor Ediel.org for updates
- Participate in Nordic Ediel working groups
- Backward compatibility for 2 versions
- Phased schema migration
Technical Architect
Complex namespace handling (OIOXML)LOWMEDIUM- Use System.Xml.Linq for namespace support
- XmlNamespaceManager for prefixes
- Extensive unit testing per vendor
- Schema mapping documentation
Dev Team
Incomplete field mappingsMEDIUMMEDIUM- Comprehensive mapping validation
- Custom fields dictionary for unmapped data
- Vendor format validation during onboarding
- Optional field graceful degradation
Dev Team
Energiforsk format variationsLOWLOW- Document accepted variations
- Lenient parsing mode option
- Warning system for non-critical deviations
Product Owner

2.3 BR-003: Batch Invoice Processing

Requirement: The system shall process batch invoice files containing up to 100,000 invoices with parallel processing, retry logic, and granular status tracking.

Business Value:

  • Enables high-volume monthly invoice runs (typical Swedish utility: 50K-200K customers)
  • Reduces manual processing effort by 95%
  • Improves time-to-customer (days → hours)
  • Enables predictable SLA commitments to customers

Priority: HIGH

Nordic Market Context: Monthly invoice cycles concentrated in first/last week of month. Heating season (Oct-Mar) has 40% higher volumes. System must handle seasonal peaks.

Acceptance Criteria:

CriterionMeasurement MethodTest CaseTarget
Single batch supports 100,000 invoicesUpload 100K batch, verify all processedTC-020All invoices processed
Batches processed asynchronouslyAPI returns 202 immediately, processing continuesTC-021< 500ms API response
Real-time progress trackingPoll status API during processingTC-022Updates every 30 seconds
Failed items don't block batchIntroduce 10 errors in 1000-item batchTC-023990 succeed, 10 fail independently
Retry mechanism (3 attempts)Force temporary failure, verify retriesTC-0243 retries then poison queue
Processing completes within 2 hours (100K)Load test with 100K invoice batchTC-025<= 120 minutes
Supports XML, JSON, CSV formats (Phase 1: XML only)Upload each format typeTC-026XML fully supported

Dependencies:

  • Azure Storage Queues for message passing
  • Worker auto-scaling (Container Apps with KEDA)
  • Blob storage for batch source files and processed invoices
  • Batch metadata storage with real-time updates

Risks & Mitigation (Nordic Context):

RiskLikelihoodImpactMitigation StrategyOwner
Processing timeout during heating season peaks (Oct-Mar)MEDIUMHIGH- Pre-warm workers 1st/last week of month
- Priority queue for SLA customers
- Scheduled off-peak processing windows
- Customer communication about peak times
Operations Manager
Memory constraints with large XML files (>50MB)MEDIUMMEDIUM- Stream-based XML parsing (XmlReader)
- Chunk processing for large batches
- File size monitoring and alerts
- 100MB hard limit with split guidance
Technical Architect
Disk space exhaustion on workersLOWMEDIUM- Ephemeral storage cleanup after processing
- Blob storage only for persistence
- Worker instance monitoring
Operations Manager
Queue message 64KB limit exceededMEDIUMMEDIUM- Store invoice JSON in blob, queue has reference only
- Message payload validation
- Compression for large messages
Technical Architect

2.4 BR-004: Template-Based Invoice Rendering

Requirement: The system shall generate PDF and HTML invoices using organization-specific Handlebars templates with dynamic data binding and brand customization.

Business Value:

  • Enables brand consistency across all customer communications
  • Supports regulatory requirements (Swedish Energy Markets Inspectorate guidelines)
  • Allows per-organization customization without code changes
  • Future-proofs for multi-language support (Swedish, Norwegian, Danish, Finnish)

Priority: HIGH

Nordic Market Context: Swedish regulations require specific invoice information (consumption details, tax breakdown, grid owner, metering point). Templates must support regulatory compliance.

Acceptance Criteria:

CriterionMeasurement MethodTest CaseTarget
Organizations upload custom Handlebars templatesUpload HTML template via API (future) or blobTC-030Template stored successfully
Templates support dynamic data bindingRender with test invoice dataTC-031All fields populated
PDF generation from HTML with complianceGenerate PDF, verify format and contentTC-032A4, readable, complete
Template versioning supportedCreate v2.0.0, verify old batches use v1.0.0TC-033Version isolation working
Templates updateable without affecting in-flight batchesUpdate template while batch processesTC-034In-flight uses old version
Template validation before activationUpload template with missing variableTC-035Validation error returned
Organization branding appliedLogo, colors, fonts in rendered PDFTC-036Branding visible
Swedish regulatory fields requiredVerify mätpunkt, grid owner, consumption presentTC-037All required fields shown

Dependencies:

  • Handlebars.Net template engine library
  • PDF generation library (Playwright with headless Chromium or IronPDF)
  • Blob storage for template files
  • Template metadata storage with version tracking

Risks & Mitigation (Nordic Context):

RiskLikelihoodImpactMitigation StrategyOwner
Template rendering performance bottleneckHIGHHIGH- Compiled template caching (24-hour TTL)
- Parallel rendering within 32-item batches
- POC testing: render 10K invoices in < 5 min
- Horizontal scaling of BatchItemWorkers
Technical Architect
PDF generation quality issues (Swedish characters)MEDIUMMEDIUM- UTF-8 encoding throughout
- Font embedding for åäö characters
- Visual regression testing
- Sample PDF review with Swedish content
QA Team
Swedish Energy Markets Inspectorate complianceLOWCRITICAL- Legal review of template requirements
- Required fields checklist in template validation
- Compliance testing with regulatory samples
- Annual regulatory update review
Legal/Compliance
Template injection attacksLOWCRITICAL- Sandboxed Handlebars execution
- No {{eval}} or {{exec}} helpers
- Template sanitization
- Security code review
Security Officer

2.5 BR-005: Multi-Channel Delivery with Nordic Integration

Requirement: The system shall deliver invoices through multiple channels (email, postal, future: Kivra, e-Faktura, SMS) with configurable priority, automatic fallback, and integration with Nordic delivery partners.

Business Value:

  • Increases delivery success rate to >98% (vs ~92% email-only)
  • Reduces returned mail costs (postal fallback)
  • Meets customer preferences (digital-first, postal backup)
  • Enables compliance with Swedish "rätt till pappersfaktura" (right to paper invoice)
  • Future-proofs for digital mailbox mandate discussions

Priority: HIGH

Nordic Market Context: Swedish law requires postal option for all customers. Kivra has 4.2M users in Sweden (40% population). E-faktura standard for B2B. Multi-channel is regulatory and competitive necessity.

Acceptance Criteria:

CriterionMeasurement MethodTest CaseTarget
Email delivery via SendGridSend 1000 test invoicesTC-040>95% delivered
Postal delivery via 21G bulk SFTPCreate zip, upload to 21G SFTPTC-041File accepted by 21G
Channel priority configurable per orgSet priority [email, postal], verify orderTC-042Email attempted first
Automatic fallback on failureForce email failure, verify postal attemptedTC-043Postal triggered automatically
Delivery status tracked per invoiceCheck invoice metadata after deliveryTC-044Status and timestamps recorded
Retry logic for transient failuresSimulate SendGrid 429 rate limitTC-045Retries with backoff
Delivery confirmation loggedVerify audit log entriesTC-046All deliveries logged
21G bulk processing at scheduled timesVerify postal queue processed 12:00 and 20:00TC-047Batches sent on schedule

Dependencies:

  • SendGrid account with Nordic sender reputation
  • 21G SFTP server access and credentials
  • Azure Key Vault for credential storage
  • Postal queue processing service (scheduled workers)
  • ZIP file generation for 21G format

Risks & Mitigation (Nordic Context):

RiskLikelihoodImpactMitigation StrategyOwner
SendGrid Nordic deliverability issuesMEDIUMHIGH- Dedicated IP for Nordic sending
- SPF/DKIM/DMARC configuration
- Sender reputation monitoring
- Backup: Azure Communication Services
- Gradual ramp-up for new organizations
Operations Manager
21G SFTP connectivity issuesLOWHIGH- Retry logic with exponential backoff
- Dual SFTP credentials (primary/backup)
- Alert on connection failure
- 21G SLA monitoring
- Manual upload procedure documented
Operations Manager
Postal delivery delays (Swedish postal challenges)MEDIUMMEDIUM- Set customer expectations (5-7 business days)
- Track 21G processing confirmations
- Escalation process for delays>10 days
- Alternative print partner identified
Product Owner
Email spam filtering (Swedish ISPs)MEDIUMMEDIUM- Warm up sending IP gradually
- Monitor bounce rates by ISP
- Whitelist requests to major ISPs (Telia, Tele2, Telenor)
- Plain text + HTML multi-part emails
Operations Manager
Kivra API rate limits (future)MEDIUMMEDIUM- Queue-based sending
- Respect Kivra rate limits (documented in API)
- Fallback to email if Kivra unavailable
Technical Architect

2.6 BR-006: Real-Time Batch Status Visibility

Requirement: Users shall view batch processing status, progress statistics, and individual invoice statuses in real-time through the API with granular breakdown by processing stage and delivery channel.

Business Value:

  • Reduces support inquiries by 60% (self-service status checking)
  • Enables proactive issue resolution before customer complaints
  • Improves operational transparency and trust
  • Provides audit trail for service level agreement (SLA) tracking

Priority: MEDIUM

Nordic Market Context: Utility operations teams work standard hours (08:00-17:00). Real-time visibility enables remote monitoring and reduces after-hours escalations.

Acceptance Criteria:

CriterionMeasurement MethodTest CaseTarget
Batch status via API (queued/processing/completed/failed)GET /batches/{id} during processingTC-050Status reflects reality
Progress percentage accurateCompare reported % to actual processed countTC-051Within 1% accuracy
Individual invoice status queryableGET /batches/{id}/items with status filterTC-052Returns correct filtered list
Statistics include success/failure countsVerify statistics.successfulItems matches realityTC-053Exact match
Estimated completion time providedCheck estimatedCompletionAt during processingTC-054Within 20% of actual
Failed invoices listed with error detailsQuery items with status=failedTC-055Error messages present
Status updates within 30 secondsProcess batch, poll status APITC-056Updates every ≤30 seconds
Delivery channel breakdown shownVerify deliveryChannelBreakdown matches actualTC-057Accurate breakdown

Dependencies:

  • Batch metadata updates from all workers
  • Real-time statistics calculation (incremental updates)
  • Blob storage access for metadata reads
  • API caching strategy for frequently-polled batches

Risks & Mitigation:

RiskLikelihoodImpactMitigation StrategyOwner
Performance impact of frequent metadata updatesMEDIUMMEDIUM- ETag-based optimistic concurrency
- Batch statistics updates (not per-invoice)
- Caching layer for status API
- Throttle updates to max 1/minute
Technical Architect
Stale status data (eventual consistency)MEDIUMLOW- Document 30-second update SLA
- Timestamp on status response
- Retry-After header for frequent polls
- WebSocket push for Phase 2
Product Owner

2.7 BR-007: Security & Access Control

Requirement: The system shall implement OAuth 2.0 authentication with Microsoft Entra ID, role-based access control with 6 distinct roles, organization-level data isolation, and comprehensive audit logging compliant with Swedish and EU security standards.

Business Value:

  • Ensures GDPR Article 32 compliance (security of processing)
  • Prevents unauthorized data access and potential €20M GDPR fines
  • Enables customer trust and enterprise sales (security requirements in tenders)
  • Supports SOC 2 Type II compliance for future certification

Priority: CRITICAL

Nordic Market Context: Swedish utilities handle sensitive customer data (personnummer, consumption patterns). GDPR fines can reach 4% of annual turnover. Enterprise security is non-negotiable.

Acceptance Criteria:

CriterionMeasurement MethodTest CaseTarget
OAuth 2.0 with Entra ID authenticationAttempt API access with/without tokenTC-060401 without token, 200 with valid token
6 roles implementedVerify all roles in PostgreSQLTC-061All 6 roles present
Users access only their organization dataUser from Org A attempts Org B accessTC-062403 Forbidden
All data access logged to audit trailReview audit_logs table after operationsTC-063All actions logged
API authentication required (all endpoints except /health)Call endpoints without tokenTC-064401 on all except /health
MFA enforced for admin rolesAdmin login without MFATC-065MFA challenge presented
API key rotation every 90 daysCheck key age in Key VaultTC-066Alerts at 80 days
Failed login lockout (5 attempts = 15 min)Attempt 6 failed loginsTC-067Account locked

Dependencies:

  • Microsoft Entra ID tenant configuration
  • PostgreSQL schema for users, roles, user_organization_roles
  • Azure Key Vault for secrets management
  • Audit logging infrastructure
  • MFA provider integration

Risks & Mitigation (Nordic/EU Context):

RiskLikelihoodImpactMitigation StrategyOwner
GDPR non-compliance penaltyLOWCRITICAL- Annual GDPR compliance audit
- Privacy Impact Assessment (PIA) completed
- Data Protection Officer (DPO) review
- Datainspektionen (Swedish DPA) guidelines followed
- EU Standard Contractual Clauses for vendors
Legal/Compliance
Unauthorized personnummer accessLOWCRITICAL- Personnummer encrypted at rest
- Access logging for all PII fields
- Role-based field-level access control
- Swedish Personal Data Act compliance
Security Officer
Authentication complexity delays onboardingMEDIUMMEDIUM- Entra ID B2B invitation flow
- Self-service org admin provisioning
- Clear onboarding documentation
- SSO with customer Entra ID tenants
Product Owner
Audit log storage costs (7-year retention)MEDIUMLOW- PostgreSQL for hot logs (1 year)
- Archive to blob after 1 year
- Compressed JSON format
- Query optimization
Technical Architect

2.8 BR-008: GDPR & Swedish Data Protection Compliance

Requirement: The system shall comply with GDPR and Swedish Data Protection Law including all data subject rights, lawful processing basis, 7-year retention for invoices, data minimization, and Nordic data residency.

Business Value:

  • Avoids GDPR fines (up to €20M or 4% of annual turnover)
  • Enables enterprise sales (GDPR compliance is tender requirement)
  • Builds customer trust and brand reputation
  • Supports Swedish utility regulatory requirements (Energimarknadsinspektionen)

Priority: CRITICAL

Nordic Market Context: Swedish Datainspektionen actively enforces GDPR. Recent fines in telecom/energy sector for inadequate security. Data residency within EU required for many public utility contracts.

Acceptance Criteria:

CriterionMeasurement MethodTest CaseTarget
Right to access: Data export APIRequest customer data exportTC-070JSON export with all customer invoices
Right to erasure: AnonymizationRequest customer deletion, verify PII removedTC-071Personnummer, name, email redacted
7-year invoice retentionCheck lifecycle policy configTC-072Invoices retained 7 years
Audit logging for all data accessQuery audit_logs for customer data accessTC-073All accesses logged
Data residency (Nordic countries only)Verify blob storage regionsTC-074West/North Europe only
Consent management for digital deliveryTrack customer delivery channel consentTC-075Consent recorded
Privacy policy complianceLegal reviewTC-076Approved by legal
Lawful basis documentedReview data processing inventoryTC-077Contract basis for invoice data

Dependencies:

  • Legal review of GDPR compliance approach
  • Data anonymization procedures and testing
  • Azure Blob lifecycle policies for retention
  • Data Processing Agreement (DPA) with Azure
  • Privacy Impact Assessment (PIA) completion

Risks & Mitigation (Swedish/EU Context):

RiskLikelihoodImpactMitigation StrategyOwner
Datainspektionen (Swedish DPA) auditLOWCRITICAL- Annual self-assessment against GDPR
- Document all processing activities (ROPA)
- DPO appointed and consulted
- Privacy by design in architecture
- Regular employee training
Legal/Compliance
Cross-border data transfer violationsLOWCRITICAL- All data stays in EU (Azure West/North Europe)
- No backup to non-EU regions
- Vendor contracts include EU Standard Clauses
- Azure compliance certifications verified
Legal/Compliance
Personnummer handling violationsMEDIUMCRITICAL- Personnummer only in encrypted fields
- Access logging for all reads
- Minimal retention (7 years, then deletion)
- Swedish Personal Data Act guidelines
- No personnummer in URLs or logs
Security Officer
Right to erasure vs 7-year retention conflictMEDIUMHIGH- Anonymization instead of deletion (legal basis: accounting law)
- Legal opinion obtained
- Balance data subject rights with legal obligations
- Documented in privacy policy
Legal/Compliance
Third-party processor compliance (SendGrid, 21G)MEDIUMHIGH- Data Processing Agreements (DPA) signed
- Sub-processor list maintained
- Regular compliance audits
- EU-based data centers only
Legal/Compliance

2.9 BR-009: Operational Monitoring & Observability

Requirement: The system shall provide comprehensive monitoring through Application Insights, structured logging with Serilog, real-time dashboards, and automated alerting to enable 24/7 operational visibility and proactive issue resolution.

Business Value:

  • Reduces mean time to detection (MTTD) from hours to minutes
  • Enables proactive issue resolution before customer impact
  • Supports SLA compliance and reporting
  • Reduces on-call burden through automated diagnostics

Priority: HIGH

Nordic Market Context: Swedish customers expect high service quality. Many utilities have SLA commitments (99.9% uptime). Winter heating season requires 24/7 monitoring.

Acceptance Criteria:

CriterionMeasurement MethodTest CaseTarget
Application Insights integrated (all services)Verify telemetry in Azure portalTC-080All services sending data
Structured logging with correlation IDsTrace request across servicesTC-081Same correlation ID
Custom metrics trackedVerify metrics in dashboardTC-082Batch, delivery, queue metrics present
Dashboards refresh every 5 minutesCheck dashboard timestampTC-083≤ 5 minutes old
Dashboards accessible to authorized usersLogin as different rolesTC-084Access granted appropriately
Critical alerts trigger within 5 minutesSimulate high error rateTC-085Alert received within 5 min
Alert escalation after 15 min unacknowledgedDon't acknowledge alertTC-086Escalation triggered
PII masked in logsSearch logs for personnummerTC-087No personnummer found

Required Dashboards:

  1. Operations Dashboard: Active batches, queue depths, worker counts, error rate, health status
  2. Performance Dashboard: API latency, processing times, PDF generation, delivery latency
  3. Business Dashboard: Invoices processed, delivery breakdown, top organizations
  4. Vendor Dashboard: Batches by format, parsing success rates

Dependencies:

  • Application Insights workspace
  • Alert action groups (email, SMS)
  • Dashboard configuration and permissions
  • On-call rotation schedule

Risks & Mitigation (Nordic Context):

RiskLikelihoodImpactMitigation StrategyOwner
Alert fatigue from false positivesHIGHMEDIUM- Tuned thresholds based on baseline
- 2-week monitoring before alerts live
- Weekly alert review meetings
- Alert suppression during maintenance
Operations Manager
Insufficient monitoring during off-hoursMEDIUMHIGH- 24/7 on-call rotation
- Automated incident creation in Jira
- Runbook for common issues
- PagerDuty integration for escalation
Operations Manager
Log storage costs exceeding budgetLOWMEDIUM- 90-day log retention
- Sampling for high-volume logs
- Cost alerts at 80% budget
- Archive old logs to blob
Technical Architect
Missing critical metricsMEDIUMMEDIUM- Monthly metrics review
- Stakeholder feedback on dashboard usefulness
- Iterate dashboard based on incidents
Operations Manager

2.10 BR-010: Test Data Strategy (GDPR Compliance)

Requirement: The system shall use only synthetic, non-sensitive test data in all non-production environments, with zero copying of production data to staging, to ensure GDPR compliance and prevent data breaches.

Business Value:

  • Ensures GDPR Article 5(1)(b) compliance (purpose limitation)
  • Prevents catastrophic data breach from non-production environments
  • Reduces storage and transfer costs (no production data duplication)
  • Enables offshore development team participation (India)

Priority: CRITICAL

Nordic Market Context: Swedish Datainspektionen prohibits production data in test environments. Indian development team cannot access personnummer data. European team must lead production debugging.

Acceptance Criteria:

CriterionMeasurement MethodTest CaseTarget
Zero production data in stagingAudit staging blob storageTC-090No real personnummer found
Synthetic data generator creates realistic batchesGenerate 10K synthetic invoicesTC-091Valid structure, fake PII
European team handles production issuesProduction bug workflow documentedTC-092No PII sent to offshore team
Reproduction scenarios use synthetic dataCreate synthetic scenario from production bugTC-093Issue reproducible
Staging data clearly marked as testVisual indicators in UI, filename patternsTC-094Test data obvious
Production access restricted (European team only)Attempt production access from India VPNTC-095Access denied (geo-fenced)
Synthetic data follows Swedish patternsReview generated personnummer, addressesTC-096Realistic but invalid

Dependencies:

  • Synthetic data generation tool (Swedish personnummer, addresses, etc.)
  • Staging environment completely isolated from production
  • Network policies restricting production access
  • Documentation of production issue workflow

Risks & Mitigation (EU/India Context):

RiskLikelihoodImpactMitigation StrategyOwner
Accidental production data leak to stagingLOWCRITICAL- Automated scanning for real personnummer patterns
- No database copying tools
- Production data access audit logs
- Annual security training
Security Officer
Offshore team delays due to data restrictionsMEDIUMMEDIUM- European team creates reproduction scenarios
- Comprehensive synthetic data sets
- Well-documented issue reports
- Pair programming for production issues
Product Owner
Synthetic data unrealistic (testing gaps)MEDIUMMEDIUM- Generate from real data distributions (anonymized)
- Edge cases library (long names, special chars)
- Swedish address/personnummer validation
- Regular synthetic data quality review
QA Team
Production debugging bottleneck (European team only)MEDIUMMEDIUM- European team on-call 24/7
- Comprehensive monitoring reduces debugging needs
- Runbooks for common issues
- Knowledge transfer to European team
Operations Manager

2.11 BR-011: Invoice Download API

Requirement: Users shall be able to download generated invoices (PDF and HTML) through authenticated API endpoints with access control and audit logging.

Business Value:

  • Enables customer service to retrieve invoices for disputes
  • Supports reprint requests without reprocessing
  • Facilitates regulatory compliance (invoice provision upon request)
  • Enables future customer portal integration

Priority: HIGH

Acceptance Criteria:

CriterionMeasurement MethodTest CaseTarget
API endpoint to download PDF by invoice IDGET /invoices/{id}/pdfTC-100PDF file returned
API endpoint to download HTML by invoice IDGET /invoices/{id}/htmlTC-101HTML returned
Download links in batch item responseGET /batches/{id}/items/{itemId}TC-102pdfUrl and htmlUrl present
Access control: org users onlyUser from Org A downloads Org B invoiceTC-103403 Forbidden
Download generates audit log entryDownload invoice, check audit_logsTC-104Entry created
Content-Disposition header for PDFCheck HTTP response headersTC-105Filename in header
Rate limiting on downloadsDownload 1000 invoices rapidlyTC-106Rate limit applied

Dependencies:

  • Blob storage SAS token generation
  • Access control middleware
  • Audit logging service

Risks & Mitigation:

RiskLikelihoodImpactMitigation StrategyOwner
Unauthorized invoice accessLOWHIGH- Organization boundary checks
- Audit all downloads
- Rate limiting
- Anomaly detection
Security Officer
Bandwidth costs for large volumesMEDIUMLOW- CDN for frequently accessed invoices
- Compression
- Monitoring
Technical Architect

2.12 BR-012: Batch History & Search

Requirement: Users shall be able to search, filter, and list historical batches for their organization with support for date ranges, status filters, and vendor format filtering.

Business Value:

  • Enables troubleshooting and root cause analysis
  • Supports operational reporting and SLA tracking
  • Facilitates audit compliance
  • Improves user experience with search capabilities

Priority: MEDIUM

Acceptance Criteria:

CriterionMeasurement MethodTest CaseTarget
List batches with paginationGET /batches?page=1&pageSize=50TC-110Paginated list returned
Filter by date rangeGET /batches?from=2025-11-01&to=2025-11-30TC-111Only Nov batches returned
Filter by statusGET /batches?status=completedTC-112Only completed batches
Filter by vendor formatGET /batches?vendorCode=GASELTC-113Only GASEL batches
Search by batch nameGET /batches?search=NovemberTC-114Name contains "November"
Sort by upload/completion dateGET /batches?sortBy=uploadedAt&order=descTC-115Newest first
Returns last 90 days by defaultGET /batches (no filters)TC-116Last 90 days only
Access restricted to organizationUser queries batches from other orgTC-117Empty results

Dependencies:

  • Batch metadata indexing strategy
  • Query performance optimization
  • Blob storage metadata queries or search index

Risks & Mitigation:

RiskLikelihoodImpactMitigation StrategyOwner
Slow queries with large batch historyMEDIUMMEDIUM- Index on organization_id, date
- Pagination required
- Consider Azure Cognitive Search for Phase 2
Technical Architect

2.13 BR-013: Notification System

Requirement: The system shall send email notifications to designated organization contacts when batch processing completes successfully or fails, including summary statistics and error reports.

Business Value:

  • Reduces manual status checking effort by 80%
  • Enables proactive issue resolution
  • Improves customer satisfaction with timely updates
  • Supports SLA monitoring and reporting

Priority: MEDIUM

Acceptance Criteria:

CriterionMeasurement MethodTest CaseTarget
Email sent on batch completionComplete batch, verify email receivedTC-120Email received within 5 min
Email sent on batch failureForce batch failure, verify emailTC-121Email received within 5 min
Email includes summary statisticsReview email contentTC-122Total, success, failed counts present
Email includes error report for failuresReview failure emailTC-123Failed items listed with reasons
Recipients configurable per organizationUpdate org config, verify new recipientTC-124Email to correct recipients
Email template professional and brandedReview email designTC-125EG branding applied
Links to batch status in emailClick link in emailTC-126Opens to batch detail

Dependencies:

  • Email service (SendGrid or Azure Communication Services)
  • Email templates (HTML)
  • Organization configuration for recipients

Risks & Mitigation:

...