1. Kundens EDI
Kundens eget format och egen transport: SFTP, API, push eller pull. Särdragen stannar här, i kundens egen profil.
Constellation Cold Logistics Denmark driver kyllager i Danmark för livsmedelsproducenter, där varje kolli ska kunna spåras. Kundernas EDI-filer skrevs direkt in i lagersystemets databaser, kund för kund. Med Lobster-integration och en kanonisk datamodell har SublimTech byggt om integrationslandskapet, så att en ny kund är en mappning och lagersystemet kan bytas utan att kundkopplingarna påverkas.
Lösningen är designad och byggd av Jonatan Augustsson, Head of Consultants på SublimTech, och är i drift i dag. Här beskriver vi hela förloppet, från utgångsläge till plan.

Källa: SublimTechs eget projektmaterial om Constellation Cold Logistics Denmark. Onboardingsiffran är projektets mål för nya kundkopplingar, inte ett uppmätt genomsnitt.
Constellation Cold Logistics Denmark hette fram till 2025 Agri-Norcold. Företaget grundades 1964 i danska Hobro som slakteri och kylhus och växte till tio anläggningar i Danmark med omkring en tredjedel av landets samlade fryskapacitet. Anläggningen i Vejen är Nordeuropas största kyllager. År 2024 blev företaget en del av Constellation, Europas tredje största kyllageroperatör, med tio förvärv på fyra år i nio länder.
Kunderna är livsmedelsproducenter med allt från djupfryst till kyld mjölk, och många av dem levererar kött. Kött är myndighetsreglerat, så spårningsdata för varje enskilt kolli är inte ett önskemål utan ett krav. Det är den ramen som integrationen ska fungera inom: många kunder, många format och data som ska kunna följas tillbaka till källan.
Utgångsläget var en gemensam SFTP-mapp på en lokal server, kopplad till AS/400. Alla kunder lämnade filer på samma ställe, och filerna hämtades och skrevs direkt in i databastabellerna, meddelande för meddelande. Det fanns inget gemensamt lager och ingen gemensam struktur. Varje kunds särdrag satt i den kod som skrev in deras filer i tabellerna, och en ny kund innebar att samma sak byggdes en gång till. En del kunder använde inte EDI alls.
Det var inte bara datamodellen som var odokumenterad. Det var rördragningen också.
Det är som att ärva ett hus utan ritningar, där hälften av rören sitter inne i väggarna. Innan man kan dra nya rör måste man ta reda på var de gamla faktiskt går.
Projektet kunde inte börja med en design. Det fick börja med frågor.
Riktiga produktionsfiler från varje kund lästes direkt in i en Lobster-profil. Därmed blev meddelandets struktur synlig med en gång, och mappningen kunde justeras löpande utan att något behövde driftsättas för att pröva en teori. EDI är bara en standard till namnet. Varje kunds implementering har sina egna särdrag, och de flesta är odokumenterade, så den enda pålitliga källan var datan själv.
Kärnan i lösningen är en kanonisk datamodell, på engelska en canonical data model eller CDM, för varje meddelandetyp: ordrar, leveransaviseringar, inleveranser, justeringar med flera. Det är ett standardiserat internt format som Constellation själva har full kontroll över. Modellen definierades utifrån stora mängder riktiga produktionsdata från de olika kunderna, analyserade med hjälp av AI, så att den håller generellt och inte är formad efter en enskild kunds särdrag. Den fastställer de fält som minst måste finnas för att en kund över huvud taget ska kunna kopplas på.
Se det som ett gemensamt arbetsspråk inom diplomatin. I stället för att varje land ska ha en tolk till varje annat land har varje land en tolk: från det egna språket till det gemensamma och tillbaka. Tillkommer ett nytt land tillkommer en tolk. De andra rör man inte.
| Nivå | Fält |
|---|---|
| Huvud | Ordernummer, kund-id, lager-id, orderdatum, önskat leveransdatum |
| Rader | Radnummer, artikelnummer, pall-id, kvantitet, enhet, lotnummer, bäst före |
| Kolli | Per pall, när kunden är kollispårad: kolli-id, kvantitet, lotnummer, bäst före, spårbarhetsreferens |
| Meta | Källsystem, modellversion, status, skapad |
Två nivåer i raderna, pall och under den kolli, gör att spårbarheten kan ligga på den nivå som den enskilda kunden spåras på. Onboarding är just den här övningen, en enda gång: kundens fält till modellen, in och ut. Allt längre fram i kedjan finns redan.
Rad 1: artikelnummer 4408, 120 kartonger, 3 pallar
Rad 2: artikelnummer 9120, 1 800 kg, blandade pallar
Strukturen varierar från kund till kund. Sällan en rad per pall, och varje kund har sin egen logik.
Rad 1: artikelnummer 4408, pall PAL-04007, 36 kolli CTN-0001 till CTN-0036, vart och ett med lot och bäst före
Rad 2: artikelnummer 4408, pall PAL-04014, 36 kolli CTN-0037 till CTN-0072
En rad per pall, och varje pall kan rymma många kolli som spåras var för sig. Eftersom modellen är Constellations egen upprätthålls båda nivåerna på ett ställe, centralt.
Varje led i kedjan är en egen Lobster-profil, frikopplad från de andra. Utgående meddelanden följer samma kedja åt motsatt håll. En ny kund är en mappning som sedan kopplas in i den befintliga processen. Samma flexibilitet gäller åt andra hållet: ett byte av lagersystem, eller ett extra lagersystem som följer med ett förvärv.
Kundens eget format och egen transport: SFTP, API, push eller pull. Särdragen stannar här, i kundens egen profil.
En intern modell per meddelandetyp, som SublimTech och Constellation själva definierar och äger. Allt längre fram i kedjan känner bara till den här modellen.
Modellen översätts till det som lagersystemet förväntar sig. Byts lagersystemet är det bara den här mappningen som ändras.
Lagersystemet tar emot meddelandena i sitt eget format. Utgående meddelanden följer samma kedja åt motsatt håll.
Loggning och spårbarhetsfält är gemensamma objekt i Lobster som alla profiler refererar till, i stället för att byggas om i varje profil. Loggningen fångar samma detaljer i samma kolumner i alla flöden, så att supporten kan läsa vilket flöde som helst utan att lära sig det först. En ändring i loggningen eller spårbarheten görs på ett ställe, inte på tjugo.
Varje meddelande i modellen bär sina egna metadata: källsystem, modellversion, status och tidsstämpel. Går något fel (felaktiga data från en kund, ett fält som saknas, en leverans som misslyckas) kan det spåras till exakt vilket meddelande, vilken kund och vilken punkt i kedjan. Möjligheten att bevisa och spåra vad som hände med data, och inte bara flytta dem, var ett av de viktigaste skälen till att Constellation valde Lobster som mellanled.
Tidigare innebar en enskild kunds onboarding månader av fram och tillbaka, oftast sex till åtta månader. Med modellen på plats är målet för en ny koppling omkring två månader, och den första kunden kopplas just nu på enligt den nya modellen. Planen är fler danska kundkopplingar och därefter koncernens andra länder. Det första lagret går enligt planen i drift på Infor WMS i november 2026, och efter månader av tester håller både standardprocesserna och undantagen runt dem.
Varje kund är implementerad på sitt eget sätt, särskilt i fråga om vad de klarar och inte klarar på EDI-sidan, så det finns alltid specialfall och rapporter som bara enstaka kunder behöver. Så länge logiken kan förklaras och lagersystemet kan leverera rådata till Lobster bygger och levererar Lobster rapporten.
Lagerlistor i Excel, uppdelade per pall, per artikel med mera, i olika mallar efter behov. Lagersystemet kan bara skicka en justering i taget, så en justering som gäller många pallar utlöser 40-50 enskilda meddelanden. Lobster samlar dem i en databas, och en tidsstyrd profil skickar en samlad rapport per kund och lager, schemalagd efter vad kunden kan hantera.
Lobster läser elpriserna från nätet timme för timme. Utifrån priset kan frysar slås av och på automatiskt, så att driften reagerar på prissvängningar i realtid.
Det började som en kollegas lösning: ifyllda PDF:er i stället för handstämplade pappersintyg med vattenmärke. I dag genererar Lobster intygsdata som JSON till en partner som rapporterar digitalt till Fødevarestyrelsen, den danska livsmedelsmyndigheten. Bara två till tre typer av intyg finns fortfarande på papper.
Allt ovan är byggt och i drift. Det som följer är riktningen, inte leveransen.
Lösningen var från början tänkt för flera lager och flera länder, uppdelad per kund som en egenskap i strukturen, inte som ett tillägg. Varje förvärv i koncernen kommer med sina egna system och sin egen version av AS/400, precis som Danmark gjorde. Mönstret som har tagits fram här är alltså inte en dansk lösning, utan en återanvändbar ritning för nästa förvärv.
Har ni ett liknande landskap med många kunder, många format och kunskap som sitter hos ett fåtal personer? Då är en gemensam datamodell ofta det första steget.
Boka ett samtal om era integrationerEtt gemensamt internt format per meddelandetyp, till exempel ett sätt att beskriva en order, som alla kundformat översätts till och som lagersystemets format översätts från. Den definierar de fält som minst måste finnas för att en kund över huvud taget ska kunna kopplas på. Fördelen är att varje kund bara behöver mappas en gång och att ingenting längre fram i kedjan behöver känna till den enskilda kundens särdrag. På engelska heter det canonical data model, förkortat CDM. Det ska inte förväxlas med Microsofts Common Data Model, som är något annat.
Därför att antalet kopplingar då växer med varje kombination av kund och system, och därför att varje kunds särdrag hamnar i den kod som skriver till lagersystemet. Det var precis utgångsläget hos Constellation: varje ny kund innebar att samma sak byggdes en gång till. Med modellen emellan är en ny kund en mappning, och ett byte av lagersystem påverkar inte kunderna.
Ja. Mönstret är detsamma oavsett om det är ett lager, ett affärssystem eller en webbshop i ena änden: kundformat, gemensam modell, systemformat. Det som är speciellt för kyllager och livsmedel är spårbarheten på pall- och kollinivå, och den är inbyggd i modellen som återanvändbara fält i stället för som regler i varje flöde.
Ingenting. Kunderna talar bara med den kanoniska modellen, så ett nytt lagersystem innebär en ny mappning från modellen till det nya systemet, medan alla kundkopplingar lämnas orörda. Ett extra lagersystem, till exempel från ett förvärv, är ett tillägg, inte en migrering.
Vi går gärna igenom hur en kanonisk datamodell skulle se ut hos er och vad den skulle betyda för onboarding av nya partner.