Gå til innhold

Visma Business (VBS / GenericService)

1. Hva den gjør

Visma Business er kjerne-ERP-et — kilden til ordrer, kunder, produkter, kjøretøy, tanker, lønnsarter og beholdning. Connect API leser og skriver til Visma på to måter:

  • Direkte SQL mot Visma-databasen (F{id}) via connection strings ConnectSQL_{id} / VismaSQL_{id} — brukes til det meste av lesing og til beholdningstransaksjoner (FreeInf2).
  • VBS GenericService (WCF) — brukes til skriveoperasjoner som skal gå gjennom Vismas forretningslogikk (opprette/oppdatere ordrer og bilag).

Hele appen avhenger av dette: er Visma utilgjengelig, feiler all ordre-, kunde- og beholdningsfunksjon.

Flyt

flowchart LR
    A[Connect API / ConnectMonitor] -->|direkte SQL + FreeInf2| DB[(Visma-database)]
    A -->|VBS GenericService WCF| WCF[VBS GenericService] --> DB
    classDef sys fill:#f8d7da,stroke:#b53b46
    class A,WCF sys

2. Dataretning

Begge veier. Connect API ↔ Visma. All forretningslogikk i jhlVismaAPI (Business-klassen).

3. Autentisering og konfigurasjon

Konfignøkkel (Web.config) Rolle
VBS_Endpoint WCF-endepunkt, f.eks. http://‹server›:2001/GenericService
VBS_CertDNS Sertifikatnavn for WCF message-security
VBS_User / VBS_Password VBS-bruker (UsernameToken)
VBS_Memo Lokal filsti for memo-/dokumentfiler
connectionStrings: ConnectSQL_{id} Connect-tabeller per selskap (samme DB som Visma)
connectionStrings: VismaSQL_{id} Visma-database per selskap

WCF-bindingen (wsHttpBinding, message-security, UsernameToken) er definert i Web.config (system.serviceModel). Verdiene står i Web.config på serveren — gjengis ikke her.

Felt-/kolonnemapping mot Visma-tabellene styres av Visma*-nøklene og VBS_Order_Col* (kolonnenumre) — se Visma-feltreferansen.

4. Implementasjon

  • jhlVismaAPI (JHL_VismaBusinessInterface) — Business-fasaden og Services/VismaBusinessServices.cs (VBS-kall, ordre-/bilagsskriving).
  • Connect API BaseAPIController instansierer new Business(companyID) per forespørsel etter JWT-validering.
  • Logg: NLog → jhlVismaAPILog.txt.

5. Oppsett (per miljø)

  1. Sett VBS_Endpoint til riktig GenericService-URL.
  2. Installer/peke til VBS_CertDNS-sertifikatet på serveren.
  3. Legg inn ConnectSQL_{id} og VismaSQL_{id} for hvert selskap i bruk (mangler en, feiler login/refresh for det selskapet med 500 — se Drift og overvåking).
  4. Verifiser kolonnemappingen mot Visma-versjonen.

6. Feilmodi

Symptom Årsak Tiltak
Alle ordre-/kundekall feiler GenericService nede eller feil VBS_Endpoint Start tjenesten; sjekk endepunkt og sertifikat
Ett selskap får 500 ved innlogging Mangler ConnectSQL_{id}/VismaSQL_{id} Legg til connection string
WCF-faults i loggen Feil VBS_User/VBS_Password eller sertifikat Rett credentials/sertifikat
Feil tall/felt i ordrer Kolonnemapping feil for Visma-versjonen Kontroller Visma*/VBS_Order_Col*

Ingen automatisk retry — WCF-timeout per binding.

7. Test

# Endepunktet svarer? (WSDL/SOAP)
curl -s http://‹server›:2001/GenericService

# Indirekte: login + ordreliste i appen virker, og loggen er feilfri
curl -s https://‹api-host›/api/Company/GetCompanies   # 200 = API + DB oppe

8. Rotasjon

VBS_User/VBS_Password og SQL-brukere: kun Web.config-endring + app-pool recycle. Sertifikat: installer nytt på serveren og oppdater VBS_CertDNS.

Relaterte sider