Power Automate - Dataverse en skiptoken

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Eppo ©
  • Registratie: Juni 2004
  • Niet online
Ik heb een power automate flow waarin ik de 'List rows from selected environment' gebruik. Deze geeft een beperkt aantal regels terug en ook een @odata.nextlink en daarmee loop ik vast. In de list rows heb ik geen mogelijkheid om de nextlink direct te gebruiken (heb ook gekeken naar de pagination optie, maar dan krijg ik teveel data terug in 1 keer om verderop in mijn flow te verwerken).

Op internet heb ik veel verschillende opties gevonden die de nextlink ombouwen naar een skip token, maar elke keer als ik de handleiding volg, dan krijg ik de melding Malformed XML en dan loop ik vast.

Dit is de nextlink die ik krijg:
code:
1
https://flow-apim-europe-002-northeurope-01.azure-apim.net/apim/commondataserviceforapps/shared-commondataser-8e3c82f7-c797-419e-90ff-86b3e8b5d424/nextLink?organization=https%3A%2F%2F[NaamVanHetBedrijf].dynamics.com&next=api%2Fdata%2Fv9.1.0%2Faccounts%3F%24select%3Dname%2Cgacacc_rsin_number%2Caccountnumber%26%24skiptoken%3D%253Ccookie%2520pagenumber%3D%25222%2522%2520pagingcookie%3D%2522%25253ccookie%252520page%25253d%2525221%252522%25253e%25253caccountid%252520last%25253d%252522%25257bE200F2D9-488A-EE11-8179-000D3A2E44F4%25257d%252522%252520first%25253d%252522%25257b14D00569-524B-EF11-BFE2-000D3A20A2A4%25257d%252522%252520%25252f%25253e%25253c%25252fcookie%25253e%2522%2520istracking%3D%2522False%2522%2520%2F%253E


En als ik die 3x decodeer krijg ik een stuk leesbaardere link:
code:
1
https://flow-apim-europe-002-northeurope-01.azure-apim.net/apim/commondataserviceforapps/shared-commondataser-8e3c82f7-c797-419e-90ff-86b3e8b5d424/nextLink?organization=https://[NaamVanHetBedrijf].dynamics.com&next=api/data/v9.1.0/accounts?$select=name,gacacc_rsin_number,accountnumber&$skiptoken=<cookie pagenumber="2" pagingcookie="<cookie page="1"><accountid last="{E200F2D9-488A-EE11-8179-000D3A2E44F4}" first="{14D00569-524B-EF11-BFE2-000D3A20A2A4}" /></cookie>" istracking="False" />


Volgens de handleidingen zou ik dan het stuk na de skiptoken moeten gebruiken, maar dan krijg ik de foutmelding. Wat doe ik fout?

Alle reacties


Acties:
  • 0 Henk 'm!

  • GRDavies75
  • Registratie: December 2014
  • Laatst online: 01-10 14:42

GRDavies75

PSN-id: GRDavies

Geen oplossing, maar misschien handig om de specifieke foutmelding ook te melden in je post (gaat toch om gevraagd worden).

Acties:
  • 0 Henk 'm!

  • Tranzity
  • Registratie: Januari 2001
  • Niet online
Je gebruikt een HTTP actie om Dataverse informatie op te halen?
https://learn.microsoft.c...webapi/query/page-results

Je zou toch echt moeten kijken naar de Paginering dmv List Rows action ipv het zelf opbouwen.
https://learn.microsoft.c...st-rows?tabs=new-designer

Acties:
  • 0 Henk 'm!

  • Eppo ©
  • Registratie: Juni 2004
  • Niet online
Dit is hetgeen ik terug krijg ik power automate

JSON:
1
2
3
4
5
6
"body": {
    "error": {
        "code": "0x80040201",
        "message": "Malformed XML"
    }
}


Ik maak geen gebruik van de HTTP request, maar maak al gebruik van de 'List rows from selected environment'. Eigenlijk de manier die hier https://learn.microsoft.c...assic-designer#skip-token wordt uitgelegd probeer ik toe te passen.

Maar hoe gemakkelijk ze het het daar aangeven:
To use it, implement a loop to parse the @odata.nextLink value in the JSON response, extract the skip token, and then send another request until you've listed the number of rows that you need.
Dat lijkt bij mij niet te werken :'(

Acties:
  • 0 Henk 'm!

  • Eppo ©
  • Registratie: Juni 2004
  • Niet online
Het is eindelijk gelukt

Ik had de skiptoken steeds handmatig door https://www.urldecoder.io/ gehaald totdat ik iets leesbaars kreeg en daarna heb ik het terug gezet via https://www.urlencoder.io/ en dat handmatig in de list rows gezet.

Aangezien dat steeds niet lukte heb ik de handleidingen eens stap voor stap gevolgd en niet in 1 set variable gezet, maar in losse. Dan kwam ik op het volgende uti:

Stap 1: decodeUriComponent de gehele nextlink
Stap 2: uriQuery de gehele link nog een keer
Stap 3: Splits hem op 'skiptoken=' en pak het laatste gedeelte
Stap 4: decodeUriComponent het laatste stuk nog een keer.

Dan houd ik een skiptoken over die wel voldoet.

Hetgeen wat anders was dan de handleidingen was dat stap 1 niet genoemd werd/niet nodig was bij de rest. En daarnaast denk ik dat de urldecoder een ander resultaat gaf dan de uriQuery, waardoor mijn handmatige manier steeds een foutmelding gaf.