Drift og overvåking¶
Når brukes denne prosessen¶
Løpende drift, ved release av app/API/dokumentasjon, og ved feilsøking av produksjonsproblemer.
Forutsetninger¶
- Tilgang: API-serverne (IIS), SQL Server-instansen, Azure DevOps
(
dev.azure.com/jhlno), ConnectMonitor-maskinen - Verktøy: Visual Studio/MSBuild (.NET Framework 4.8), Node 20 + pnpm (appen), SQL Server Management Studio
Komponentene og hvordan de rulles ut¶
Connect API¶
- Bygg
knapphus-connect-api(.NET Framework 4.8). - Publiser til IIS på
JHSVMAPP340-01(prod) ellerstaging-api2.knapphus.net(staging). Full prosedyre: Utrulling (deploy). - Web.config per miljø — sjekk alltid:
connectionStrings(VismaSQL_{id},ConnectSQL_{id},FormsDBEntities_{id}for alle selskaper),companiesSection, integrasjonsnøkler,VBS_*-oppsett. - Ved ny funksjonalitet med databasekrav: kjør SQL-skriptene i
docs/(refresh_token_database_setup.sql,survey_kiosk_database_setup.sql) på hver selskapsdatabase. - Verifiser (se under).
Manglende connection string gir 500
RefreshTokenRepository og login feiler hardt for et selskap som mangler
ConnectSQL_{id}/VismaSQL_{id} — symptomet er HTTP 500
NullReference/«connection string not found» for akkurat det selskapet.
Appen¶
- Sett riktig
API_ENDPOINTisrc/app/shared/app-settings.ts. pnpm run build→ web-bygget (www/) deployes tilapp.knapphus.net.- Android/iOS: Capacitor-bygg og distribusjon gjennom butikkene. Husk å bumpe
appVersioniapp-settings.ts. - Web-appen har service worker med oppdateringsvarsel («En ny versjon av ePortal er tilgjengelig») — brukerne får ny versjon ved neste lasting.
Dokumentasjonen¶
Automatisk via Azure Pipelines: azure-pipelines-docs-staging.yml
(IonicUpgrade-branch → docs-staging.knapphus.net) og
azure-pipelines-docs-prod.yml (master → docs.knapphus.net). Begge kjører
mkdocs --strict — brutte lenker stopper deploy.
/systemadministrasjon* og /templates* krever rollen docs_technician
(Azure AD) på det publiserte nettstedet.
ConnectMonitor¶
Se egen side. Utrulles manuelt på tjenermaskinen; jobbene planlegges i Task Scheduler.
Logging og overvåking¶
| Komponent | Logg | Plassering |
|---|---|---|
| Connect API | NLog, nivå Info+ | jhlVismaAPILog.txt i applikasjonskatalogen (mål logfile i NLog.config) |
| ConnectMonitor | NLog | Lokal loggfil på tjenermaskinen |
| Appen (web) | Konsoll + service worker-status | Nettleserens devtools |
| Dokumentasjon | Pipeline-logger | Azure DevOps |
Det finnes i dag ingen helsesjekk-endepunkter — overvåking skjer ved loggene og funksjonstest. Raske kontroller:
# API-en oppe? (forventer 200 + selskapsliste)
curl https://staging-api2.knapphus.net/api/Company/GetCompanies
# Refresh-endepunktet deployet? (forventer 401, IKKE 404/500)
curl -X POST https://staging-api2.knapphus.net/api/auth/refresh \
-H "Content-Type: application/json" \
-d '{"RefreshToken":"test","CompanyID":106}'
Hemmeligheter¶
Alle hemmeligheter ligger i Web.config/App.config på serverne (de sjekkes
også inn i repo — kjent teknisk gjeld; gjengis aldri i håndboken):
| Hemmelighet | Hvor | Merknad |
|---|---|---|
| JWT-signeringsnøkkel | JwtManager.cs (hardkodet konstant) |
Rotasjon krever kodeendring + redeploy; alle tokens ugyldiggjøres |
| Landax-, ABAX-, DataHost-, Dottie-, SMS-nøkler | API Web.config | Roter ved mistanke om lekkasje |
| NorTrace bearer-token | Web.config + app-settings.ts (appen!) |
App-tokenet følger bygget — rotasjon krever ny app-release |
| SQL-brukere | connection strings | |
| Azure-tokens (docs-deploy) | Pipeline-variabler | Ligger ikke i repo |
Verifisering etter deploy¶
GetCompaniessvarer med selskapslisten.- Innlogging med testselskap (9999) og et reelt selskap fungerer, og svaret
inneholder
RefreshToken. auth/refreshsvarer 401 på ugyldig token (ikke 404/500).- Én ordre kan åpnes og én sjekkliste lastes (Landax-kjeden).
- Loggfilen er fri for nye feil de første minuttene.
Nytt selskap (onboarding)¶
Slik kobler du på et nytt selskap (ClientID {id}):
- Visma: selskapet må finnes i Visma Business med sin database (
F{id}). - Connection strings i API-ets
Web.config(og ConnectMonitorApp.config):VismaSQL_{id},ConnectSQL_{id}, ogFormsDBEntities_{id}hvis selskapet bruker skjema. Begge SQL-strengene må finnes — ellers gir login/refresh 500. companiesSection-rad:clientID,clientName,validateTruckStock,logo,nortraceDepartment, og etter behovUsePlanner,DisableBREG,PayrollPeriodCutoffDay,CustomerClient,DisableUserFilter,DottieClientId/DottieApiKey.- Per-selskap appSettings:
{id}_Vol2StdOff,{id}_InternalEmail,{id}_FactNo,{id}_DataHost_ID(−1 hvis ingen DataHost). - DB-skript på selskapsdatabasen: kjør
docs/refresh_token_database_setup.sqlog (ved kiosk/skjema)docs/survey_kiosk_database_setup.sql. - Integrasjoner med per-selskap-nøkler: Soolo (
{id}_NorTrace*), Dottie, DataHost — se Integrasjoner. - Verifiser: selskapet vises i
GetCompanies; innlogging girRefreshToken;auth/refreshsvarer 401 (ikke 500) for{id}.
Rollback¶
- API: redeploy forrige publiserte build (behold forrige publish-mappe på serveren); Web.config-endringer versjoneres manuelt — ta kopi før endring.
- App (web): deploy forrige
www/-bygg. - Dokumentasjon:
git revertpå master — pipeline deployer forrige innhold.
Vanlige problemer¶
| Symptom | Årsak | Løsning |
|---|---|---|
| Ett selskap får 500 ved innlogging/refresh | Manglende ConnectSQL_{id}/VismaSQL_{id} connection string |
Legg til i Web.config |
| Brukere må logge inn flere ganger daglig | Refresh-kjeden virker ikke i miljøet (404 på auth/refresh, manglende RefreshTokens-tabell, eller gammelt appbygg) |
Kjør verifiseringen over mot riktig miljø |
| Alle ordrekall feiler | VBS (GenericService) nede på Visma-serveren |
Start tjenesten; sjekk VBS_Endpoint |
| Skjema-modulen nede | Landax utilgjengelig eller utløpt API-passord | Sjekk logg for 401 fra Landax |
| Kvitteringer sendes ikke | SMTP-relay nede | Sjekk SMTP-oppsettet i mailSettings; ingen automatisk retry |
| Docs-deploy feiler | mkdocs --strict fant brutt lenke |
Se pipeline-loggen, rett lenken |