Den som driver forretninger i Østerrike, kjenner spørsmålene: Stemmer firmanavn og adresse til min nye kunde? Står selskapet fortsatt i foretaksregisteret (Firmenbuch), eller er det under avvikling? Er det åpnet insolvensbehandling mot en kunde jeg har levert til i to år? Svarene står i foretaksregisteret til justisdepartementet, men nesten ingen sjekker det regelmessig. I Odoo opprettes kontakten én gang, og deretter eldes den.
Til dette har vi utviklet modulen Firmenbuch für Partner (partner_firmenbuch_at). Den kobler Odoo-kontakter til foretaksregisteret og til BEVs offisielle adresseregister. Den er skrevet for Odoo 19 og er gratis tilgjengelig på GitHub som fri programvare under LGPL-3-lisensen:
github.com/Alex0176/odoo-partner-firmenbuch-at
Innholdet i dette innlegget
- Problemet: stamdata som ingen vedlikeholder
- Hva modulen gjør
- Forslag i stedet for overskriving
- Varsler: insolvens, avvikling, regnskap
- Adressekontroll med BEV-adresseregisteret
- Teknisk gjennomføring
- Hva den ekte tjenesten har lært oss
- Installasjon og oppsett
- Personvern: hva modulen sender til hvem
- Tester
- Begrensninger og juridisk merknad
- Ofte stilte spørsmål
- Støtte fra Biricon IT Services
Problemet: stamdata som ingen vedlikeholder
En kontakt i Odoo opprettes som regel under tidspress: navn, omtrentlig adresse, kanskje et UID-nummer. Det er nok til det første tilbudet. Det er ikke nok til fakturaer som må være juridisk korrekt adressert, og slett ikke til å oppdage at noe har endret seg hos kunden. I praksis viser det seg fire hull:
- Ufullstendige stamdata. Foretaksregisternummer, domstol og selskapsform mangler nesten alltid, fordi oppslaget er manuelt arbeid.
- Feil skrivemåter. Firmanavn uten selskapsform, skrivefeil i gate eller sted, byttet postnummer. Det oppdager man først når posten kommer i retur.
- Ingen overvåking. Åpner en domstol insolvensbehandling eller oppløser en kunde selskapet sitt, får ikke Odoo vite noe om det. Salgsavdelingen leverer videre på faktura.
- Spredte kilder. Foretaksregister, årsregnskap og adresseregister ligger på forskjellige steder. Den som vil kontrollere dem, kopierer data for hånd mellom nettleservinduer.
Hva modulen gjør
- Nye firmaer slås opp. Oppretter noen en kontakt som firma (land Østerrike eller tomt), søker modulen i foretaksregisteret i løpet av få minutter. Finnes det nøyaktig ett treff, fylles tomme felter ut: gate, postnummer, sted, land, foretaksregisternummer, domstol og selskapsform.
- Avvik foreslås, aldri overskrives. Står det noe annet i kontakten enn i registeret, opprettes et endringsforslag som en medarbeider godkjenner felt for felt.
- Søk i foretaksregisteret på kontakten. Under fanen Foretaksregister finner søket firmaer på navn, selv om den automatiske treffen ikke var entydig.
- Daglig overvåking. Modulen spør hver dag hvilke firmaer og dokumenter som er endret i registeret, og kontrollerer berørte kunder. I tillegg kontrolleres hvert firma fullstendig på nytt med innstillbare mellomrom.
- Varselnivåer. Åpnede insolvens- og rekonstruksjonsbehandlinger (fra registerets rettsfakta), avvikling, sletting, negativ egenkapital og lav egenkapitalandel oppdages og gjøres synlige på kontakten.
- Adressekontroll. Østerrikske adresser kontrolleres lokalt mot det offisielle adresseregisteret til Bundesamt für Eich- und Vermessungswesen (BEV).
- Registerdata på kontakten. Domstol, selskapsform, daglig leder og rettsfaktaene står under fanen Foretaksregister. De gjenspeiler registeret og oppdateres direkte.
- Meldinger bare internt. Alle meldinger går til den interne Discuss-kanalen Foretaksregister og til chatteren på kontakten. En kontrollkjøring over mange firmaer genererer én samlemelding i stedet for én per firma. Modulen sender aldri noe til kunder.
Forslag i stedet for overskriving
Offisielle data er ikke automatisk de beste dataene for din virksomhet: Kanskje står leveringsadressen bevisst i kontakten, kanskje er det innført et kortnavn. Derfor endrer modulen aldri eksisterende verdier av seg selv. Den fyller bare ut tomme felter og oppretter et forslag ved avvik.
Under Kontakter → Foretaksregister → Forslag fra foretaksregisteret ser du nåværende verdi og registerverdi for hvert felt. Felt du ikke vil overta, lar du stå avmerket bort. Med Bruk valgte skrives bare de markerte feltene, med Avvis forkastes forslaget. Et nytt forslag erstatter eldre åpne forslag for samme kontakt, slik at ingen utdaterte verdier brukes.
Varsler: insolvens, avvikling, regnskap
Modulen skiller mellom tre nivåer:
- Ingen merknad: Det er ingenting å melde.
- Advarsel (gul): I registeret står det gyldige oppføringer om avvikling, oppløsning, likvidasjon, sletting eller fusjon, firmaet er merket som slettet, eller en tidligere insolvensbehandling ble opphevet i løpet av de siste årene (standard tre år, kan stilles inn). Eller årsregnskapet viser negativ egenkapital, en egenkapitalandel under 8 % (standardverdi i tråd med § 23 URG, kan stilles inn), et årsunderskudd eller en omsetningsnedgang på 25 % eller mer.
- Kritisk (rød): En insolvens-, konkurs- eller rekonstruksjonsbehandling er åpnet og ennå ikke opphevet, eller en begjæring er avvist på grunn av manglende midler til å dekke kostnadene. Det siste regnes som betalingsudyktighet.
På kontakten vises et farget banner, i kontaktlisten en merknad, og i søket finnes det filtre for Foretaksregisteradvarsel og Foretaksregister kritisk. Blir en kunde kritisk, får den ansvarlige selgeren (ellers administratoren) en aktivitet Foretaksregister: kontroller kunder, og kanalen Foretaksregister får en melding.
Rettsfakta. Insolvensbehandlinger står i registeret ikke i firmateksten, men som rettsfakta med dato, saksnummer og domstol. Modulen leser dem, knytter åpning og oppheving til samme saksnummer og viser dem på kontakten som en liste. Slik blir en opphevet behandling etter noen år bare informasjon, mens en pågående er rød.
Årsregnskap. Foreligger det siste årsregnskap som XML, leser modulen ut egenkapital, årsresultat, balansesum og omsetning og beregner egenkapitalandelen, endringen i omsetning og størrelsesklassen etter § 221 UGB (også mikroselskaper). Små selskaper må ikke offentliggjøre omsetningen sin, og da viser modulen ingen. Resultatet utleder den av balansegevinsten fratrukket overført gevinst og merker det som estimat. Postnavnene det søkes etter, kan stilles inn, fordi XML-en er bygd opp ulikt avhengig av skjema.
Adressekontroll med BEV-adresseregisteret
BEV tilbyr adresseregisteret som åpne data (Adresse Relationale Tabellen – Stichtagsdaten, ny stikkdato to ganger i året, gratis å bruke med kildeangivelse). Modulen laster ned utdraget via den offisielle INSPIRE-ATOM-tjenesten, rundt 120 MB med omtrent 2,5 millioner adresser, og importerer det til egne, slanke tabeller.
Deretter kontrolleres hver østerrikske firmaadresse med gate lokalt ved opprettelse og ved hver endring: postnummer, gate, husnummer, sted og delstat. Ingen adresse sendes til en tjeneste. Resultatet vises som et merke under adressen:
- Gyldig: Adressen finnes slik i registeret.
- Husnummer ukjent: Gate og sted stemmer, husnummeret gjør det ikke.
- Korreksjon foreslått: Skrivefeil i gate eller sted, feil postnummer. Korreksjonen ligger klar som forslag.
- Ikke funnet: Registeret kjenner ikke denne adressen.
En tom delstat fylles ut direkte. Private kontaktadresser (type Privatadresse) kontrolleres ikke. Kildeangivelsen © Österreichisches Adressregister, Stichtagsdaten vom … står med gjeldende stikkdato i innstillingene. Oppdateringen kjører ukentlig, men laster bare ned hvis BEV har publisert en nyere stikkdato.
Teknisk gjennomføring
Tilgangen til registeret
Justisdepartementet tilbyr foretaksregisteret via FBW-WebServices (HVD) på JustizOnline som SOAP-grensesnitt. Tilgangen er gratis, men krever en API-nøkkel som man søker om med ID Austria under Informationsweiterverwendung. Nøkkelen sendes med i HTTP-hodet X-API-KEY. Modulen bruker tjenesten direkte, uten screen scraping.
Klienten models/firmenbuch_client.py er ren Python uten avhengighet av Odoo. Den kjenner spørringene SUCHEFIRMAREQUEST, AUSZUG_V2_REQUEST, SUCHEURKUNDEREQUEST, URKUNDEREQUEST samt VERAENDERUNGENFIRMAREQUEST og VERAENDERUNGENURKUNDEREQUEST. Dermed kan den testes med lagrede svar. Forespørsler stilles med 0,3 sekunders mellomrom, endringsspørringer i blokker på sju dager.
Tolking av utdraget
Fra utdraget brukes bare oppføringer som fortsatt er gyldige (attributtet AUFRECHT ikke false). Navnet kommer fra datakjennetegnet FI_DKZ02, adressen fra FI_DKZ03, forretningskontoret fra FI_DKZ06 og selskapsformen fra FI_DKZ07. I tillegg kommer domstol, nettadresse, de signaturberettigede personene og rettsfaktaene. For varselnivået gjennomsøkes tekstene i alle gyldige oppføringer etter de innstillbare nøkkelordene:
DEFAULT_CRITICAL = "Konkursverfahren, Insolvenzverfahren, Sanierungsverfahren, Konkurs eröffnet, ..."
DEFAULT_WARNING = "Liquidation, aufgelöst, Auflösung, Abwicklung, Löschung, gelöscht, Verschmelzung, in Liqu."
Fordelen med nøkkelordkontrollen: Den fungerer uavhengig av hvilket felt registeret fører en hendelse i. Ulempen står i avsnittet Begrensninger.
Overvåking
Modulen oppretter tre planlagte handlinger:
- Slå opp nye firmaer (hvert 10. minutt, opptil 20 kontakter per kjøring). I tillegg utløses det umiddelbart ved opprettelse.
- Overvåke firmaer (daglig kl. 04:30). Spør etter endrede firmaer og dokumenter siden forrige kjøring (høyst 30 dager tilbake), kontrollerer de berørte kundene og deretter opptil 50 kunder der siste kontroll ligger lenger tilbake enn den innstilte fristen. Hvert firma lagres i en egen transaksjon, slik at en feil ikke mister tidligere resultater. Resultatet av kjøringen kommer som én samlemelding i kanalen.
- Oppdatere adresseregisteret (ukentlig kl. 03:15).
Uten API-nøkkel avslutter de to første umiddelbart. En kontrollsum per firma hindrer at uendrede utdrag vurderes på nytt.
Adresseregisteret
BEV-dataene ligger i tre tabeller (bev.locality, bev.street, bev.address) med en indeks på postnummer, gatekode og husnummer. Importen kjører via COPY i én transaksjon, tabellene erstattes altså i ett steg. Husnumre normaliseres til registerets skrivemåte (51-55, 12a). Med husnumre opptar tabellene omtrent 400 MB i databasen. Den som ikke vil det, slår av Kontroller husnumre og klarer seg med rundt 150 000 rader.
Hva den ekte tjenesten har lært oss
En modul som bare er testet mot selvskrevne testsvar, regnes ikke som ferdig. Derfor testet vi klienten mot den ekte tjenesten før publiseringen, med nøkkelen til vårt eget firma. Da oppdaget vi flere avvik fra våre antakelser, som vi har rettet:
- Bare kortinformasjonen. Utdraget kan med denne nøkkelen bare hentes i omfanget Kurzinformation. Forespørsler med Vollinformation avviser tjenesten. I versjon 1.0.0 spurte den daglige kjøringen fortsatt feil om dette, versjon 1.1.0 retter det. Fra personene overtar modulen bare navnene på de signaturberettigede daglige lederne; deltakere og personadresser leses ikke.
- Gate og husnummer adskilt. Adressen kommer som
STRASSEogHAUSNUMMERi separate elementer, ikke som én tekst. Modulen setter begge sammen. - Domstol i gjennomføringen. Ansvarlig domstol står ikke i firmadelen, men i den siste
VOLLZ-blokken i utdraget. - Slettede firmaer. Et slettet firma gjenkjenner man på et attributt (
MIT_FIRMA_GELOESCHT_DURCH_VNR) og ikke på en tekst. Modulen gjør dette om til funnet Firma slettet, som utløser en advarsel. - Firmanavnet er ikke søkeordet. Søket sammenligner begynnelsen av navnet. «Muster GmbH» finner ingenting hvis registeret skriver «Muster Gesellschaft m.b.H.»; firmaer under avvikling har «in Liqu.» i navnet, og i kontaktnavnet står det noen ganger fortsatt
&. Modulen gjentar derfor søket uten selskapsform og sammenligner navn uten skrivevarianter av selskapsformen, uten HTML-tegn og uten tillegget «in Liqu.». En enkelt treff overtas bare hvis navnet begynner som kontaktens navn. - Dokumentendringer uten foretaksregisternummer. Listen over endrede dokumenter inneholder bare en nøkkel. Foretaksregisternummeret (uten kontrollbokstav) står i begynnelsen av denne nøkkelen. Modulen knytter endringene til kundene via den.
For hvert av disse punktene finnes det nå en automatisert test med et etterbygd svar.
Testen på vårt eget kunderegister
Etter versjon 1.1.0 prøvde vi modulen på vårt eget kunderegister. Først kjørte bare et lesende navnesøk, deretter tilordningen av de entydige treffene. Ingenting ble endret uten hensyn til eksisterende verdier: tomme felter ble fylt ut, avvik ligger klare som forslag til godkjenning, og ikke en eneste e-post gikk ut. Resultatet, uten å nevne enkeltfirmaer:
- 438 firmakontakter med kundestatus i Østerrike eller uten land ble søkt etter.
- 138 av dem ble entydig tilordnet i foretaksregisteret. Ytterligere 18 hadde et entydig navnetreff, men en annen adresse i registeret (flytting eller firma med samme navn), og ble derfor latt være urørt. 2 navn er flertydige.
- Rundt 280 fant vi ikke eller bare som delvis treff. Det er privatpersoner, enkeltpersonforetak, utenlandske firmaer, kontakter som bare oppgir et varemerke eller et sted, og firmaer der navnet i kontakten avviker fra registreringen, for eksempel fordi det står en annen selskapsform der. For dem gjenstår det manuelle Foretaksregistersøket.
- 63 endringsforslag oppstod, for det meste for gate og husnummer (skrivemåte) og land.
- 66 advarsler, ingen kritisk nivå. 36 firmaer er merket som slettet i registeret (9 av dem også under avvikling), 2 hadde en insolvensbehandling som nå er opphevet, og hos 42 var det noe ved årsregnskapet: lav egenkapitalandel, tap eller omsetningsnedgang. Et slettet firma er ikke automatisk en tapt kunde, men en anledning til å kontrollere adresse og fakturamottaker.
To lærdommer av dette: Et kunderegister fra reell drift er en mye bedre test enn noe etterbygd svar. Vi fant feil i navnesøket, som er rettet i versjon 1.1.1 (se ovenfor). Og treffprosenten avhenger sterkt av hvor nøye kontaktene er navngitt: Den som skriver firmanavnet slik registeret fører det, blir funnet pålitelig.
Installasjon og oppsett
Forutsetninger: Odoo 19.0 med standardappene Kontakter og Discuss, Python-pakken requests (finnes i hver Odoo-installasjon) og utgående HTTPS-tilgang til justizonline.gv.at og data.bev.gv.at. Modulen har ingen avhengigheter utenfor standardappene, den trekker altså ikke med seg flere moduler.
- Legg mappen
partner_firmenbuch_atiaddons_path, oppdater applisten og installer modulen, på produksjonssystemer helst først på en testdatabase. - Modulen oppretter Discuss-kanalen Foretaksregister (interne brukere) og legger inn alle administratorer. I tillegg opprettes de tre planlagte handlingene.
- Søk om API-nøkkel: JustizOnline (ID Austria), Informationsweiterverwendung, API FBW.
- Innstillinger → Foretaksregister: legg inn nøkkelen og velg Test tilkobling. Velg deretter kanal, alternativer, nøkkelord og postkoder.
odoo-bin -c /etc/odoo/odoo.conf -d <datenbank> -i partner_firmenbuch_at --stop-after-init
Viktig på produksjonssystemer: Den første kjøringen av adresseregisteroppdateringen starter automatisk natten etter installasjonen kl. 03:15 og laster ned rundt 120 MB. Deretter kontrolleres alle østerrikske kontakter; avvik vises som forslag og som én melding i kanalen. Den som ikke ønsker det, deaktiverer på forhånd den planlagte handlingen Adressregister (BEV): oppdater eller slår av Kontroller østerrikske adresser i innstillingene.
Masseimport: Importer med kontekstnøklene fb_no_lookup=True og bev_no_check=True. Ellers ville hvert importerte østerrikske firma bli forhåndsmerket for en registerspørring (20 per ti minutter) og hver adresse kontrollert ved opprettelse.
Personvern: hva modulen sender til hvem
- Personopplysninger: Navnene på de daglige lederne er personopplysninger, selv om de står offentlig i registeret. Modulen lagrer dem bare for å ivareta forretningsforholdet. Den som ikke ønsker det, sletter feltet eller lar være å bruke det.
- Foretaksregister: Bare navnet eller foretaksregisternummeret til kontakter som er merket som firma (uten overordnet firma, land Østerrike eller tomt), sendes til
justizonline.gv.at, sammen med API-nøkkelen. Privatpersoner og kontaktpersoner i et firma sendes aldri. - Adresseregister: Bare det offentlige utdraget lastes ned. Kundeadresser forlater ikke systemet.
- Ingen e-poster til kunder: Meldinger går til den interne kanalen, til chatteren og som aktivitet til medarbeidere.
- Nøkkel: API-nøkkelen er bare synlig for administratorer.
Foretaksregisteret er et offentlig register. Viderebruk av dataene er underlagt vilkårene for Informationsweiterverwendung hos JustizOnline.
Tester
Modulen leveres med 18 automatiserte tester. De arbeider med etterbygde registersvar og et miniatyr-adresseutdrag og trenger derfor verken API-nøkkel eller nettverk:
- Normalisering av foretaksregisternummeret
- Tolking av utdraget (navn, adresse, domstol, daglig leder, slettet firma, ugyldige oppføringer ignoreres)
- Navnesammenligning: skrivevarianter av selskapsformen, «in Liqu.», HTML-tegn, ingen treff for et fremmed firma
- Årsregnskap: egenkapital, resultat, balansesum
- Nytt firma blir funnet, tomme felter fylles ut, avvik foreslås, forslag brukes delvis
- Overvåking: åpnet insolvensbehandling setter nivået til kritisk og oppretter aktiviteten, en opphevet behandling gir en advarsel, kontaktpersoner kontrolleres ikke særskilt
- Dokumentendringer knyttes til via nøkkelen
- Uten API-nøkkel spørres det ikke om noe
- Adressekontroll mot miniatyrutdraget
odoo-bin -d <testdatenbank> -i partner_firmenbuch_at \
--test-enable --test-tags=/partner_firmenbuch_at --stop-after-init
Den tyske oversettelsen ligger i i18n/de.po.
Begrensninger og juridisk merknad
- Et treff er en pekepinn, ikke en juridisk opplysning. Statusen utledes fra nøkkelord i gyldige registeroppføringer. Kontroller registeret selv før du avgjør kreditt eller leveringsvilkår.
- Insolvensgjenkjenning bare testet med etterbygde tilfeller. Modulen gjenkjenner behandlinger på ord i fritekstene til rettsfaktaene (åpning, oppheving, bekreftet rekonstruksjonsplan, mangels midler). Formatet har vi bygd etter et ekte registerutdrag, men et ekte insolvenstilfelle hadde vi ikke for hånden under utviklingen. En uvanlig formulering kan derfor bli oversett. Den offisielle Ediktsdatei erstatter ikke modulen.
- Årsregnskap bare som XML. Rene PDF-innleveringer hoppes over. Hos svært små selskaper kan balansen være levert i forkortet form, uten tallene modulen leser.
- Bare Østerrike. Utenlandske firmaer spørres ikke om. Firmaers nettsteder står ikke i registeret og fylles ikke ut.
- Automatisk tilordning bare ved entydig treff. Finnes det flere firmaer med samme navn, ber en melding i kanalen om det manuelle Foretaksregistersøket.
- Grensesnitt kan endre seg. Modulen avhenger av tjenestene til BMJ og BEV. Endres endepunkt, skjema eller ATOM-feed, kan en oppdatering bli nødvendig.
- Testet for Odoo 19. Utviklet og testet for Odoo 19.0 Community. For andre versjoner har vi ikke testet den. Innlegget er ikke juridisk rådgivning.
Ofte stilte spørsmål
Koster tilgangen til registeret noe?
Etter vår oppfatning ikke: FBW-WebServices for Informationsweiterverwendung er gratis, men krever en API-nøkkel som du søker om via JustizOnline. Det er justisdepartementets gjeldende vilkår som gjelder.
Overskrives eksisterende kontaktdata?
Nei. Modulen fyller bare ut tomme felter. Avvikende verdier opprettes som forslag som en medarbeider godkjenner felt for felt.
Får kundene mine med seg noe av kontrollen?
Nei. Alle meldinger går til den interne kanalen, til chatteren på kontakten og som aktivitet til medarbeidere. Modulen sender ingen e-poster til kunder.
Lagres daglige ledere eller deltakere?
Navnene på de signaturberettigede daglige lederne ja (feltet Daglig leder under fanen Foretaksregister), deltakere og adresser til personer nei. Behandle navnene som personopplysninger.
Hvor mange av kundene våre finner modulen?
Det avhenger av kunderegisteret. Hos oss var det 138 av 438 firmakontakter (rundt en tredjedel). Resten er privatpersoner, enkeltpersonforetak, utenlandske firmaer og kontakter der navnet ikke tilsvarer firmanavnet. Tallene står i avsnittet Testen på vårt eget kunderegister.
Kan jeg finne en kunde uten foretaksregisternummer?
Ja. Fanen Foretaksregister har knappen Foretaksregistersøk med søk på navnet. Modulen fyller bare ut automatisk hvis nøyaktig ett firma passer. Ellers velger du treffet selv.
Hva med firmaer i Tyskland eller Sveits?
De spørres det ikke om. Modulen ser bare på kontakter med land Østerrike eller uten land.
Hvor mye lagringsplass trenger adressekontrollen?
Med husnumre omtrent 400 MB i databasen og under importen omtrent 120 MB midlertidig diskplass. Uten husnummerkontroll holder det med omtrent 150 000 rader.
Hva hvis jeg bare vil ha foretaksregisteret og ingen adressekontroll?
Slå av Kontroller østerrikske adresser i innstillingene og deaktiver den planlagte handlingen for adresseregisteret. Da lastes ingenting ned.
Under hvilken lisens står modulen?
Under LGPL-3. Du kan bruke den, tilpasse den og gi den videre. Feil og forbedringsforslag er velkomne som issue i GitHub-repositoriet .
Støtte fra Biricon IT Services
Vi drifter Odoo-installasjoner for små og mellomstore bedrifter: fra innføring via tilpasninger og migreringer til løpende drift. Hvis du vil holde kundestamdata i Odoo ryddige, oppdage kredittrisiko tidligere eller få en modul som denne vurdert og trygt satt i produksjon, bistår vi deg gjerne. Flere egenutviklinger finner du i bloggen vår, for eksempel Produktsett i tilbudet som seksjon og Web RBL, sperrelisten for angrepstrafikk.
Status: 3. november 2026. Modulversjon 19.0.1.1.1. Eksempeldataene i illustrasjonene er fritt valgt og ikke ekte firmaer.