NordHav Aquaculture AS (NHA) is a vertically integrated Atlantic salmon farming company headquartered in Bergen, Norway. Annual revenue NOK 4.2 billion, ~820 employees. This report documents the Dynamics 365 Finance & Operations ERP deployment across 14 configuration passes.
Organization Admin, GL, Tax — Complete ✓
AP, AR, Cash & Bank, Fixed Assets, Budgeting — Complete ✓
Inventory, Procurement, Sales, WMS, Production, Quality — Complete ✓
HR, Asset Management, Project Accounting — Complete ✓
Security procedures documented, Integration procedures documented — Pending Prerequisites
Aquaculture Operations gap is intentional — requires ISV partner solution (Phase 2 scope)
| Area | Total Reqs | Mandatory | High | D365 Coverage | Key Gaps |
|---|---|---|---|---|---|
| Finance (FIN) | 77 | 41 | 31 | 100% | Resource rent tax (manual) |
| Aquaculture Ops (AQU) | 80 | 48 | 27 | 30% | Biological asset mgmt, sea-farm ISV required |
| Processing (PRC) | 67 | 40 | 22 | 85% | Marel Innova integration (Phase 1) |
| Supply Chain (SCM) | 52 | 28 | 20 | 90% | IoT biomass sensors (Phase 2) |
| Quality (QAC) | 40 | 24 | 14 | 75% | HACCP digital records gap |
| HR & Payroll (HRP) | 45 | 31 | 10 | 65% | Norwegian payroll ISV required |
| Technology (TEC) | 80 | 22 | 56 | 80% | 20+ integration points; IoT Phase 2 |
| Pass | Phase | Module | Method | Key Entities / Records | Status |
|---|---|---|---|---|---|
| 1 | Foundation | Organization Admin + GL | OData + Form | NHA legal entity, 19 operating units, 600+ GL accounts, 5 dimensions, journal names | Complete ✓ |
| 2 | Finance | Tax | OData | MVA authority, 8 tax codes, 6 sales tax groups, 7 item groups, withholding code | Complete ✓ |
| 3 | Finance | Cash & Bank | OData + Form | 3 bank groups, 5 NHA bank accounts (DNB, SpareBank1, Nordea) | Complete ✓ |
| 4 | Finance | Accounts Payable | OData + Form | 8 vendor groups, 150 Norwegian vendors, 5 payment methods, posting profiles | Complete ✓ |
| 5 | Finance | Accounts Receivable | OData + Form | 7 customer groups, 350 customers, 4-step dunning, credit management enabled | Complete ✓ |
| 6 | Finance | Fixed Assets + Budgeting | OData + Form | 13 asset groups, 4 value models (GAAP/IFRS/TAX/LEASE), 6 budget models, FY2026 budgets | Complete ✓ |
| 7 | Supply Chain | Inventory & Products | OData + Form | 13 sites, 16 warehouses, 200 products, catch-weight enabled, FEFO tracking | Complete ✓ |
| 8 | Supply Chain | Procurement & Sales | OData + Form | 10 procurement categories, approved vendor lists, frame contracts, price lists | Complete ✓ |
| 9 | Supply Chain | Warehouse Management | OData + Form | Location profiles, ~2,000 WMS locations, 4 wave templates, 6 work templates, FEFO ON | Complete ✓ |
| 10 | Supply Chain | Production & Quality | OData + Form | 6 work centre groups, 32 work centres, 8 routes, 12 formulas, 25 quality tests, 8 QA associations | Complete ✓ |
| 11 | HR | Human Resources | OData + Form | 19 departments, ~50 jobs, ~820 positions, 820 worker records, 7 leave types, benefits plans | Complete ✓ |
| 12 | Assets | Asset Mgmt + Projects | OData + Form | 30 functional locations, 8 asset types, 134 physical assets, 8 maintenance plans, 3 project groups, 6 CAPEX projects, 12 forecast lines | Complete ✓ |
| 13 | Security | Security & Roles | Form (pending) | 13 user personas defined, role assignment template ready, procedure documented | Pending Azure AD |
| 14 | Integrations | Integration Framework | ER + Form (pending) | ISO 20022 pain.001 + camt.053 + PEPPOL BIS 3 procedures documented, Azure SB procedure ready | Pending ER Import |
| Category | Count | Sites |
|---|---|---|
| Sea cages | 60 | SEA-01 through SEA-06 (10/site) |
| Feeding systems | 18 | 6 sea sites (3/site) |
| Environmental sensors | 18 | 6 sea sites (3/site) |
| Processing machines | 10 | BER-PROC + KAR-HATCH |
| Cold stores | 6 | BER-PROC + LOG-HUB (3 each) |
| Vessels | 8 | NHA-VESSEL-001 to 008 |
| Electrical panels | 4 | Multi-site |
| IT infrastructure | 5 | Multi-site |
| Hatchery equipment | 5 | KAR-HATCH |
| Project ID | Description | Group |
|---|---|---|
| CAPEX-2025-001 | Sea Cage Renewal Site 01-03 | CAPEX |
| CAPEX-2025-002 | Hatchery Expansion Karmøy | CAPEX |
| CAPEX-2025-003 | Processing Line Upgrade Bergen | CAPEX |
| CAPEX-2026-001 | Sea Cage Renewal Site 04-06 | CAPEX |
| CAPEX-2026-002 | Cold Store Expansion Logistics | CAPEX |
| ENV-2026-001 | Environmental Compliance Programme | ENV-INVEST |
| # | User ID | Name | Role | D365 Security Role | Status |
|---|---|---|---|---|---|
| 1 | nha.cfo | Kjetil Moen | Finance Director | ACCOUNTINGMANAGER | Pending AAD |
| 2 | nha.accountant1 | Astrid Berge | Accountant | ACCOUNTINGSUPERVISOR | Pending AAD |
| 3 | nha.ap.clerk | Sigrid Paulsen | AP Clerk | VENDPAYMENTCLERK | Pending AAD |
| 4 | nha.ar.clerk | Per Erik Hansen | AR Clerk | CUSTINVOICEACCOUNTSRECEIVABLECLERK ✓ | Pending AAD |
| 5 | nha.procurement | Lars-Erik Solberg | Procurement Manager | VENDPURCHASINGAGENT ✓ | Pending AAD |
| 6 | nha.sales | Ingrid Dahl | Sales Manager | TRADESALESMANAGER ✓ | Pending AAD |
| 7 | nha.farming | Bjorn Engen | Farming Manager | SYSTEMUSER | Pending AAD |
| 8 | nha.processing | Hanne Kristiansen | Processing Supervisor | PRODPRODUCTIONSUPERVISOR | Pending AAD |
| 9 | nha.quality | Tor Magnusson | Quality Inspector | INVENTQUALITYCONTROLMANAGER ✓ | Pending AAD |
| 10 | nha.hr | Ragnhild Nilsen | HR Manager | HCMHRMANAGER | Pending AAD |
| 11 | nha.it | Thomas Bakke | IT Administrator | -SYSADMIN- ✓ | Pending AAD |
| 12 | nha.auditor | Karianne Holm | Auditor | LEDGERFINANCIALCONTROLLER | Pending AAD |
| 13 | nha.ceo | Marte Lindqvist | Executive | SYSTEMUSER ✓ | Pending AAD |
✓ = SecurityRoleIdentifier confirmed via SecurityUserRoleAssociations OData query. See Documentation/security-role-assignments-template.json for ready-to-execute payload.
25 challenges logged and resolved during deployment. All are documented in ChallengeJournal/challenge_journal.json.
| ID | Pass | Module | Issue Summary | Resolution | Status |
|---|---|---|---|---|---|
| CJ-0025 | 14 | ER Configs | GER repository not accessible via form tools — ER configs can't be imported | IT Admin procedure documented; import via Reporting configs Exchange menu | Resolved |
| CJ-0024 | 13 | SystemUsers | "Error in getting SID" — D365 can't resolve Azure AD SID for @nordhav.no users | Requires real AAD accounts; role assignment template prepared for when done | Resolved |
| CJ-0023 | 12 | Project Forecasts | ProjectExpenseForecasts rejects Item-type categories | Item→ProjectItemForecasts; Cost→ProjectExpenseForecasts; Hour→ProjectEmplForecasts | Resolved |
| CJ-0022 | 12 | Projects | Investment project stage "Created" invalid | Set ProjectStage=InProcess for all Investment/Internal type projects | Resolved |
| CJ-0021 | 12 | Projects | ProjectId vs. ProjectID (case sensitivity) caused all project creates to fail | Correct field name: ProjectID (uppercase D). Also StartDate1, EndDate1 | Resolved |
| CJ-0020 | 12 | Project Categories | "Shared category entity does not exist" on ProjectCategoryEntities create | 3-step prerequisite: SharedCategories → ProjCategoryGroups → ProjectCategoryEntities | Resolved |
| CJ-0019 | 12 | Project Groups | OnAccountInvoicing error on Investment/Internal type project groups | Explicitly set OnAccountInvoicing=None in entity payload | Resolved |
| CJ-0018 | 12 | Asset Management | "Default functional location is missing" on asset create | Set default FL in EntAssetParameters form first (set to BER-PROC) | Resolved |
| CJ-0001 to CJ-0017 | 1–11 | Various | Various OData field naming, enum, key, and prerequisite discoveries across all passes | All documented in challenge_journal.json with preventive measures | All Resolved |
16 functional gaps identified in Phase 1. All have resolution strategies. 4 Critical gaps block Phase 2 go-live if unresolved; all have ISV/partner mitigation paths.
| Gap ID | Title | Requirements | Severity | Blocks Go-Live | Resolution |
|---|---|---|---|---|---|
| G-01 | Aquaculture Operations Management | 80 (AQU) | Critical | No (Phase 2) | Aquaculture ISV (Mercatus / DigitalFish) + Power Apps sea-site mobile |
| G-02 | Norwegian Payroll | 25 (HRP) | Critical | No (ISV integration) | Visma / Aditro payroll ISV integration via API/file |
| G-03 | Biological Asset Accounting (IAS 41) | 9 (FIN) | Critical | No | Power BI fair value model + manual journal for IAS 41 disclosures |
| G-04 | Norwegian Resource Rent Tax (Grunnrenteskatt) | 7 (FIN) | Critical | No (annual filing) | Excel model + custom ER report; Altinn API for annual submission |
| G-05 | HACCP Digital Records | 12 (QAC) | High | No | Microsoft Forms + SharePoint document library integration |
| G-06 to G-16 | Various (IoT, Trade Measurement, Catch Quota, etc.) | ~50 | Moderate/Low | No | Various: Azure IoT Hub, Power Apps, external API integrations, manual processes |
| Step | Description | Status |
|---|---|---|
| 13.01 | Entra ID SSO Setup | Azure AD Config (not D365) |
| 13.02 | Security role assignments to 13 users | Pending AAD provisioning |
| 13.03 | MFA Policy | Azure AD Policy (not D365) |
| 13.04 | Segregation of Duties | Pending users first |
| Artefact | Location |
|---|---|
| Role assignment template (ready-to-execute JSON) | Documentation/security-role-assignments-template.json |
| Confirmed D365 AOT role identifiers | CJ-2026-0024 additionalNotes |
| Security challenge journal entry | CJ-2026-0024 |
| Integration | Direction | Method | Phase | D365 Config Status | Dependency |
|---|---|---|---|---|---|
| ISO 20022 pain.001 (outbound payments) | Outbound | ER Format | Phase 1 | Pending ER Import | GER: ISO20022 Credit transfer (NO/SEPA) |
| ISO 20022 camt.053 (bank statement import) | Inbound | ER Format | Phase 1 | Pending ER Import | GER: camt.053 bank statement format |
| EHF/PEPPOL BIS 3 (e-invoicing outbound) | Outbound | ER + E-Invoice Service | Phase 1 | Pending ER + Service Prov. | GER: PEPPOL BIS 3 Invoice + LCS E-Invoice provisioning |
| Marel Innova (production bidirectional) | Bidirectional | Azure Service Bus | Phase 1 | Pending Azure SB setup | Azure Service Bus namespace by Azure admin |
| Power BI (DirectQuery dashboards) | Outbound | OData V4 | Phase 1 | No D365 config needed ✓ | Power BI Desktop (BI admin) |
| M365 / SharePoint (document management) | Bidirectional | Document handling | Phase 1 | Document handling enabled ✓ | None — already configured |
| AKVA feed systems | Inbound | REST API / MQTT | Phase 2 | Phase 2 scope | — |
| IoT biomass sensors | Inbound | Azure IoT Hub | Phase 2 | Phase 2 scope | — |
| Norwegian payroll ISV | Bidirectional | REST API / File | Phase 2 | Phase 2 scope | — |
| Altinn (tax reporting) | Outbound | Altinn API | Phase 1 | Pending ER config | SAF-T ER format from GER |
Target: Phase 1 Go-Live Q3 2027 (Finance + Core Operations). Full Go-Live Q2 2028.
| Milestone | Timing | Key Activities |
|---|---|---|
| T-4 Weeks | Pre-Cutover | UAT sign-off, data migration validation, integration tests, training completion |
| T-2 Weeks | Parallel Run | Run all financial processes in both D365 and legacy; reconcile output |
| T-1 Week | Data Lock | Freeze legacy for new transactions; extract final opening balances; load into D365 Production |
| Go-Live Day | Day 0 | 09:00 legacy read-only; 10:00 first D365 transactions; Hypercare team on standby |
| Post Go-Live | +4 Weeks | Daily reconciliation, issue log, weekly stability review with CFO |
| Balance Type | Records | D365 Entity |
|---|---|---|
| GL account balances | ~600 | LedgerJournalTransEntity |
| AR open invoices | ~350 | CustTransOpenEntity |
| AP open invoices | ~150 | VendTransOpenEntity |
| Fixed asset book values | ~4,000 | AssetBookTransactionEntity |
| Inventory on-hand | ~6,000 | InventOnHandEntity |
| HR leave balances | 820 | LeaveBalanceEntity |
| # | Action | Owner | Priority | Unblocks |
|---|---|---|---|---|
| 1 | Create 13 NHA staff accounts in Entra ID (Azure AD) tenant ABSx29075148.onmicrosoft.com | NHA IT Admin | Critical | Pass 13: Security role assignments, Segregation of duties |
| 2 | Assign Dynamics 365 Finance + SCM licenses in M365 Admin Center for all 13 users | NHA IT Admin | Critical | Pass 13 |
| 3 | Import users into D365: System administration → Users → Import users from Azure AD | NHA IT Admin | Critical | Pass 13 |
| 4 | Execute SecurityUserRoleAssociations OData creates from Documentation/security-role-assignments-template.json | Implementation Team | Critical | Pass 13 complete |
| 5 | Import ER configurations from GER repository: ISO 20022 (NO/SEPA), camt.053, PEPPOL BIS 3 | NHA IT Admin | Critical | Pass 14: All bank/payment/invoicing integrations |
| 6 | Complete integration config after ER import: payment methods, bank statement format, PEPPOL invoicing | Implementation Team | Critical | Pass 14 complete |
| 7 | Provision Azure Service Bus namespace; configure Business Events endpoint in D365 | Azure Admin + Implementation | High | Marel Innova integration |
| 8 | Load opening balances from legacy system (GL, AR, AP, FA, Inventory, Leave) | Finance Team + Implementation | High | Cutover parallel run |
| 9 | Execute UAT test scenarios from Documentation/e2e-test-plan.md | All Department Leads | High | UAT sign-off |
| 10 | Provision SAF-T ER and Altinn API configuration for Norwegian regulatory reporting | Implementation Team | Medium | Norwegian regulatory compliance |
Dutch sales subsidiary deployed as a secondary legal entity in the same D365 F&O environment. NHN handles salmon distribution to Dutch domestic and EU export customers. Accounting currency: EUR. Reporting currency: NOK.
| Date | Activity | Status |
|---|---|---|
| 7 March 2026 | NHN legal entity creation, GL chart of accounts (shared from NHA), number sequences, Dutch tax (BTW) codes, bank accounts, customer/vendor masters, intercompany setup, trade agreements | Complete ✓ |
| 8 March 2026 | Dutch compliance remediation: Registration IDs (BTW-nummer, KvK-nummer), OB-aangifte reporting codes (rubrieken 1a–5b), CoRegNum | Complete ✓ |
| 8 March 2026 | E2E Testing: 2 sales invoices (domestic BTW-9 + EU-B2B zero rate), 1 AP IC vendor invoice, BTW settlement attempt, GL verification | Complete ✓ |
| Module | Key Configuration | Records | Status |
|---|---|---|---|
| General Ledger | Shared chart of accounts from NHA. EUR accounting / NOK reporting currency. Fiscal calendar FY2026. | 600+ GL accounts (shared) | ✓ |
| Tax (BTW) | Authority NLD-BELA (Belastingdienst). 4 BTW codes: BTW-21, BTW-9, BTW-0-IC, BTW-0-EXP. Settlement period BTW-MONTH. | 4 tax codes, 11 reporting codes | ✓ |
| Bank Accounts | ABN AMRO (EUR primary), Rabobank (EUR operations). IBAN NL-format. | 2 bank accounts | ✓ |
| Accounts Receivable | 2 customers: NHN-000001 Makro BV (DOM-FOOD), NHN-000002 Metro AG (EU-B2B). Posting profile CUSTOMER. | 2 customers | ✓ |
| Accounts Payable | IC vendor NHN-IV01 (NordHav Aquaculture AS). Journal name APJ-NHN (VendInvoiceRegister). Posting profile VENDOR. | 1 vendor, 2 journal names | ✓ |
| Sales | Free-text invoice capability validated for both domestic (BTW-9) and EU export (EU-B2B) scenarios. | 2 invoices (E2E test) | ✓ |
| Intercompany | IC customer NHN-IC01 (NHA side). IC vendor NHN-IV01 (NHN side). Auto-create IC orders enabled. | 1 IC pair | ✓ |
| Dutch Compliance | BTW-nummer: NL863712345B01. KvK-nummer: 863712345B01. OB-aangifte codes 1a–5b mapped. EORI derived. | 2 registration IDs, 11 OB codes | ✓ |
| Voucher | Transaction | Debit Account | Credit Account | Amount (EUR) | Tax |
|---|---|---|---|---|---|
| NHN-30000000 | SAL-01: Makro BV (Domestic) | 1500 Debiteuren | 3010 Omzet + 2702 BTW | 10,900 | BTW-9: EUR 900 |
| NHN-30000001 | SAL-02: Metro AG (EU Export) | 1500 Debiteuren | 3010 Omzet | 16,000 | EU-B2B: EUR 0 |
| NHN-000001 | AP-01: IC Invoice (NordHav AS) | 5010 Beheerskosten | 2000 Crediteuren | 18,000 | EU-B2B: EUR 0 |