Skip to content

Device Management

Backlog fieldValue
Story IDAP-VAN-001
EpicVan Sales
Story typeBusiness workflow
Review statusDraft - business analyst and business owner review required
Source evidenceAppsPortal.Apis controller, application command/query handlers, validators, domain entities, and matching MFE workflow where available
Last source review2026-07-10

User story

As distribution administrators, I want to register, verify, activate, and manage salesperson devices so that only approved devices perform mobile distribution work.

Acceptance criteria

  1. Only authorized users can view or execute the feature's actions.
  2. Required business data, active dependencies, tenant/branch scope, and current document state are validated.
  3. Invalid requests return actionable validation errors without applying a partial change.
  4. Search, list, view, print, and export operations use the same authorized business scope.
  5. Material create, edit, status, approval, posting, reversal, and integration actions are auditable where applicable.
  6. Financial or stock effects are applied atomically and no more than once.

Business rules

Required

Unique device identity, assigned salesperson/user, branch/company, verification/activation status are required.

Optional or conditional

Metadata, push token, last-seen, and notes are optional.

Action behavior

Verify/activate enables authorized field use; deactivate/revoke blocks future synchronization.

Blocking rule or downstream effect

Device actions create no GL/stock until business transactions synchronize/post.

Frontend page coverage

The following UI coverage is sourced from the pulled MFE route configuration. A Module-level supporting artifact mapping is evidence of a reachable screen, but requires BA confirmation that it belongs to this story rather than a more specific feature story.

Route/pageComponentModeRoute permission/guardMapping confidenceSource
(module default)JourneyPlanComponentList/navigationPermission: 'ALL_PERMISSIONS', AppDistributionPermissions.JourneyPlan_List; Guards: PolicyAuthGuardModule-level supporting artifactapps/distribution/src/app/remote-entry/distribution/distribution-routing.module.ts:39
(module default)LayoutPageComponentList/navigationGuards: AuthGuard, moduleLicenseGuardModule-level supporting artifactapps/distribution/src/app/remote-entry/entry.routes.ts:6
(module default)MainTransferComponentList/navigationGuards: PolicyAuthGuardModule-level supporting artifactapps/distribution/src/app/remote-entry/transactions/transactions-routing.module.ts:9
(module default)TransferManagementComponentList/navigationPermission: 'ALL_PERMISSIONS', AppDistributionPermissions.TransferRequest_List; Guards: PolicyAuthGuardModule-level supporting artifactapps/distribution/src/app/remote-entry/transactions/transactions-routing.module.ts:16
masterdataLazy-loaded routeList/navigationNo route-level permission/guard found in source windowModule-level supporting artifactapps/distribution/src/app/remote-entry/entry.routes.ts:20
sequenceSequenceComponentSequencePermission: 'ALL_PERMISSIONS'; Guards: PolicyAuthGuardModule-level supporting artifactapps/distribution/src/app/remote-entry/distribution/distribution-routing.module.ts:49
transactionsLazy-loaded routeList/navigationNo route-level permission/guard found in source windowModule-level supporting artifactapps/distribution/src/app/remote-entry/entry.routes.ts:27
transfer-management/view/:idViewTransferComponentView/detailPermission: 'ALL_PERMISSIONS', AppDistributionPermissions.TransferRequest_View; Guards: PolicyAuthGuardFeature token matchapps/distribution/src/app/remote-entry/transactions/transactions-routing.module.ts:31

Observed frontend fields and validation

ComponentControlObserved frontend ruleComponent source
--No reactive formControlName controls were found for the routed components; review template-driven/shared child components.Route sources above

Observed frontend actions

ComponentClick action/handlerBusiness review requirementComponent source
JourneyPlanComponentrouteToSequenceDocument the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler.apps/distribution/src/app/remote-entry/distribution/pages/journey-plan/journey-plan.component.ts
SalesManCardComponentdeleteAvailable only in deletable states with Delete permission; identify the record in confirmation, call delete once, remove/refresh the list row on success, and retain the row with the API reason on failure.apps/distribution/src/app/remote-entry/distribution/components/schedule-date-card/schedule-date-card.component.ts
SalesManCardComponentonAddDocument the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler.apps/distribution/src/app/remote-entry/distribution/components/schedule-date-card/schedule-date-card.component.ts
SalesManCardComponentonEditOpen the identified editable record only with Edit permission; posted/locked records remain blocked by route or action state and list context must be recoverable on return.apps/distribution/src/app/remote-entry/distribution/components/schedule-date-card/schedule-date-card.component.ts
SalesManCardComponentonViewOpen the authorized record in view mode with its status, totals, lines, source and generated-document links; handle deleted, forbidden, and missing records without exposing stale data.apps/distribution/src/app/remote-entry/distribution/components/schedule-date-card/schedule-date-card.component.ts
TransferManagementComponentonAcceptTransferDocument the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler.apps/distribution/src/app/remote-entry/transactions/pages/main-transfer/transfer-management/transfer-management.component.ts
TransferManagementComponentonDeclineDocument the enabled state, permission, input context, resulting API or navigation effect, success refresh, and concrete failure behavior for this handler.apps/distribution/src/app/remote-entry/transactions/pages/main-transfer/transfer-management/transfer-management.component.ts
TransferManagementComponentonViewDetailsOpen the authorized record in view mode with its status, totals, lines, source and generated-document links; handle deleted, forbidden, and missing records without exposing stale data.apps/distribution/src/app/remote-entry/transactions/pages/main-transfer/transfer-management/transfer-management.component.ts

Page-specific frontend acceptance criteria

  1. (module default) - List/navigation: Load an authorized paged/searchable list or navigation page; preserve filters/sort/paging and expose only permitted row and bulk actions. Security observed: Guards: PolicyAuthGuard
  2. masterdata - List/navigation: Load an authorized paged/searchable list or navigation page; preserve filters/sort/paging and expose only permitted row and bulk actions. Security observed: No route-level permission/guard found in source window
  3. sequence - Sequence: Show current numbering scope and permit only authorized, valid sequence configuration without retroactively renumbering posted documents. Security observed: Permission: 'ALL_PERMISSIONS'; Guards: PolicyAuthGuard
  4. transactions - List/navigation: Load an authorized paged/searchable list or navigation page; preserve filters/sort/paging and expose only permitted row and bulk actions. Security observed: No route-level permission/guard found in source window
  5. transfer-management/view/:id - View/detail: Load an authorized immutable/detail representation with status-aware actions, linked records, print/export where exposed, and not-found/forbidden handling. Security observed: Permission: 'ALL_PERMISSIONS', AppDistributionPermissions.TransferRequest_View; Guards: PolicyAuthGuard

Internal Documentation — Microtec