diff --git a/apps/backoffice/src/app/features/endorsement/pages/EndorsementQueuePage.tsx b/apps/backoffice/src/app/features/endorsement/pages/EndorsementQueuePage.tsx
deleted file mode 100644
index 4ef48ada3..000000000
--- a/apps/backoffice/src/app/features/endorsement/pages/EndorsementQueuePage.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import { Container } from '@mantine/core';
-import { FeatureUnavailable } from '@ema-platform/ui';
-
-/**
- * Placeholder until this feature has a backend.
- *
- * This page previously rendered hardcoded sample records, which were
- * indistinguishable from real ones.
- */
-export function EndorsementQueuePage() {
- return (
-
-
-
- );
-}
-
-export default EndorsementQueuePage;
diff --git a/apps/backoffice/src/app/features/endorsement/pages/EndorsementReviewPage.tsx b/apps/backoffice/src/app/features/endorsement/pages/EndorsementReviewPage.tsx
deleted file mode 100644
index 7bd998cbc..000000000
--- a/apps/backoffice/src/app/features/endorsement/pages/EndorsementReviewPage.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import { Container } from '@mantine/core';
-import { FeatureUnavailable } from '@ema-platform/ui';
-
-/**
- * Placeholder until this feature has a backend.
- *
- * This page previously rendered hardcoded sample records, which were
- * indistinguishable from real ones.
- */
-export function EndorsementReviewPage() {
- return (
-
-
-
- );
-}
-
-export default EndorsementReviewPage;
diff --git a/apps/backoffice/src/app/features/license-review/config/license-types.ts b/apps/backoffice/src/app/features/license-review/config/license-types.ts
index fd8e62505..8b6901481 100644
--- a/apps/backoffice/src/app/features/license-review/config/license-types.ts
+++ b/apps/backoffice/src/app/features/license-review/config/license-types.ts
@@ -3,6 +3,7 @@ import {
IconArrowsExchange,
IconFileDescription,
IconId,
+ IconRubberStamp,
IconShip,
IconTruck,
IconUsers,
@@ -97,6 +98,18 @@ const PRESENTATION: Record = {
// no capital threshold, no staff roles.
detailSections: ['overview', 'documents'],
},
+ ENDORSEMENT_COC: {
+ key: 'ENDORSEMENT_COC',
+ icon: IconRubberStamp,
+ // Person-centric, same as seafarer registration: no company entity, no
+ // capital threshold, no staff roles, no inspection.
+ detailSections: ['overview', 'documents'],
+ },
+ ENDORSEMENT_GOC: {
+ key: 'ENDORSEMENT_GOC',
+ icon: IconRubberStamp,
+ detailSections: ['overview', 'documents'],
+ },
};
/** Falls back to a generic presentation so an unseeded type still renders. */
diff --git a/apps/backoffice/src/app/features/license-review/pages/LicenseQueuePage.tsx b/apps/backoffice/src/app/features/license-review/pages/LicenseQueuePage.tsx
index 5b965d8a5..76fe108a4 100644
--- a/apps/backoffice/src/app/features/license-review/pages/LicenseQueuePage.tsx
+++ b/apps/backoffice/src/app/features/license-review/pages/LicenseQueuePage.tsx
@@ -97,6 +97,8 @@ const APPLICANT_NAME_TYPE_KEYS = [
"CERTIFICATE_OF_PROFICIENCY",
"VESSEL_REGISTRATION",
"VESSEL_OWNERSHIP_TRANSFER",
+ "ENDORSEMENT_COC",
+ "ENDORSEMENT_GOC",
];
function applicantOrCompanyName(app: LicenseApplication): string | undefined {
diff --git a/apps/backoffice/src/app/i18n/locales/am.ts b/apps/backoffice/src/app/i18n/locales/am.ts
index b6d3536ed..01c0f4e1a 100644
--- a/apps/backoffice/src/app/i18n/locales/am.ts
+++ b/apps/backoffice/src/app/i18n/locales/am.ts
@@ -38,6 +38,10 @@ export const am: Translations = {
typeMto: "የብዝሃ-ሁነታ ትራንስፖርት አንቀሳቃሽ",
typeSEAFARER_REGISTRATION: "የመርከበኞች ምዝገባ",
typeVESSEL_OWNERSHIP_TRANSFER: "የመርከብ ባለቤትነት ዝውውር",
+ typeCERTIFICATE_OF_COMPETENCY: "የብቃት ማረጋገጫ ምስክር ወረቀት",
+ typeCERTIFICATE_OF_PROFICIENCY: "የብቃት ምስክር ወረቀት",
+ typeENDORSEMENT_COC: "የCoC ማረጋገጫ",
+ typeENDORSEMENT_GOC: "የGOC ማረጋገጫ",
primary: "ዋና",
destinations: "ወደ",
noResults: "ምንም አልተገኘም",
@@ -74,7 +78,8 @@ export const am: Translations = {
seamanBookQueue: "የመርከበኞች መጽሐፍ ወረፋ",
cocQueue: "የCoC ወረፋ",
copQueue: "የCoP ወረፋ",
- endorsementQueue: "የማረጋገጫ ወረፋ",
+ endorsementCocQueue: "የCoC ማረጋገጫ ወረፋ",
+ endorsementGocQueue: "የGOC ማረጋገጫ ወረፋ",
vesselRegistrations: "የመርከብ ምዝገባ",
// vesselRegistrationReport: 'የምዝገባ ሪፖርት',
vesselTransfers: "የመርከብ ባለቤትነት ዝውውር",
diff --git a/apps/backoffice/src/app/i18n/locales/en.ts b/apps/backoffice/src/app/i18n/locales/en.ts
index aeafa7c65..be502f3b8 100644
--- a/apps/backoffice/src/app/i18n/locales/en.ts
+++ b/apps/backoffice/src/app/i18n/locales/en.ts
@@ -36,6 +36,10 @@ export const en = {
typeMto: 'Multimodal Transport Operator',
typeSEAFARER_REGISTRATION: 'Seafarer Registration',
typeVESSEL_OWNERSHIP_TRANSFER: 'Vessel Ownership Transfer',
+ typeCERTIFICATE_OF_COMPETENCY: 'Certificate of Competency',
+ typeCERTIFICATE_OF_PROFICIENCY: 'Certificate of Proficiency',
+ typeENDORSEMENT_COC: 'CoC Endorsement',
+ typeENDORSEMENT_GOC: 'GOC Endorsement',
primary: 'Primary',
destinations: 'Go to',
noResults: 'Nothing found',
@@ -72,7 +76,8 @@ export const en = {
postWaiverQueue: 'Post-Waiver Queue',
cocQueue: 'CoC Queue',
copQueue: 'CoP Queue',
- endorsementQueue: 'Endorsement Queue',
+ endorsementCocQueue: 'CoC Endorsement Queue',
+ endorsementGocQueue: 'GOC Endorsement Queue',
vesselRegistrations: 'Vessel Registration',
vesselTransfers: 'Vessel Ownership Transfer',
seafarerRegistry: 'Seafarer Registry',
diff --git a/apps/backoffice/src/app/layouts/nav-config.ts b/apps/backoffice/src/app/layouts/nav-config.ts
index 07e7c259a..e17382ae4 100644
--- a/apps/backoffice/src/app/layouts/nav-config.ts
+++ b/apps/backoffice/src/app/layouts/nav-config.ts
@@ -115,7 +115,8 @@ export const NAV_SECTIONS: NavSection[] = [
{ to: '/licence-review/type/CERTIFICATE_OF_COMPETENCY', label: 'nav.cocQueue', icon: IconShieldCheck },
{ to: '/licence-review/type/CERTIFICATE_OF_PROFICIENCY', label: 'nav.copQueue', icon: IconShieldCheck },
{ to: '/seaman-book-queue', label: 'nav.seamanBookQueue', icon: IconBook2, soon: true },
- { to: '/endorsement-queue', label: 'nav.endorsementQueue', icon: IconRubberStamp, soon: true },
+ { to: '/licence-review/type/ENDORSEMENT_COC', label: 'nav.endorsementCocQueue', icon: IconRubberStamp },
+ { to: '/licence-review/type/ENDORSEMENT_GOC', label: 'nav.endorsementGocQueue', icon: IconRubberStamp },
{ to: '/medical-verification', label: 'nav.medicalVerification', icon: IconHeart },
],
},
diff --git a/apps/backoffice/src/app/router/index.tsx b/apps/backoffice/src/app/router/index.tsx
index 9837201f5..0ece345bd 100644
--- a/apps/backoffice/src/app/router/index.tsx
+++ b/apps/backoffice/src/app/router/index.tsx
@@ -19,8 +19,6 @@ import { ConfigurationPage } from '../features/configuration/pages/Configuration
import { LocationPage } from '../features/location/pages/LocationPage';
import { AnalyticsPage } from '../features/analytics/pages/AnalyticsPage';
import { ApplicationReviewPage } from '../features/applications/pages/ApplicationReviewPage';
-import { EndorsementQueuePage } from '../features/endorsement/pages/EndorsementQueuePage';
-import { EndorsementReviewPage } from '../features/endorsement/pages/EndorsementReviewPage';
import { MedicalVerificationPage } from '../features/medical-verification/pages/MedicalVerificationPage';
import { PaymentConfigPage } from '../features/payment-config/pages/PaymentConfigPage';
import { SeafarerRegistryPage } from '../features/seafarer-registry/pages/SeafarerRegistryPage';
@@ -73,8 +71,9 @@ const router = createBrowserRouter([
// CoC/CoP review happens in the config-driven licence queue.
{ path: 'coc-queue', element: },
{ path: 'coc-queue/:id', element: },
- { path: 'endorsement-queue', element: },
- { path: 'endorsement-queue/:id', element: },
+ // Endorsement review happens in the config-driven licence queue.
+ { path: 'endorsement-queue', element: },
+ { path: 'endorsement-queue/:id', element: },
{ path: 'medical-verification', element: },
{ path: 'payment-config', element: },
{ path: 'seafarer-registry', element: },