New customer purchase subscription with discount using unique promo code

This guide details the journey for a new customer subscribing to Sky using a unique promo code discount. You'll find both the customer-facing flow and system-level sequence, complete with API endpoint paths and CRM/contract event mappings. Use it to align the UX journey with backend specifications — and contact us if you’d like enhanced Postman or Swagger definitions for integration testing.

Customer perspective

%%{init: {
"theme": "neutral",
"look": "classic"
}}%%
flowchart TB
    A(["Start"]) --> B{"queryIfUserNameExists"}
    B -- Yes --> C["Route to existing customer login"]
    B -- No --> D["registerCustomer"]
    D --> E["Validate VCN<br>Ensure first line of address, postcode, and viewing card number captured for Sky validation"]
    E --> F["getCatalogue<br>View product catalogue filtered by country and itemType"]
    F --> G["getAvailableDiscounts<br>Present discounts linked to salesItem"]
    G --> H["createPaymentMethod"]
    H --> I["addItemsToCart<br>VCN must be provided if required by sales item"]
    I --> J["setCartDiscountCode"]
    J --> K["checkoutCart"]
    K --> L(["End"])

System perspective

%%{init: {
"theme": "neutral",
"look": "classic"
}}%%
sequenceDiagram
    participant C as Customer
    participant W as Web
    participant CRS as CustomerRegistrationService
    participant CAS as ConditionalAccessService
    participant Cat as CatalogueService
    participant Pay as PaymentService
    participant Cart as CartService

    C->>W: Start
    W->>CRS: queryIfUserNameExists
    alt Username exists
        W-->>C: Route to existing customer log in
    else Username not found
        W->>CRS: registerCustomer
        CRS-->>W: success

        W->>CAS: Validate VCN
        Note right of CAS: Capture first line of address,<br/>postcode and viewing card number<br/>for Sky validation
        CAS-->>W: VCN validated

        W->>Cat: getCatalogue
        Cat-->>W: catalogue items (filtered by country and itemType)
        
				W->>Cat: getDiscounts
        Cat-->>W: available discounts (filtered by salesItem)

        W->>Pay: createPaymentMethod
        Pay-->>W: Direct Debit payment method created

        W->>Cart: addItemsToCart
        Note right of Cart: VCN must be provided if required<br/>by the sales item details
        Cart-->>W: items added

        W->>Cart: setCartDiscountCode
        Cart-->>W: discount applied

        W->>Cart: checkoutCart
        Cart-->>W: checkout complete
    end

    W-->>C: End