Den som gör affärer i Österrike känner till frågorna: Stämmer firmanamn och adress hos min nya kund? Finns företaget fortfarande kvar i företagsregistret (Firmenbuch), eller är det i likvidation? Har ett insolvensförfarande inletts mot en kund som jag har levererat till i två år? Svaren finns i justitieministeriets företagsregister (Firmenbuch), men knappast någon tittar efter regelbundet. I Odoo läggs kontakten upp en gång, och därefter åldras den.
För det har vi utvecklat modulen Firmenbuch för partner (partner_firmenbuch_at). Den förbinder Odoo-kontakter med företagsregistret och med BEV:s officiella adressregister. Den är skriven för Odoo 19 och finns som fri programvara under LGPL-3-licensen gratis på GitHub:
github.com/Alex0176/odoo-partner-firmenbuch-at
Innehåll i det här inlägget
- Problemet: Stamdata som ingen underhåller
- Vad modulen gör
- Förslag i stället för att skriva över
- Varningar: insolvens, likvidation, bokslut
- Adresskontroll med BEV:s adressregister
- Teknisk implementering
- Vad den riktiga tjänsten har lärt oss
- Installation och konfiguration
- Dataskydd: Vad modulen skickar till vem
- Tester
- Begränsningar och juridisk anmärkning
- Vanliga frågor
- Stöd från Biricon IT Services
Problemet: Stamdata som ingen underhåller
En kontakt i Odoo skapas oftast under tidspress: namn, ungefärlig adress, kanske ett momsregistreringsnummer (UID). Det räcker för den första offerten. Det räcker inte för fakturor som juridiskt korrekt måste vara adresserade, och absolut inte för att märka att något har förändrats hos kunden. I praktiken visar sig fyra luckor:
- Ofullständiga stamdata. Firmenbuch-nummer, domstol och bolagsform saknas nästan alltid, eftersom uppslagningen är handarbete.
- Felaktiga stavningar. Firmanamn utan bolagsform, stavfel i gata eller ort, förväxlat postnummer. Det märker man först när posten kommer i retur.
- Ingen bevakning. Om en domstol inleder ett insolvensförfarande eller en kund upplöser sitt bolag får Odoo inte veta något om det. Försäljningen fortsätter leverera mot faktura.
- Spridda källor. Företagsregister, årsredovisningar och adressregister finns på olika ställen. Den som vill kontrollera dem kopierar data för hand mellan webbläsarfönster.
Vad modulen gör
- Nya företag slås upp. Om någon skapar en kontakt som företag (land Österrike eller tomt) söker modulen inom några minuter i företagsregistret. Finns det exakt en träff kompletteras tomma fält: gata, postnummer, ort, land, Firmenbuch-nummer, domstol och bolagsform.
- Avvikelser föreslås, skrivs aldrig över. Om det i kontakten står något annat än i registret skapas ett ändringsförslag som en medarbetare godkänner fält för fält.
- Sökning i företagsregistret på kontakten. På fliken Firmenbuch hittar sökningen företag via namn, även om den automatiska träffen inte var entydig.
- Daglig övervakning. Modulen frågar varje dag vilka företag och handlingar som har ändrats i registret och kontrollerar berörda kunder. Dessutom kontrolleras varje företag fullständigt på nytt med inställbara intervall.
- Varningsnivåer. Inledda insolvens- och saneringsförfaranden (ur registrets rättsfakta), likvidation, avregistrering, negativt eget kapital och en låg soliditet identifieras och görs synliga på kontakten.
- Adresskontroll. Österrikiska adresser kontrolleras lokalt mot det officiella adressregistret från Bundesamt für Eich- und Vermessungswesen (BEV).
- Registerdata på kontakten. Domstol, bolagsform, verkställande direktörer och rättsfakta finns på fliken Firmenbuch. De speglar registret och uppdateras direkt.
- Meddelanden bara internt. Alla meddelanden går till den interna Discuss-kanalen Firmenbuch och till kontaktens chatter. En kontrollkörning över många företag skapar ett samlingsmeddelande i stället för ett per företag. Till kunder skickar modulen aldrig något.
Förslag i stället för att skriva över
Officiella data är inte automatiskt de bättre uppgifterna för din verksamhet: Kanske står leveransadressen medvetet i kontakten, kanske har ett kortnamn införts. Därför ändrar modulen aldrig befintliga värden på egen hand. Den kompletterar bara tomma fält och skapar vid avvikelser ett förslag.
Under Kontakter → Firmenbuch → Firmenbuch-förslag ser du per fält det aktuella värdet och registervärdet. Fält som du inte vill överta lämnar du avmarkerade. Med Överta valda skrivs bara de markerade fälten, med Avvisa förfaller förslaget. Ett nytt förslag ersätter äldre öppna förslag för samma kontakt, så att inga föråldrade värden tillämpas.
Varningar: insolvens, likvidation, bokslut
Modulen skiljer mellan tre nivåer:
- Utan anmärkning: Det finns inget att rapportera.
- Varning (gul): I registret finns giltiga poster om likvidation, upplösning, avveckling, avregistrering eller fusion, företaget är markerat som avregistrerat, eller ett tidigare insolvensförfarande har hävts de senaste åren (standard tre år, inställbart). Eller så visar årsredovisningen negativt eget kapital, en soliditet under 8 % (standardvärde med utgångspunkt i § 23 URG, inställbart), en årsförlust eller en omsättningsminskning på 25 % eller mer.
- Kritisk (röd): Ett insolvens-, konkurs- eller saneringsförfarande har inletts och ännu inte hävts, eller en ansökan har avslagits på grund av brist på kostnadstäckande tillgångar. Det senare räknas som betalningsoförmåga.
På kontakten visas en färgad banner, i kontaktlistan en anmärkning, och i sökningen finns filter för Firmenbuch-varning och Firmenbuch kritisk. Blir en kund kritisk får ansvarig säljare (i andra hand administratören) en aktivitet Firmenbuch: Kontrollera kunder, och kanalen Firmenbuch får ett meddelande.
Rättsfakta. Insolvensförfaranden står i registret inte i företagstexten, utan som rättsfakta med datum, ärendenummer och domstol. Modulen läser dem, kopplar inledande och hävande till samma ärendenummer och visar dem på kontakten som en lista. På så sätt blir ett hävt förfarande efter några år bara information, ett pågående är rött.
Årsredovisningar. Om den senaste årsredovisningen finns som XML läser modulen ut eget kapital, årsresultat, balansomslutning och omsättning och beräknar soliditeten, omsättningsförändringen och storleksklassen enligt § 221 UGB (även mikroföretag). Små bolag behöver inte offentliggöra sin omsättning, och då visar modulen ingen. Deras resultat härleds ur bokslutsvinsten (Bilanzgewinn) minus vinstöverföringen från föregående år och markeras som en uppskattning. Positionsnamnen som söks efter är inställbara, eftersom XML-strukturen skiljer sig beroende på formulär.
Adresskontroll med BEV:s adressregister
BEV tillhandahåller adressregistret som öppna data (Adresse Relationale Tabellen – Stichtagsdaten, ny stickdag två gånger om året, kostnadsfritt att använda med källhänvisning). Modulen laddar ner utdraget via den officiella INSPIRE-ATOM-tjänsten, omkring 120 MB med ungefär 2,5 miljoner adresser, och importerar det till egna, slimmade tabeller.
Därefter kontrolleras varje österrikisk företagsadress med gata lokalt vid skapandet och vid varje ändring: postnummer, gata, husnummer, ort och förbundsland. Ingen adress skickas till någon tjänst. Resultatet visas som en markering under adressen:
- Giltig: Adressen finns så i registret.
- Husnummer okänt: Gata och ort stämmer, men husnumret gör det inte.
- Rättelse föreslås: Stavfel i gata eller ort, fel postnummer. Rättelsen finns som förslag.
- Hittades inte: Registret känner inte till den här adressen.
Ett tomt förbundsland kompletteras direkt. Privata kontaktadresser (typ Privatadress) kontrolleras inte. Källhänvisningen © Österreichisches Adressregister, Stichtagsdaten vom … står med den aktuella stickdagen i inställningarna. Uppdateringen körs varje vecka, men laddar bara ner om BEV har publicerat en nyare stickdag.
Teknisk implementering
Åtkomsten till registret
Justitieministeriet erbjuder företagsregistret via FBW-WebServices (HVD) på JustizOnline som ett SOAP-gränssnitt. Åtkomsten är kostnadsfri, men kräver en API-nyckel som man ansöker om med ID Austria under Informationsweiterverwendung. Nyckeln skickas med i HTTP-huvudet X-API-KEY. Modulen använder tjänsten direkt, utan screen scraping.
Klienten models/firmenbuch_client.py är ren Python utan Odoo-beroende. Den känner till förfrågningarna SUCHEFIRMAREQUEST, AUSZUG_V2_REQUEST, SUCHEURKUNDEREQUEST, URKUNDEREQUEST samt VERAENDERUNGENFIRMAREQUEST och VERAENDERUNGENURKUNDEREQUEST. Därigenom kan den testas med sparade svar. Förfrågningar ställs med 0,3 sekunders mellanrum, ändringsförfrågningar i block om sju dagar.
Tolkning av utdraget
Ur utdraget används bara poster som fortfarande är giltiga (attributet AUFRECHT inte false). Namnet kommer från datakännetecknet FI_DKZ02, adressen från FI_DKZ03, säte från FI_DKZ06 och bolagsformen från FI_DKZ07. Dessutom kommer domstol, webbadress, de företrädesberättigade personerna och rättsfakta. För varningsnivån genomsöks texterna i alla giltiga poster efter de inställbara nyckelorden:
DEFAULT_CRITICAL = "Konkursverfahren, Insolvenzverfahren, Sanierungsverfahren, Konkurs eröffnet, ..."
DEFAULT_WARNING = "Liquidation, aufgelöst, Auflösung, Abwicklung, Löschung, gelöscht, Verschmelzung, in Liqu."
Fördelen med nyckelordskontrollen: Den fungerar oberoende av i vilket fält registret för en händelse. Nackdelen står i avsnittet Begränsningar.
Övervakning
Modulen skapar tre schemalagda åtgärder:
- Slå upp nya företag (var 10:e minut, upp till 20 kontakter per körning). Dessutom startas den direkt vid skapandet.
- Övervaka företag (dagligen 04:30). Frågar efter ändrade företag och handlingar sedan senaste körningen (högst 30 dagar tillbaka), kontrollerar berörda kunder och därefter upp till 50 kunder vars senaste kontroll ligger längre tillbaka än den inställda fristen. Varje företag sparas i en egen transaktion, så att ett fel inte förlorar tidigare resultat. Körningens resultat kommer som ett samlingsmeddelande i kanalen.
- Uppdatera adressregistret (varje vecka 03:15).
Utan API-nyckel återvänder de två första omedelbart. En kontrollsumma per företag förhindrar att oförändrade utdrag tolkas på nytt.
Adressregistret
BEV-data finns i tre tabeller (bev.locality, bev.street, bev.address) med ett index på postnummer, gatukod och husnummer. Importen körs via COPY i en transaktion, tabellerna ersätts alltså i ett enda steg. Husnummer normaliseras till registrets stavning (51-55, 12a). Med husnummer upptar tabellerna omkring 400 MB i databasen. Den som inte vill det stänger av Kontrollera husnummer och klarar sig med omkring 150 000 rader.
Vad den riktiga tjänsten har lärt oss
En modul som bara är kontrollerad mot egenskrivna testsvar räknas ännu inte som färdig. Därför har vi kontrollerat klienten mot den riktiga tjänsten före publiceringen, med nyckeln för vårt eget företag. Därvid upptäcktes flera avvikelser från våra antaganden, som vi har åtgärdat:
- Bara kortinformationen. Utdraget kan med den här nyckeln bara hämtas i omfattningen Kurzinformation. Förfrågningar med Vollinformation avvisas av tjänsten. I version 1.0.0 hade den dagliga körningen fortfarande frågat fel, version 1.1.0 åtgärdar det. Ur personerna övertar modulen bara namnen på de företrädesberättigade verkställande direktörerna; delägare och personadresser läses inte.
- Gata och husnummer separat. Adressen kommer som
STRASSEochHAUSNUMMERi separata element, inte som en text. Modulen sätter ihop båda. - Domstol i Vollzug. Den behöriga domstolen står inte i företagsdelen, utan i utdragets sista
VOLLZ-block. - Avregistrerade företag. Ett avregistrerat företag känner man igen på ett attribut (
MIT_FIRMA_GELOESCHT_DURCH_VNR) och inte på en text. Modulen gör av det resultatet Företag avregistrerat, som utlöser en varning. - Företagsnamnet är inte sökordet. Sökningen jämför namnets början. ”Muster GmbH” ger ingen träff om registret skriver ”Muster Gesellschaft m.b.H.”; företag i likvidation har ”in Liqu.” i namnet, och i kontaktnamnet står ibland fortfarande
&. Modulen upprepar därför sökningen utan bolagsform och jämför namn utan stavningsvarianter av bolagsformen, utan HTML-tecken och utan tillägget ”in Liqu.”. En enskild träff övertas bara om dess namn börjar som kontaktens. - Handlingsändringar utan Firmenbuch-nummer. Listan över ändrade handlingar innehåller bara en nyckel. Firmenbuch-numret (utan kontrollbokstav) står i början av den nyckeln. Modulen kopplar ändringarna till kunderna via den.
För var och en av dessa punkter finns nu ett automatiserat test med ett efterbildat svar.
Testet på vårt eget kundregister
Efter version 1.1.0 har vi prövat modulen på vårt eget kundregister. Först kördes bara en läsande namnsökning, därefter kopplingen av de entydiga träffarna. Ingenting ändrades utan hänsyn till befintliga värden: tomma fält kompletterades, avvikelser finns som förslag för godkännande, och inte ett enda e-postmeddelande skickades ut. Resultatet, utan att nämna enskilda företag:
- 438 företagskontakter med kundstatus i Österrike eller utan land söktes.
- 138 av dem kopplades entydigt i företagsregistret. Ytterligare 18 hade en entydig namnträff men en annan adress i registret (flytt eller företag med samma namn) och lämnades därför orörda. 2 namn är flertydiga.
- Omkring 280 hittade vi inte eller bara som delträffar. Det är privatpersoner, enskilda firmor, utländska företag, kontakter som bara anger ett varumärke eller en ort samt företag vars namn i kontakten avviker från registreringen, till exempel för att en annan bolagsform står där. För dem återstår den manuella Firmenbuch-sökningen.
- 63 ändringsförslag uppstod, för det mesta för gata och husnummer (stavning) och landet.
- 66 varningar, ingen kritisk nivå. 36 företag är markerade som avregistrerade i registret (9 av dem även i likvidation), 2 hade ett numera hävt insolvensförfarande och hos 42 stack årsredovisningen ut: låg soliditet, förlust eller omsättningsminskning. Ett avregistrerat företag är inte automatiskt en förlorad kund, men en anledning att kontrollera adress och fakturamottagare.
Två lärdomar av detta: Ett kundregister från verklig drift är ett mycket bättre test än något efterbildat svar. Vi hittade därvid fel i namnsökningen, som är åtgärdade i version 1.1.1 (se ovan). Och träffprocenten beror starkt på hur noggrant kontakterna är namngivna: Den som skriver firmanamnet så som registret för det hittas på ett tillförlitligt sätt.
Installation och konfiguration
Förutsättningar: Odoo 19.0 med standardapparna Kontakter och Discuss, Python-paketet requests (finns i varje Odoo-installation) och utgående HTTPS-åtkomst till justizonline.gv.at och data.bev.gv.at. Modulen har inga beroenden utanför standardapparna, den drar alltså inte med sig några ytterligare moduler.
- Lägg mappen
partner_firmenbuch_atiaddons_path, uppdatera applistan och installera modulen, i produktionssystem helst först på en testdatabas. - Modulen skapar Discuss-kanalen Firmenbuch (interna användare) och lägger in alla administratörer. Dessutom skapas de tre schemalagda åtgärderna.
- Ansök om API-nyckel: JustizOnline (ID Austria), Informationsweiterverwendung, API FBW.
- Inställningar → Firmenbuch: Ange nyckeln och Testa anslutningen. Välj därefter kanal, alternativ, nyckelord och positionskoder.
odoo-bin -c /etc/odoo/odoo.conf -d <datenbank> -i partner_firmenbuch_at --stop-after-init
Viktigt i produktionssystem: Den första körningen av adressregisteruppdateringen startar automatiskt natten efter installationen kl. 03:15 och laddar ner omkring 120 MB. Därefter kontrolleras alla österrikiska kontakter; avvikelser visas som förslag och som ett meddelande i kanalen. Den som inte vill det inaktiverar i förväg den schemalagda åtgärden Adressregister (BEV): uppdatera eller stänger av Kontrollera österrikiska adresser i inställningarna.
Massimporter: Importera med kontextnycklarna fb_no_lookup=True och bev_no_check=True. Annars skulle varje importerat österrikiskt företag noteras för en registerförfrågan (20 per tio minuter) och varje adress kontrolleras vid skapandet.
Dataskydd: Vad modulen skickar till vem
- Personuppgifter: Namnen på verkställande direktörer är personuppgifter, även om de står offentligt i registret. Modulen sparar dem bara för att sköta affärsrelationen. Den som inte vill det raderar fältet eller använder det inte.
- Företagsregistret: Bara namnet eller Firmenbuch-numret för kontakter som är markerade som företag (utan överordnat företag, land Österrike eller tomt) skickas till
justizonline.gv.at, tillsammans med API-nyckeln. Privatpersoner och kontaktpersoner hos ett företag skickas aldrig. - Adressregistret: Bara det offentliga utdraget laddas ner. Kundadresser lämnar inte systemet.
- Inga kundmejl: Meddelanden går till den interna kanalen, till chattern och som aktivitet till medarbetare.
- Nyckel: API-nyckeln är bara synlig för administratörer.
Företagsregistret är ett offentligt register. Vidareutnyttjandet av data omfattas av villkoren för Informationsweiterverwendung från JustizOnline.
Tester
Modulen levereras med 18 automatiserade tester. De arbetar med efterbildade registersvar och ett miniatyradressutdrag och behöver därför varken API-nyckel eller nätverk:
- Normalisering av Firmenbuch-numret
- Tolkning av utdraget (namn, adress, domstol, verkställande direktörer, avregistrerat företag, ogiltiga poster ignoreras)
- Namnjämförelse: stavningsvarianter av bolagsformen, ”in Liqu.”, HTML-tecken, ingen träff för ett främmande företag
- Årsredovisning: eget kapital, resultat, balansomslutning
- Nytt företag hittas, tomma fält kompletteras, avvikelser föreslås, förslag tillämpas delvis
- Övervakning: inlett insolvensförfarande sätter nivån till kritisk och skapar aktiviteten, ett hävt förfarande ger en varning, kontaktpersoner kontrolleras inte särskilt
- Handlingsändringar kopplas via nyckeln
- Utan API-nyckel frågas ingenting
- Adresskontroll mot miniatyrutdraget
odoo-bin -d <testdatenbank> -i partner_firmenbuch_at \
--test-enable --test-tags=/partner_firmenbuch_at --stop-after-init
Den tyska översättningen finns i i18n/de.po.
Begränsningar och juridisk anmärkning
- En träff är en indikation, inte en juridisk upplysning. Statusen härleds ur nyckelord i giltiga registerposter. Kontrollera registret själv innan du fattar beslut om kredit eller leveransvillkor.
- Insolvensidentifieringen är bara testad med efterbildade fall. Modulen känner igen förfaranden på ord i rättsfaktas fritext (inledande, hävande, fastställd saneringsplan, brist på tillgångar). Deras format har vi efterbildat från ett riktigt registerutdrag, men något verkligt insolvensfall hade vi inte tillgång till under utvecklingen. En ovanlig formulering kan därför missas. Modulen ersätter inte den officiella Ediktsdatei.
- Årsredovisningar bara som XML. Rena PDF-inlämningar hoppas över. Hos mycket små bolag kan balansräkningen vara inlämnad i förkortad form, utan de siffror som modulen läser.
- Bara Österrike. Utländska företag efterfrågas inte. Företagswebbplatser står inte i registret och kompletteras inte.
- Automatisk koppling bara vid entydig träff. Finns det flera företag med samma namn frågar ett meddelande i kanalen efter den manuella Firmenbuch-sökningen.
- Gränssnitt kan ändras. Modulen är beroende av BMJ:s och BEV:s tjänster. Om slutpunkt, schema eller ATOM-flöde ändras kan en uppdatering bli nödvändig.
- Testad för Odoo 19. Utvecklad och testad för Odoo 19.0 Community. För andra versioner har vi inte kontrollerat den. Inlägget är ingen juridisk rådgivning.
Vanliga frågor
Kostar åtkomsten till registret något?
Enligt vår kännedom inte: FBW-WebServices för Informationsweiterverwendung är kostnadsfria, men kräver en API-nyckel som du ansöker om via JustizOnline. Avgörande är justitieministeriets aktuella villkor.
Skrivs befintliga kontaktuppgifter över?
Nej. Modulen fyller bara i tomma fält. Avvikande värden skapas som ett förslag som en medarbetare godkänner fält för fält.
Märker mina kunder något av kontrollen?
Nej. Alla meddelanden går till den interna kanalen, till kontaktens chatter och som aktivitet till medarbetare. Modulen skickar inga e-postmeddelanden till kunder.
Sparas verkställande direktörer eller delägare?
Namnen på de företrädesberättigade verkställande direktörerna ja (fältet Verkställande direktör på fliken Firmenbuch), delägare och personers adresser nej. Behandla namnen som personuppgifter.
Hur många av våra kunder hittar modulen?
Det beror på kundregistret. Hos oss var det 138 av 438 företagskontakter (omkring en tredjedel). Resten är privatpersoner, enskilda firmor, utländska företag och kontakter vars namn inte motsvarar firmanamnet. Siffrorna står i avsnittet Testet på vårt eget kundregister.
Kan jag hitta en kund utan Firmenbuch-nummer?
Ja. Fliken Firmenbuch har knappen Firmenbuch-sökning med sökning på namnet. Modulen fyller bara i automatiskt när exakt ett företag matchar. Annars väljer du träffen själv.
Hur är det med företag i Tyskland eller Schweiz?
De efterfrågas inte. Modulen tittar bara på kontakter med land Österrike eller utan land.
Hur mycket minne behöver adresskontrollen?
Med husnummer ungefär 400 MB i databasen och vid importen ungefär 120 MB tillfälligt diskutrymme. Utan husnummerkontroll räcker ungefär 150 000 rader.
Vad gör jag om jag bara vill ha företagsregistret och ingen adresskontroll?
Stäng av Kontrollera österrikiska adresser i inställningarna och inaktivera den schemalagda åtgärden för adressregistret. Då laddas ingenting ner.
Under vilken licens står modulen?
Under LGPL-3. Du får använda, anpassa och vidareförmedla den. Fel och förbättringsförslag är välkomna som issue i GitHub-repositoryt .
Stöd från Biricon IT Services
Vi sköter Odoo-installationer för små och medelstora företag: från införande via anpassningar och migreringar till löpande drift. Om du vill hålla kundstamdata i Odoo rena, upptäcka kreditrisker tidigare eller granska en modul som den här och på ett säkert sätt ta den i produktion i din produktionsinstans, hjälper vi dig gärna. Fler egenutvecklingar hittar du i vår blogg, till exempel Produktset i offerten som avsnitt och Web RBL, spärrlistan för angreppstrafik.
Läget per den 3 november 2026. Modulversion 19.0.1.1.1. Exempeldata i bilderna är fritt valda och inga verkliga företag.