Design note · Form configuration

Product-line extensibility

Add product as a configuration scope without encoding it into journey identity.

ProposalForm EngineCountry configuration

1. Scope

This note covers product-line scoping only. Profile enrichment no longer uses the composed-plan proposal that previously appeared here. See the accepted Customer update journeys design for NewGen assessment, configured form resolution, authenticated APIs, progress, and core submission.

2. Product lines

The same country can require different journeys and form overlays for banking, insurance, and future product lines. A product line is a nullable scope beside channel.

journeyId remains the stable flow identity. Encoding product into that ID would duplicate whole journeys and force client changes when products are added. Instead, configuration gains productLine, and resolution selects the most specific matching variant.

3. Resolution precedence

PriorityScopeExample
1Country wildcardKenya base behavior
2Product lineKenya banking
3ChannelKenya mobile
4Channel and product lineKenya mobile banking

The same precedence applies to JourneyVariantSelector, FormResolver.OrderByPrecedence, and patch filenames. Equal-specificity matches remain configuration errors.

4. Studio changes

StartOnboardingRequest already carries account type information before journey resolution. The service must map selected products to the product-line scope rather than ask the client to choose a journey ID.

5. Sequencing

  1. Define the closed product-line vocabulary and its mapping from account products.
  2. Add the nullable scope to service configuration and deterministic resolution.
  3. Add product-line controls and validation to the studio.
  4. Extend preview fixtures and API response mocks.
  5. Release country variants only after fallback and ambiguity tests pass.
Status. Product-line scoping remains a proposal. Customer update journeys are an accepted design and are documented separately.