Skip to content

Incremental Service Requirements Template

Use this template to specify changes to an existing deployed Arda backend service. The document focuses on the delta — what changes — not the entire service specification.

See Incremental Best Practices for guidance on filling in each section safely.


Brief description of the capability being added or modified. What problem does it solve? How does it extend or modify existing functionality?

  • Service: ServiceNameService
  • Package: cards.arda.operations.<domain>.<module>
  • Repository: operations
  • New Capability: Adding new methods or behaviors to existing service
  • Behavior Modification: Changing existing method behavior
  • Entity Extension: Adding properties to existing entities
  • New Child Entity: Adding a new entity under existing parent
  • Persistence Change: Schema migration or query modification
  • Integration Addition: New external system interaction
AreaImpact LevelDescription
API ContractNone / Additive / BreakingHow does this affect the REST API?
Database SchemaNone / Migration RequiredSchema changes needed?
Existing TestsNone / Updates RequiredWhich tests need modification?
Client ApplicationsNone / Optional Update / Required UpdateFrontend/integration impact?

DocumentRelevance
Original Service RequirementsBaseline service specification
Domain SpecificationEntity and behavior definitions
Feature RequirementsBusiness requirements driving this change
DocumentRelevance
Current ImplementationExisting service code
Entity DefinitionCurrent entity structure
Persistence LayerCurrent database mapping

Current Properties (properties being modified or relevant to change):

PropertyCurrent TypeCurrent Behavior
propertyTypeCurrent behavior

Current Signature: suspend fun methodName(params): Result<ReturnType>

Current Behavior Summary: Brief description of what the method currently does.

Current Behavior by Qualifier:

QualifierCurrent Behavior
LAXCurrent LAX behavior
STRICTCurrent STRICT behavior
PROPAGATECurrent PROPAGATE behavior

  • Change Type: Add Property | Modify Property | Remove Property | Add Validation
PropertyTypeRequiredDefaultChangeDescription
propertyTypeYes/NodefaultNEWDescription
Rule IDConditionErrorChange
VR-NEW-001conditionAppError.TypeNEW
ConcernMitigation
Existing records without new fieldDefault value applied
Clients not sending new fieldField is optional in API layer

  • Change Reason: Why this modification is needed
QualifierCurrent BehaviorNew BehaviorChange Reason
LAXCurrentNewWhy
STRICTCurrentNewWhy
PROPAGATECurrentNewWhy
ConditionError TypeMessageChange
ConditionAppError.TypemessageNEW / MODIFY

  • Signature: suspend fun newMethodName(params): Result<ReturnType>
  • Purpose: What this new method accomplishes
ParameterTypeRequiredDescription
paramTypeYes/NoDescription
QualifierBehavior
LAXBehavior
STRICTBehavior
PROPAGATEBehavior

  • Migration File: V<version>__<description>.sql
  • Flyway Location: operations/src/main/resources/migration/
TableColumnChangeTypeNullableDefaultNotes
tablecolumnADDtypeYes/NodefaultNotes
-- Rollback script
ALTER TABLE <table> DROP COLUMN <column>;

Test FileTest NameModification Required
TestFile.kttestNameWhat needs to change
Test IDDescriptionValidates
UT-NEW-001Test descriptionEM-XXX-001
Test IDDescriptionSetupValidates
IT-NEW-001Test descriptionSetup requirementsPC-XXX-001
Test IDDescriptionEndpointValidates
AT-NEW-001Test descriptionMETHOD /...AC-XXX-001

  1. Deploy database migration
  2. Deploy backend service
  3. Update frontend clients (if required)
ScenarioAction
Migration failureRollback steps
Service failureRollback steps

IDCategoryChange TypeDescriptionStatus
EM-XXX-001Entity ModificationMODIFYModify EntityNameProposed
MM-XXX-001Method ModificationMODIFYModify methodNameProposed
PC-XXX-001Persistence ChangeMIGRATIONSchema migrationProposed

IDQuestionOwnerStatusResolution
Q-001Question textPersonOpen/ResolvedAnswer when resolved

VersionDateAuthorChanges
1.0.0YYYY-MM-DDAuthorInitial draft