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 stringsConnectSQL_{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 ogServices/VismaBusinessServices.cs(VBS-kall, ordre-/bilagsskriving).- Connect API
BaseAPIControllerinstansierernew Business(companyID)per forespørsel etter JWT-validering. - Logg: NLog →
jhlVismaAPILog.txt.
5. Oppsett (per miljø)¶
- Sett
VBS_Endpointtil riktig GenericService-URL. - Installer/peke til
VBS_CertDNS-sertifikatet på serveren. - Legg inn
ConnectSQL_{id}ogVismaSQL_{id}for hvert selskap i bruk (mangler en, feiler login/refresh for det selskapet med 500 — se Drift og overvåking). - 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.