Skip to content

Company and Branches

Backlog fieldValue
Story IDAP-GS-002
EpicGeneral Settings
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 company administrators, I want to maintain company, legal, contact, address, and branch data so that all business documents use the correct organization identity.

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

Company legal identity, country/currency, localized name, tax/legal data where applicable, and at least one usable branch are required.

Optional or conditional

Contacts, addresses, logos, registration details, and additional branches are optional/conditional.

Action behavior

Save changes future document identity and scope; posted documents retain their original legal snapshot.

Blocking rule or downstream effect

A branch with transactions cannot be deleted; user-branch access controls selection.

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)CompanyDefinationDetailsComponentView/detailPermission: 'ALL_PERMISSIONS', AppGeneralSettingsPermissions.Company_View; Guards: PolicyAuthGuardFeature token matchapps/erpHome/src/app/remote-entry/company-defination/company-defination-routing.module.ts:20
(module default)MainCompanyDefComponentList/navigationGuards: PolicyAuthGuardFeature token matchapps/erpHome/src/app/remote-entry/company-defination/company-defination-routing.module.ts:12
companyLazy-loaded routeList/navigationGuards: PolicyAuthGuardFeature token matchapps/erpHome/src/app/remote-entry/general-setting/general-setting.module.ts:244
edit/:idEditCompanyDefinationComponentEditPermission: 'ALL_PERMISSIONS', AppGeneralSettingsPermissions.Company_Edit; Guards: PolicyAuthGuardFeature token matchapps/erpHome/src/app/remote-entry/company-defination/company-defination-routing.module.ts:36
viewCompanyDefinationDetailsComponentView/detailPermission: 'ALL_PERMISSIONS', AppGeneralSettingsPermissions.Company_View; Guards: PolicyAuthGuardFeature token matchapps/erpHome/src/app/remote-entry/company-defination/company-defination-routing.module.ts:25

Observed frontend fields and validation

