AFAS Profit Power BI directe koppeling

Ik heb eerder een aantal berichten geschreven over het koppelen van AFAS Profit aan Power BI door middels de connectoren en een stukje Powershell JSON files te genereren. Hiervoor had je een stukje storage nodig om de files te plaatsen en daarnaast een Power BI Gateway. Daarmee dus ook een server om die op te draaien. Zeker voor de AFAS Online klanten is het niet vanzelfsprekend dat je die infrastructuur hebt, en dus was er genoeg aanleiding om even verder te zoeken naar de mogelijkheden :).

Het doel

Er zijn grofweg 3 manieren om data in Power BI te krijgen:

  • Direct (live)
  • Direct (update via schema)
  • Files via de Enterprise Gateway

In mijn eerdere posts ging ik in op de mogelijkheden via de Enterprise Gateway. Dit is overigens een variatie op de Directe koppeling met een update via een schema. Het streven was nu vooral het koppelen zonder tussenkomst van eigen servers, services of storage.

De uitdaging

Power BI heeft een flink aantal mogelijkheden als het gaat om het koppelen van databronnen. Een van de opties is een web connector:

De Power BI web data source connector

Het is alleen even wat puzzelwerk om de autorisatie voor de REST connector van AFAS Profit goed te krijgen, vooral ook omdat hier eigenlijk geen hele goede documentatie van beschikbaar is. Maar goed, daar zijn artikelen als deze voor :).

De oplossing

Om data uit AFAS Profit beschikbaar te krijgen in Power BI zonder dat daar (behalve bij het aanmaken) handmatige acties voor nodig zijn moeten we gebruik maken van de web/app connectoren in Profit. In dit voorbeeld maken we gebruik van de REST API van AFAS Profit. Hoe je deze connectoren aan kan maken heb ik eerder omschreven in dit artikel.

Het belangrijkste is dat je de autorisatie token die je in dat stappenplan maakt goed bewaart. Het is niet mogelijk om deze code opnieuw te generen zonder de oude code te laten vervallen. De code die je genereert zit er grofweg als volgt uit:

<token><version>1</version><data>***</data></token>

Je kan deze code echter niet 1-op-1 gebruiken om via Power BI te autoriseren voor de connector, er dient een Base64 string van gemaakt te worden en de tekst “AfasToken” dient voorgevoegd te worden. Om het gemakkelijk te maken heb ik een kleine tool gemaakt om deze handelingen snel uit te voeren.

Screenshot Profitkey.hermanronk.nl

Je vind deze tool op profitkey.hermanronk.nl. Als je ons voorbeeldtoken door deze tool heen halen is dit het resultaat:

AfasToken PHRva2VuPjx2ZXJzaW9uPjE8L3ZlcnNpb24+PGRhdGE+KioqPC9kYXRhPjwvdG9rZW4+

Het laatste wat we nog nodig hebben is het web-pad naar de connector. Het eerste deel van de URL is altijd hetzelfde voor je eigen omgeving en de rest is variabel. Het eerste deel is als volgt opgebouwd:

AFAS Online: https://12345.afasonlineconnector.nl/profitrestservices/ (12345 is je deelnemersnummer)
Lokale installatie: https://”webadres”/profitrestservices/ (webadres is veelal het gelijk aan het eerste deel van de url voor InSite)

Het laatste deel van de URL kan dus wisselen, de opbouw is als volgt:

/connectors/pbi_mdw?skip=-1&take=-1

/connectors/ = meestal gelijk
pbi_mdw = de naam van de connector die je wil benaderen
?skip=-1&take=-1 = opties en filters

Wanneer je met grote datasets werkt wil je eventueel filters gebruiken en een datasource per bijvoorbeeld periode aanmaken in Power BI. een filter op periode zou er bijvoorbeeld als volgt uit kunnen zien (we filteren hier op periode 7):

&filterfieldids=Periode&filtervalues=7&operatortypes=1

Aan de slag in Power BI

