Skip to content

Product Lifecycle Management

Overview

Products in SynthesQ follow a defined lifecycle with specific state transitions to ensure data integrity and business rule compliance.

Lifecycle States

Draft

A product starts in Draft state when first created. This allows you to:

  • Build the product definition incrementally
  • Set up pricing before making it available
  • Configure inventory settings
  • Add product attributes and variants

Transitions: Can move to Active or Inactive

Active

Active products are fully configured and available for:

  • Customer purchases
  • Sales order line items
  • Inventory reservations
  • Purchase order generation

Transitions: Can move to Inactive or Discontinued

Inactive

Inactive products are temporarily unavailable but retain all data:

  • Not visible in customer catalog
  • Cannot be added to new orders
  • Existing orders remain unaffected
  • Inventory tracking continues

Transitions: Can move back to Active or to Discontinued

Discontinued

Discontinued products are permanently removed from active use:

  • Cannot be reactivated
  • Historical data preserved
  • Existing orders unaffected
  • Inventory tracking stops

Transitions: Terminal state (no transitions)

Business Scenarios

Scenario 1: Launching a New Product

Steps:

  1. Create product in Draft state via API
  2. Configure pricing (selling_price, cost_price)
  3. Set inventory settings (track_inventory, reorder_point)
  4. Add product attributes (EAV system)
  5. Generate variants if needed (for configurable products)
  6. Transition to Active state

Key Considerations:

  • Ensure selling_price ≥ cost_price (avoid negative margins)
  • Set appropriate reorder_point based on lead time
  • Validate all required attributes before activation

Scenario 2: Seasonal Product Management

Use Case: Product available only during certain seasons

Workflow:

  1. Product starts Active during season
  2. Transition to Inactive at season end
  3. Keep inventory data for next season
  4. Reactivate at next season start

Why Not Discontinued:

  • Preserves inventory settings
  • Maintains historical performance data
  • Allows quick reactivation

Scenario 3: Phasing Out a Product

Use Case: Product being replaced by newer model

Workflow:

  1. Create new replacement product
  2. Set old product to Inactive (stop new sales)
  3. Let existing inventory sell through
  4. When stock depleted, transition to Discontinued
  5. Reason tracking ensures audit trail

Required Fields:

  • status_change_reason: Document why product discontinued
  • Archived for reporting and compliance

State Transition Rules

Validation Rules

Draft → Active:

  • Must have selling_price
  • Must have valid SKU
  • Must have category (if required by business rules)
  • All required attributes must be set

Active → Inactive:

  • status_change_reason recommended
  • No validation blockers (can always deactivate)

Active/Inactive → Discontinued:

  • status_change_reason REQUIRED
  • Cannot be reversed
  • Admin permission may be required

*Discontinued → :

  • No transitions allowed (terminal state)

API Endpoints

Check current status:

  • GET /api/v1/operations/products/{id} → Returns product with current status field

Change status:

  • PATCH /api/v1/operations/products/{id} → Include status and status_change_reason

Specialized endpoints:

  • POST /api/v1/operations/products/{id}/activate
  • POST /api/v1/operations/products/{id}/deactivate
  • POST /api/v1/operations/products/{id}/discontinue

Refer to API Reference for detailed request/response structures.

Integration Points

With Inventory Module

  • Status changes affect stock reservation rules
  • Inactive products: reservations honored but no new reservations
  • Discontinued products: all reservations released

With Sales Module

  • Active products: available for orders
  • Inactive/Discontinued: cannot be added to new orders
  • Existing orders: unaffected by status changes

With Purchase Orders Module

  • Discontinued products: removed from auto-reorder calculations
  • Inactive products: manual POs still possible
  • Active products: full reorder automation

Best Practices

  1. Always provide status_change_reason for Discontinued transitions (audit trail)
  2. Use Inactive instead of Discontinued if product might return
  3. Check inventory levels before discontinuing (avoid orphaned stock)
  4. Update product descriptions to indicate "Limited availability" before setting Inactive
  5. Notify sales team before major status changes

Documentation for SynthesQ CRM/ERP Platform