ComponentControlObserved frontend ruleComponent source
AddressComponentaddressVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/address/address.component.ts
AddressComponentcityVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/address/address.component.ts
AddressComponentcountryCodeVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/address/address.component.ts
AddressComponentcurrencyNameVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/address/address.component.ts
AddressComponentlatitudeVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/address/address.component.ts
AddressComponentlongitudeVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/address/address.component.ts
AddressComponentradiusVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/address/address.component.ts
AddressComponentregionVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/address/address.component.ts
ContactComponentcompanyAddressVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewContact/contact.component.ts
ContactComponentcompanyEmailVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewContact/contact.component.ts
ContactComponentcompanyLogoVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewContact/contact.component.ts
ContactComponentcontactPersonalVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewContact/contact.component.ts
ContactComponentcontactPersonalEmailVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewContact/contact.component.ts
ContactComponentcontactPersonalMobileNumberVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewContact/contact.component.ts
ContactComponentcontactPersonalMobileNumberCodeVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewContact/contact.component.ts
ContactComponentcontactPersonalPositionVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewContact/contact.component.ts
ContactComponentmobileNumberVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewContact/contact.component.ts
ContactComponentmobileNumberCodeVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewContact/contact.component.ts
ContactComponentnameArVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewContact/contact.component.ts
ContactComponentnameEnVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewContact/contact.component.ts
EditAddressComponentaddressVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/edit-address/edit-address.component.ts
EditAddressComponentcityVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/edit-address/edit-address.component.ts
EditAddressComponentcountryCodeRequired in component validatorapps/erpHome/src/app/remote-entry/company-defination/pages/edit-address/edit-address.component.ts
EditAddressComponentcurrencyIdRequired in component validatorapps/erpHome/src/app/remote-entry/company-defination/pages/edit-address/edit-address.component.ts
EditAddressComponentlatitudeVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/edit-address/edit-address.component.ts
EditAddressComponentlongitudeVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/edit-address/edit-address.component.ts
EditAddressComponentradiusVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/edit-address/edit-address.component.ts
EditAddressComponentregionVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/edit-address/edit-address.component.ts
EditContactComponentcompanyAddressVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/edit-contact/edit-contact.component.ts
EditContactComponentcompanyEmailVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/edit-contact/edit-contact.component.ts
EditContactComponentcompanyLogoVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/edit-contact/edit-contact.component.ts
EditContactComponentcontactPersonalVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/edit-contact/edit-contact.component.ts
EditContactComponentcontactPersonalEmailVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/edit-contact/edit-contact.component.ts
EditContactComponentcontactPersonalMobileNumberVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/edit-contact/edit-contact.component.ts
EditContactComponentcontactPersonalMobileNumberCodeVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/edit-contact/edit-contact.component.ts
EditContactComponentcontactPersonalPositionVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/edit-contact/edit-contact.component.ts
EditContactComponentmobileNumberVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/edit-contact/edit-contact.component.ts
EditContactComponentmobileNumberCodeVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/edit-contact/edit-contact.component.ts
EditContactComponentnameArRequired in component validatorapps/erpHome/src/app/remote-entry/company-defination/pages/edit-contact/edit-contact.component.ts
EditContactComponentnameEnRequired in component validatorapps/erpHome/src/app/remote-entry/company-defination/pages/edit-contact/edit-contact.component.ts
EditLegacyComponentactivityCodeIdVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/edit-legal/edit-legacy.component.ts
EditLegacyComponentadditionalStreetNameRequired in component validatorapps/erpHome/src/app/remote-entry/company-defination/pages/edit-legal/edit-legacy.component.ts
EditLegacyComponentbuildingNumberRequired in component validatorapps/erpHome/src/app/remote-entry/company-defination/pages/edit-legal/edit-legacy.component.ts
EditLegacyComponentbusinessCategoryRequired in component validatorapps/erpHome/src/app/remote-entry/company-defination/pages/edit-legal/edit-legacy.component.ts
EditLegacyComponentcityNameRequired in component validatorapps/erpHome/src/app/remote-entry/company-defination/pages/edit-legal/edit-legacy.component.ts
EditLegacyComponentcitySubDivisionNameRequired in component validatorapps/erpHome/src/app/remote-entry/company-defination/pages/edit-legal/edit-legacy.component.ts
EditLegacyComponentcommercialIdRequired in component validatorapps/erpHome/src/app/remote-entry/company-defination/pages/edit-legal/edit-legacy.component.ts
EditLegacyComponentcompanyEmailRequired in component validatorapps/erpHome/src/app/remote-entry/company-defination/pages/edit-legal/edit-legacy.component.ts
EditLegacyComponentcompanyNameRequired in component validatorapps/erpHome/src/app/remote-entry/company-defination/pages/edit-legal/edit-legacy.component.ts
EditLegacyComponentcountrySubEntityRequired in component validatorapps/erpHome/src/app/remote-entry/company-defination/pages/edit-legal/edit-legacy.component.ts
EditLegacyComponentorganizationRequired in component validatorapps/erpHome/src/app/remote-entry/company-defination/pages/edit-legal/edit-legacy.component.ts
EditLegacyComponentorganizationUnitRequired in component validatorapps/erpHome/src/app/remote-entry/company-defination/pages/edit-legal/edit-legacy.component.ts
EditLegacyComponentpostalZoneRequired in component validatorapps/erpHome/src/app/remote-entry/company-defination/pages/edit-legal/edit-legacy.component.ts
EditLegacyComponentregisteredAddressRequired in component validatorapps/erpHome/src/app/remote-entry/company-defination/pages/edit-legal/edit-legacy.component.ts
EditLegacyComponentregistrationNameRequired in component validatorapps/erpHome/src/app/remote-entry/company-defination/pages/edit-legal/edit-legacy.component.ts
EditLegacyComponentstreetNameRequired in component validatorapps/erpHome/src/app/remote-entry/company-defination/pages/edit-legal/edit-legacy.component.ts
EditLegacyComponenttaxIdRequired in component validatorapps/erpHome/src/app/remote-entry/company-defination/pages/edit-legal/edit-legacy.component.ts
LagalComponentactivityCodeIdVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewLagal/lagal.component.ts
LagalComponentadditionalStreetNameVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewLagal/lagal.component.ts
LagalComponentbuildingNumberVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewLagal/lagal.component.ts
LagalComponentbusinessCategoryVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewLagal/lagal.component.ts
LagalComponentcityNameVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewLagal/lagal.component.ts
LagalComponentcitySubDivisionNameVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewLagal/lagal.component.ts
LagalComponentcommercialIdVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewLagal/lagal.component.ts
LagalComponentcompanyEmailVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewLagal/lagal.component.ts
LagalComponentcompanyNameVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewLagal/lagal.component.ts
LagalComponentcountrySubEntityVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewLagal/lagal.component.ts
LagalComponentorganizationVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewLagal/lagal.component.ts
LagalComponentorganizationUnitVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewLagal/lagal.component.ts
LagalComponentpostalZoneVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewLagal/lagal.component.ts
LagalComponentregisteredAddressVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewLagal/lagal.component.ts
LagalComponentregistrationNameVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewLagal/lagal.component.ts
LagalComponentstreetNameVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewLagal/lagal.component.ts
LagalComponenttaxIdVisible control; optional or API-dependentapps/erpHome/src/app/remote-entry/company-defination/pages/viewLagal/lagal.component.ts