Met de bovenstaande informatie hebben we alles wat we nodig hebben om in Power BI de connector aan te maken. We kiezen zoals aan het begin van deze post aangegeven voor de bron “Web”, wanneer je daarna op geavanceerd klikt krijg je onderstaand scherm te zien:

Power BI Web bron configuratie scherm

Hier moeten we drie velden vullen:

  1. URL
  2. Header 1: Content-Type
  3. Header 2: Autorisation

De URL zou in het geval van een AFAS Online omgeving volgens de bovenstaande instructies als volgt opgebouwd zijn:

https://12345.afasonlineconnector.nl/profitrestservices/connectors/pbi_mdw?skip=-1&take=-1&filterfieldids=Periode&filtervalues=7&operatortypes=1

Bij het tweede en derde veld moeten de headers ingevoerd worden, de eerste specificeert de content type. Dus kies hier in het linker veld “Content-Type” en voer in het rechter veld “application/json;charset=utf-8” in.

Het derde veld is de autorisatie, hiervoor hebben we via profitkey.hermanronk.nl een string gegenereerd. In het linker veld kies je voor “Authorization” en in het rechter veld voer je de gegenereerde string in, zoals bijvoorbeeld “AfasToken PHRva2VuPjx2ZXJzaW9uPjE8L3ZlcnNpb24+PGRhdGE+KioqPC9kYXRhPjwvdG9rZW4+”

Als je op voltooien drukt krijg je een venster waar je moet aangeven op welk niveau de autorisatie moet worden toegepast. Kies hier uit het dropdown menu de meest specifieke optie:

Power BI connector autorisatie

Vervolgens klik je op “verbinden”, je krijgt dan grofweg het volgende te zien:

PBI JSON verwerking

Je kan hier op “List” klikken en vervolgens op naar tabel:

Tot slot moet je de kolom nog uitvouwen en de kolommen selecteren die je wil behouden:

Power BI Kolommen uitvouwen

Als je nu de Query opslaat kan je aan de slag met de Profit data in Power BI! De laatste tip die ik nog even mee wil geven is als volgt. Eerder heb ik aangegeven dat je grotere datasets moet splitsen middels filters. Als je dat gedaan hebt kan je deze tabellen in Power BI naadloos samenvoegen:

Power BI Query toevoegenPower BI tabellen samenvoegen

Er wordt dan een nieuwe tabel aangemaakt die een samenvoeging is van de hier boven geselecteerde tabellen.

Tot slot

Het is even wat werk om op deze manier de data naar Power BI te halen, maar als het eenmaal ingericht is kan je het basisbestand eindeloos kopiëren en uitbreiden. De data kan via de scheduler prima periodiek ververst worden, houd er alleen wel even rekening mee dat zeker grotere connectoren best wat impact kunnen hebben op de performance.

Ik zal in de komende tijd nog twee andere mogelijkheden voor het ontsluiten van Profit data in Power BI uitwerken. Beide opties maken dan wel gebruik van een tussenstap, maar zijn misschien wat meer geschikt voor grotere hoeveelheden data.

2 comments

  1. Dag Herman, mooi artikel. Ik ben hier al een tijdje mee aan het experimenteren maar kom nog niet tot de gewenste oplossing. Heb je dit ook al werkend op de nieuwe URL’s (https://x.rest.afas.online/)? Ik krijg geen verbinding, heb het sterkte vermoeden dat de verbinding niet over tls 1.2 gaat. Ben erg benieuwd!

    1. Ik kan me eigenlijk niet voorstellen dat het niet over tls 1.2 gaat, wel heb ik wat gedoe gehad met het goed opbouwen van de url’s en uiteindelijk heb ik dat met de de proxy functionaliteit van een Azure Function App opgelost (in het verlengde van dit stuk https://hermanronk.nl/azure-function-apps-in-combinatie-met-afas-profit/). Ik ben daar nog een artikel over aan het schrijven, maar ik weet niet of ik dat deze week al af ga hebben.

      Zelf heb ik geen AFAS Online omgeving tot mijn beschikking om dit te testen, maar dat zal wel ergens in de komende maand gebeuren dus dan kan ik even kijken of het probleem ook bij ons speelt

Leave a Reply

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.