For at vi skal få kommunikasjonen mellom regnskapsprgram som kjører på en egenadministrert server og Account Control til å fungere, har vi behov for å installere vår programvare (Connexus) på en server med lesetilgang til selskapenes Visma Business-database.
Hva er Connexus?
Connexus er en bakgrunnsstjeneste som fungerer som bindeledd mellom Account Controls skyapplikasjon og lokalt installerte ERP-systemer. Tjenesten utfører datauttrekk ved å kjøre SQL-spørringer mot ERP-database, og sender resultatet av spørringene til Account Controls API.
Databasebruker i SQL-database administreres av kunde/IT-leverandør, og rettigheter på brukeren bør begrenses til lesetillatelse på kun de tabeller som Connexus skal hente data fra (se segment Databasetilganger).
Vi anbefaler at databaseadministrator kun gir de tillatelser som er påkrevd for å sette opp ønskede selskap, og unnlater å benytte SA-brukeren på SQL-serveren i installasjonsprosessen. Dette både av sikkerhetsprinsipp innen databaseadministrasjon (principle of least privilege) og at vi ikke får innsyn i ting vi ikke trenger.
Om Visma Business-databasen har store datamengder/stor database eller et stort antall transaksjoner, anbefaler vi at det opprettes en indeks av ValDt på tabellen dbo.AcTr for de relevante F-databasene. Se eget kapittel av denne artikkelen for bruksanvisning: Oppretting av indeks i F-database
Connexus krever minimum .NET Framework 4.8 for å fungere. Det kan lastes ned her: https://dotnet.microsoft.com/en-us/download/dotnet-framework/net48
Informasjon og installasjonsguide: Google Drive
Nedlasting av Connexus: Google Drive
En API-nøkkel er påkrevd for å knytte Connexus mot en kundedatabase hos oss. Denne kan du få ved å henvende deg til oss på support@savesolutions.no. Den skal limes inn i Connexus sitt øvre venstre hjørne ved installasjon for autentisering mot vår server.
Sikkerhetsmekanismer i Connexus
- Data overføres sikret over https, der TLS 1.2 benyttes som kryptografisk protokoll. TLS/HTTPS-trafikken foregår over port 443, så sørg for at denne porten er åpen for kommunikasjon på serveren.
- Account Control benytter service bus fra Azure/Microsoft (AccountControlServiceBus.servicebus.windows.net), som kommuniserer over port 5671 og 5672, samt port 9354 i noen tilfeller. Sørg for at disse portene er åpne for kommunikasjon før du setter i gang installasjonen av Connexus (se Nettverkstilganger).
Om dette ikke er sjekket og bekreftet når Connexus er installert, slik at konsulenter i Save Solutions må bruke tid på feilsøking sammen med IT-leverandør/ansvarlig, kan dette bli fakturert etter medgått tid. - Alle forespørsler fra Connexus autentiseres ved bruk av egen API-nøkkel. API-nøkler sjekkes også opp mot kundens MacID for å forhindre misbruk.
- Innloggingsinformasjon som Connexus bruker for databasetilgang lagres kryptert i konfigurasjonsfil i programmappen på kundens server.
- Account Control kan ikke sende forespørsler direkte til Connexus. Dersom operasjoner skal initieres fra Account Control, benyttes meldingstjenesten Azure Service Bus. Connexus sjekker jevnlig etter nye meldinger, og kun forhåndsdefinerte operasjoner støttes i denne flyten.
- Forespørsler gjort mot endepunkter i APIet som gjelder Connexus kontrolleres av sikkerhetsmekanismer for å forhindre såkalte replay attacks.
Connexus knyttes opp mot databasen som ERP-systemet kjører på via autentisering gjennom en bruker i databasen (enten SQL-bruker, eller Windows-bruker), og man legger inn brukernavn/passord for brukeren ved kjøring av DesktopConnexus.exe etter installasjonen. Dere kan enten opprette en egen bruker for Save Solutions, eller bruke en allerede eksisterende bruker som har de påkrevde tilgangene.
Tilganger
Nettverkstilganger
Før du starter installasjonen av Connexus, sørg for at serveren er åpen for kommunikasjon mot AccountControlServiceBus.servicebus.windows.net via portene 5671, 5672 og 9354.
NB! Husk å hviteliste DNS-adressen og ikke den statiske IP-adressen, da den har en dynamisk IP-adresse levert av vår skyleverandør (Azure).
Dette kan testes i PowerShell ved følgende kommandoer:
tnc AccountControlServiceBus.servicebus.windows.net -port 5671
tnc AccountControlServiceBus.servicebus.windows.net -port 5672
tnc AccountControlServiceBus.servicebus.windows.net -port 9354
Denne skal returnere TcpTestSucceeded: True for alle portene.
Klikk på bildene for å forstørre de
Se denne hjelpesiden fra Microsoft for fremgangsmåte og tips for videre feilsøking av dette: https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-troubleshooting-guide.
Databasetilganger
For at vi skal få hentet ut all informasjon vi trenger fra ERP-systemet, trenger databasebrukeren som Connexus installeres med, tilgang til et utvalg databasetabeller i Visma Business sin databasestruktur. Disse er som følger:
vbsys:
- dbo.Frm
- sys.database_recovery_status (henter database-ID)
Fxxxx:
- sys.tables (brukt for å hente tilgjengelige kolonner for import-mapping)
- sys.views (brukt for å hente tilgjengelige kolonner for import-mapping)
- sys.columns (brukt for å hente tilgjengelige kolonner for import-mapping)
- dbo.AllAcNo
- dbo.TxCd
- dbo.Vat
- dbo.AcTr
- dbo.CustTr
- dbo.SupTr
- dbo.AcBal
- dbo.AllAcTr
- dbo.UpdVo
OBS! Connexus bruker den første F-databasen (som oftest er dette F0001) til å indeksere strukturen på VB-databasen, så tilgang til denne trengs for at installasjonen skal fungere.
For å angi disse rettighetene, kan dere gjøre dette enkelt ved å legge til en ny databasebruker i SSMS (Microsoft SQL Server Management Studio) ved å følge disse stegene:
Gi deretter db_datareader-rettigheter på alle F-databasene som skal benyttes
Bokføring fra Account Control til Visma Business
For å få en fullstendig installasjon av Connexus som kan bokføre poster tilbake til Visma Business i nyere versjoner av Visma Business (versjon 16 og opp), trenger vi også en Visma Business Service-bruker. Denne brukeren må legges inn i Catalog-basen på samme nivå som Visma Business-databasen ligger (under databaseserver) via en SQL insert-spørring som anvist i bildet under.
Passordet må legges inn i kryptert format ved hjelp av Visma Business sitt eget krypteringsverktøy (som oftest plassert her: C:\Program Files (x86)\Visma\Business\Visma.Business.PasswordEncrypter.exe).
Velg enten VBS password eller Generic password, og fyll inn ønsket passord i rad to som vist under.
Om dere ikke ønsker å sette passord selv, kan dere bruke følgende krypterte passord:
LYyMcNN7fXdv1TwBMfDO5Q==
-
Kryptert passord fylles inn i Catalog-basen via en vanlig insert-spørring mot Catalog-databasen (se under).
-
declare @dt varchar(8) = '20241030';
declare @tm varchar(8) = '1200'
declare @encpass varchar(100) = 'LYyMcNN7fXdv1TwBMfDO5Q=='insert into dbo.SvcAcc(Nm, Passw, ChDt, ChTm, CreDt, CreTm) values
('connexus', @encpass, @dt, @tm, @dt, @tm)
-
- Ukryptert passord fylles inn i eget felt i bunnen av Connexus-appen under installasjonen. Dere får ukryptert passord når dere installerer Connexus første gang.
Klikk på bildet for å forstørre det
Connexus benytter VismaBusinessServiceUser og tilhørende passord (ligger i dbo.SvcAcc i Catalog-databasen som vist i bildet over) til å bokføre via tjenesten Visma.Business.Service.Host. Sørg derfor for at denne tjenesten kjører på server som kjører Visma Business-serveren.
Oppdatering av DLL-filer
Om du bruker en eldre versjon av Visma Business (eldre enn 18.1) må du flytte DLL-filene fra Visma Business sin rotmappe til Connexus sin rotmappe (tre filer i ConnexusService og én fil i ConnexusDesktop) for at bokføring skal fungere. Ta gjerne en kopi av Connexus sine eksisterende DLL-filer før du gjør dette. Følgende filer må kopieres fra Visma Business sin rotmappe til ConnexusService:
- Visma.Business.Core.dll
- Visma.BusinessModel.Meta.dll
- Visma.BusinessServices.Client.dll
Følgende filer må kopieres fra Visma Business sin rotmappe til ConnexusDesktop:
- Visma.BusinessServices.Client.dll
Installasjon av Connexus
Last ned og kjør SetupConnexus.msi (Tilgjengelig her: Google Drive)
Kjør Connexus Setup App via snarvei på skrivebord
- Lim inn API-nøkkel dere har fått oversendt.
- Klikk på Check API key. Om denne gir feilmelding, se steget Nettverkstilganger. Om problemet vedvarer etter sjekk av kommunikasjon, ta kontakt med oss på support via epost support@savesolutions.no eller telefon på 55 20 66 00. Account Control On-Premise skal IKKE være skrudd på.
- Nedtrekksmenyen i toppen med navn Stored credentials skal nå bli klikkbar. Trykk på denne og velg New
- Velg ERP-system og fyll inn informasjon om databaseserver, portnummer (som oftest 1433) autentiseringsmetode (Windows-bruker eller SQL-bruker, vi foretrekker SQL-bruker for mer granulær rettighetsstyring), brukernavn og passord for autentisering. For nyere versjoner av Visma Business må dere også skrive inn Visma service account username og Visma service account password.
Når de øvrige feltene er fylt inn, kan du trykke på nedtrekksmenyen under Database. I listen som dukker opp, velger du vbsys (i noen tilfeller er det skrevet med store bokstaver).
Om du får en feilmelding under dette steget, les denne og forsøk å skru på Trust server certificate og/eller Use encryption avhengig av feilmeldingens innhold. I eksempelet under vil løsningen være å skru på Trust server certificate:
I listen som kommer opp, velger du navnet på databasen slik den forekommer i SQL Management Studio/ditt foretrukne databaseadministrasjonsverktøy.
- Trykk på Add credential
- Trykk på nedtrekksmenyen under Stored credentials og velg koblingen du nettopp satt opp
- Trykk på Install and start service
- Connexus starter nå opp som en tjeneste i Windows med konfigurasjonen Automatisk (forsinket start). Dette kan ta alt i fra noen sekunder til noen minutter, avhengig av mengden data som ligger i regnskapet i databasen som ble valgt. Når Connexus har lest dataen den skal og har generert nødvendige tabeller, vil Connexus Setup App lukkes automatisk, og statusen på Windows-tjenesten vil være Running. Dette kan sjekkes ved å åpne Tjenester / Services i Windows (åpne startmenyen i windows og skriv inn tjenester eller services (avhengig av Windows-språk)), og deretter trykke på C på tastaturet og se etter Connexus integration service.
Du kan enten friske opp listen via knappen som er anvist med pil i bildet under, eller få sanntidsvisning ved å dobbelklikke på Connexus integration service.
Om Connexus blir installert på en annen server enn den Visma Business og Visma.Business.Service.Host. kjører på, må relevante endepunkt (endpoint address) redigeres i ConnexusService.exe.config, DesktopConnexus.exe.config og Visma.BusinessServices.COM.dll.config. Om dere mangler sistnevnte, kontakt oss for å få den tilsendt.
I ConnexusService.exe.config må også følgende verdier endres på fra linje 73 til 76 i noden <appSettings>:
- <add key="VismaEndpoint" value=""/>
- <add key="VismaInstanceName" value="standard"/>
- <add key="VismaUserName" value="System"/>
- <add key="VismaPassword" value=""/>
Verdi puttes mellom anførselstegn i slutten ""
Innsyn
Tilgang til kundens informasjon lagret i Account Control er begrenset til relevant personell og brukes kun til support- og feilsøkingsformål.
Personer med tilgang:
- Erik Gule Paulsen, supportmedarbeider
- Karl Martin Holst, supportmedarbeider
- Tor Henrik von der Ohe, supportmedarbeider
- Henrik Bonsaksen, utvikler
- Espen Austefjord, utvikler
Data lagres kryptert i Microsoft Azure sitt datasenter i Dublin, Irland. Kundens informasjon er kryptert ved hvile i database, samt under transport mellom applikasjonsinstanser for Account Control.
Feilsøking/restart av Connexus
Om automatisk eller manuell import til Account Control via Connexus stopper opp, kan det muligens løses ved å starte tjenesten på nytt. Dette kan gjøres via Connexus Setup App
- Trykk på Stop and uninstall service
- Velg den konfigurerte koblingen via Stored credentials fra toppmenyen til høyre
- Trykk på Install and start service.
Dette kan ta alt i fra noen sekunder til noen minutter, avhengig av mengden data som ligger i regnskapet i databasen som ble valgt. Når Connexus har lest dataen den skal og har generert nødvendige tabeller, vil Connexus Setup App lukkes automatisk, og statusen på Windows-tjenesten vil være Running. -
Manuell import via Connexus kan nå forsøkes via Account Control på vanlig måte via balanseoversikten på gjeldende selskap eller det manuelle avstemmingsbildet.
Om problemet vedvarer, send oss en henvendelse på support@savesolutions.no hvor Connexus sin loggfil for i dag + dagene problemet først oppstod ligger som vedlegg på eposten. De befinner seg i ConnexusService-mappen (C:\Program Files\SaveSolutions\Connexus\ConnexusService\Logs).
Stor datamengde i VB-database fører til timeout ved import fra ERP i Account Control
Timout ved import er satt til 30 sekunder som standard, og om resultatet tar mer enn dette kan det føre til en timeout ved import til Account Control.
Dette kan løses ved å opprette en indeks på kolonnen ValDt i databasetabellen dbo.AcTr under den relevante F-databasen. Det er enkelt og raskt, og kan lett gjøres via SQL Server Management Studio (SSMS) ved å følge stegene under:
- Naviger til relevant F-database og utvid Tables (plusstegn til venstre for navn eller høyre piltast)
- Utvid dbo.AcTr
- Høyreklikk på Indexes og velg New index → Non- Clustered Index
- I modalen som kommer opp, klikker du på Add
- Finn kolonnen ValDt, marker den og klikk på OK
- Klikk på OK for å opprette indeksen
Etter disse stegene er utført kan det forsøkes en ny import fra ERP via Account Control. Indeksering kan redusere tidsbruken av spørringen som kjøres via viewet dbo.AllAcTr på selskapet med 90-95%.
Bilag med ugyldig dato fører til feil ved import fra ERP i Account Control
Ettersom Visma Business ikke har noen inputvalidering på sine datofelt, kan det oppstå situasjoner hvor datofeltene i Visma Business sin database faller utenfor det tillatte intervallet i Account Control, som er definert av SmallDateTime i SQL (mellom 1/1/1900 12:00:00 AM og 6/6/2079 11:59:59 PM). Om dette oppstår, må datoverdiene korrigeres direkte i databasen, ettersom til og med korrigerte/reverserte bilag vil beholde sin originale ugyldige dato og blokkere en videre import.
For å identifisere hvilken spesifikk dato som stopper importen til Account Control, må vår supportavdeling bistå. Etter datoverdien har blitt identifisert, kan dere benytte følgende fremgangsmåte for å identifisere hvilke(t) bilag som stopper importen til Account Control.
Søk etter transaksjoner i Visma Business
For å gjøre et oppslag av transaksjoner i Visma Business, gå til Regnskap. Velg Bilagssøk. I bilagssøk-visningen, velg fanen Hovedbokstransaksjoner.
Deretter kan du bruke et filter for oppslaget. Knappen (forstørrelsesglass) for dette er markert med gult på bildet nedenfor.
Dette vil åpne et nytt vindu.
Klikk på Legg til øverst i vinduet for å legge til en ny filterbetingelse. Etter at du har lagt til, kan kriteriene endres. Velg kolonnen du vil legge til filteret for, og legg deretter til betingelsen.
Et filter for valuteringsdato etter 30.11.14 vil se slik ut:
For å legge til flere filterbetingelser, klikk på Legg til igjen. For påfølgende kriterier kan du velge enten OG eller ELLER, avhengig av hvordan du vil at filteret skal evalueres.
Nedenfor er et eksempel på et filter som henter transaksjoner som enten har valuteringsdato etter 30.11.14 eller bilagsdato etter 30.11.14.
For å avslutte og utføre søket, klikk på OK.
Korrigering av datofelt i Visma Business sin database
Etter bilaget/bilagene har blitt identifisert, kan du finne det i Visma Business-databasen ved å kjøre følgende spørring (erstatt F0002 med relevant selskapskode i VB) i gjeldende F-database:
USE F0002
;
WITH CTE
AS (
SELECT cs.AcNo csAcNo
,cs.JNo csJNo
,cs.EntNo csEntNo
,cs.AcCl csAcCl
,cs.VoNo csVoNo
,cs.UpdBndNo csUpdBndNo
,cs.UpdLnNo csUpdLnNo
,cs.GenAcNo csGenAcNo
,vo.VoNo csvoVoNo
,vo.JNo csvoJNo
,vo.BndNo csvoBndNo
,vo.LnNo csvoLnNo
,vo.DueDt csvoDueDt
FROM [F0002].[dbo].AllAcTr cs
LEFT JOIN [F0002].dbo.UpdVo vo ON cs.VoNo = vo.VoNo
AND cs.JNo = vo.JNo
AND cs.UpdBndNo = vo.BndNo
AND cs.UpdLnNo = vo.LnNo
WHERE cs.AcCl IN (
1
,2
) (CTEWHERE)
)
SELECT CONCAT (
tr.JNo
,'_'
,tr.EntNo
) AS Erptransid
,tr.AcNo AS Kontonr
,tr.VoNo AS Billagsnr
,CONVERT(DATE, CONVERT(VARCHAR(10), tr.[VoDt], 101)) AS Dato2
,CONVERT(DATE, CONVERT(VARCHAR(10), tr.[ValDt], 101)) AS Dato1
,tr.AcYrPr AS Periode
,tr.Txt AS Tekst
,tr.AcAm AS Belop
,tr.CurAm AS Valbelop
,CASE
WHEN SfTxCd IS NULL
THEN 0
WHEN SfTxCd = ''
THEN '99' + CONVERT(VARCHAR, tx.TxCdNo)
ELSE SfTxCd
END AS TaxCode
,CASE
WHEN ISNULL(custAc.AcNo, '') + ISNULL(supAc.AcNo, '') = 0
THEN NULL
ELSE ISNULL(custAc.AcNo, '') + ISNULL(supAc.AcNo, '')
END AS CustomerSupplierNumber
,CASE
WHEN ISNULL(custAc.Nm, '') + ISNULL(supAC.Nm, '') = ''
THEN NULL
ELSE ISNULL(custAc.Nm, '') + ISNULL(supAC.Nm, '')
END AS CustomerSupplierName
,CASE
WHEN ISDATE(CONVERT(VARCHAR(10), vo.[DueDt], 101)) = 1
THEN CAST(CONVERT(VARCHAR(10), vo.[DueDt], 101) AS DATE)
WHEN ISDATE(CONVERT(VARCHAR(10), csvoDueDt, 101)) = 1
THEN CAST(CONVERT(VARCHAR(10), csvoDueDt, 101) AS DATE)
ELSE NULL
END AS DueDate
,tr.InvoNo AS InvoiceNo
,tr.[Txt] AS Ref
,tr.[Txt] AS BilagsArtTxt
FROM [F0002].dbo.AllAcTr tr
LEFT JOIN CTE cte ON tr.AcNo = cte.csGenAcNo
AND tr.JNo = cte.csJNo
AND tr.EntNo - 1 = cte.csEntNo
LEFT JOIN [F0002].dbo.UpdVo vo ON tr.VoNo = vo.VoNo
AND tr.JNo = vo.JNo
AND tr.UpdBndNo = vo.BndNo
AND tr.UpdLnNo = vo.LnNo
LEFT JOIN [F0002].dbo.TxCd tx ON tr.TxCd = tx.TxCdNo
LEFT JOIN [F0002].dbo.AllAcNo custAc ON custAc.AcNo = CASE
WHEN tr.CustNo <> 0
AND tr.SupNo = 0
THEN tr.CustNo
ELSE cte.csAcNo
END
AND custAc.AcTp = 1
LEFT JOIN [F0002].dbo.AllAcNo supAc ON supAC.AcNo = CASE
WHEN tr.SupNo <> 0
AND tr.CustNo = 0
THEN tr.SupNo
ELSE cte.csAcNo
END
AND supAc.AcTp = 2
WHERE tr.AcCl = 3
Order by csvoDueDt desc
Bilag med høyest dato vil ligge øverst i resultatet.
Spørringen over spør mot både [dbo].AllAcTr og dbo.UpdVo. Ugyldige datoer kan finnes i begge eller én av dem, så kjør gjerne spørringer mot begge to for å kontrollere. Under er to eksempler på enkle spørringer mot disse to tabellene.
AllAcTr:
--Alle bilag på AllAcTr
select
JNo,
EntNo,
DueDt,
VoNo,
VODt,
ValDt
from AllAcTr
order by DueDt desc
--Søk etter spesifikt bilagsnr på AllAcTr
select
JNo,
EntNo,
DueDt,
VoNo,
VODt,
ValDt
from AllAcTr
Where
JNo = 15611
And
DueDt <> 0
UpdVo:
--Alle bilag på UpdVo
select
JNo,
DueDt,
VoNo,
VODt,
ValDt
from UpdVo
--Søk etter spesifikt bilagsnr på UpdVo
select
JNo,
DueDt,
VoNo,
VODt,
ValDt
from UpdVo
Where
JNo = 15611
And
DueDt <> 0
Når radene med ugyldig(e) datofelt er identifisert, kan ugyldige datoverdier oppdateres med en enkel update-spørring basert på JNo, for eksempel denne spørringen som oppdaterer DueDt-felt:
UPDATE UpdVo
SET DueDt = 20240614
where
JNo = 15611
UPDATE AllAcTr
SET DueDt = 20240614
where
JNo = 15611
Etter datofelt har blitt oppdatert, kan import fra ERP forsøkes i Account Control.