Observed frontend actions

ComponentClick action/handlerBusiness review requirementComponent source
AddressComponentnavigateToEditAddressOpen 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/erpHome/src/app/remote-entry/company-defination/pages/address/address.component.ts
CompanyDefinationBranchesListComponentcancelLeave or close without persisting; warn when the current form has unsaved changes and restore the prior list/filter context.apps/erpHome/src/app/remote-entry/company-defination/pages/branches-list/branches-list.component.ts
CompanyDefinationBranchesListComponentnavigateToEditOpen 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/erpHome/src/app/remote-entry/company-defination/pages/branches-list/branches-list.component.ts
CompanyDefinationBranchesListComponentonEditOpen 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/erpHome/src/app/remote-entry/company-defination/pages/branches-list/branches-list.component.ts
ContactComponentnavigateToEditContactOpen 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/erpHome/src/app/remote-entry/company-defination/pages/viewContact/contact.component.ts
EditAddressComponentcancelLeave or close without persisting; warn when the current form has unsaved changes and restore the prior list/filter context.apps/erpHome/src/app/remote-entry/company-defination/pages/edit-address/edit-address.component.ts
EditAddressComponenteditAddressOpen 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/erpHome/src/app/remote-entry/company-defination/pages/edit-address/edit-address.component.ts
EditContactComponentcancelLeave or close without persisting; warn when the current form has unsaved changes and restore the prior list/filter context.apps/erpHome/src/app/remote-entry/company-defination/pages/edit-contact/edit-contact.component.ts
EditContactComponenteditContactOpen 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/erpHome/src/app/remote-entry/company-defination/pages/edit-contact/edit-contact.component.ts
EditLegacyComponentcancelLeave or close without persisting; warn when the current form has unsaved changes and restore the prior list/filter context.apps/erpHome/src/app/remote-entry/company-defination/pages/edit-legal/edit-legacy.component.ts
EditLegacyComponenteditLegalOpen 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/erpHome/src/app/remote-entry/company-defination/pages/edit-legal/edit-legacy.component.ts
LagalComponenteditLegalOpen 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/erpHome/src/app/remote-entry/company-defination/pages/viewLagal/lagal.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. (module default) - 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', AppGeneralSettingsPermissions.Company_View; Guards: PolicyAuthGuard
  3. company - 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
  4. edit/:id - Edit: Load the identified record, enforce state/permission field locks, preserve concurrency identity, validate changes, and return without losing filters. Security observed: Permission: 'ALL_PERMISSIONS', AppGeneralSettingsPermissions.Company_Edit; Guards: PolicyAuthGuard
  5. view - 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', AppGeneralSettingsPermissions.Company_View; Guards: PolicyAuthGuard

Internal Documentation — Microtec