TeamLeader - Custom fields in V2 API tabellen

In een andere topic (Teamleader Power BI views voor custom fields die meerdere waardes toestaan) werd beschreven hoe “custom fields” van TeamLeader via de V1 database kunnen ingelezen worden in Power BI.

Deze logica gaat echter niet op voor de V2 databank, in geen enkel van de beschikbare tabellen zijn “custom fields” zichtbaar.

Hoe kunnen “custom fields” via de V2 databank uitgelezen worden in Power-BI ?

De V2 API custom fields van Teamleader zijn beschikbaar als views:

Daarnaast kunnen de V1 API custom fields gebruikt worden. De V2 API mist nog talrijke elementen, dus de meeste gebruikers werken voornamelijk met de V1 API SQL tabellen.

Voor custom fields die meerdere waardes kunnen hebben en V1 tabellen zijn er in de versies 20.1.394 en nieuwer nieuwe mogelijkheden beschikbaar gekomen door zowel de lijst toe te voegen als een gedenormaliseerde kolom als een view. Meer informatie in Teamleader Power BI views voor custom fields die meerdere waardes toestaan.

Daarnaast staan er in sommige omgevingen veel ongeldige waardes in een custom field. Denk aan een datum in het jaar 20.000 of een getal zoals “KWH”. Meer informatie hoe daarmee om te gaan staat in Fix Teamleader Incorrect Custom Field Values.

Ik merk inderdaad dat een deel van de custom fields nu beschikbaar zijn als view, dat is een hele stap voorwaarts!
Maar het is inderdaad maar een deel, 14 van de 21 om precies te zijn. Er is ook geen lijn in te trekken, het zit hem op alle componenten. Nochtans beweert TeamLeader dat elk van deze custom fields via de V2 API kunnen uitgelezen worden.

De custom fields zijn inderdaad wel allemaal beschikbaar onder de V1-databank, maar die heeft dan weer andere beperkingen waardoor we bewust gekozen hebben om de data uit de V2-databank uit te lezen. Bovendien is het maar een kwestie van tijd voor de V1-databank “obsolete” zal komen te staan.

Als ik het goed begrijp, dan zijn er 21 custom fields op een tabel. Die zijn wel zichtbaar in de Teamleader website qua setup en in de V1 tabellen, maar niet in de V2 views.

Kan een schermafdruk toegevoegd worden van:

  • de 21 custom fields in de Teamleader setup tabel
  • de custom fields in de V1 tabel (F4 drukken op tabelnaam in Query Tool)
  • de custom fields in de V2 tabel (F4 drukken op tabelnaam in Query Tool)

Mogelijk dat te achterhalen is waardoor ze niet aanwezig zijn.

Gedefinieerde velden in Teamleader

Custom fields op Invoices in V1 tabellen

Teamleader Custom fields zichtbaar in Power BI

Ik heb drie afbeeldingenopgeladen:

  • een print-screen van de gedefinieerde “custom fields” in TeamLeader
  • een print-screen van een voorbeeld (invoices) van “custom fields” die ik zie in de V1
  • een print-screen van de “custom fields” die ik zie in Power-BI (via de V2)

Er ontbreken 2 custom fields bij “company”:

  • custom files
  • extra modules

3 custom fields bij "invoices”:

  • date
  • subsidiary
  • to be converted into

En 1 custom field bij “subscriptions”:

  • subsidiary
  • tickets (last activity).

Ik begrijp dat Invoice uit Teamleader een voorbeeld is dat niet goed gaat.

De definities in Teamleader zelf zijn:

  • Date: single line text
  • Subsidiary hsbcad: single selection (keuzelijst)
  • To be converted into: single line text

In de V1 Teamleader tabel (ik vermoed InvoicesAll) staan hiervoor drie velden:

  • c_date
  • c_subsidiary_hsbcad_...: de ID en waarde
  • c_to_be_converted_into

De afbeelding “Teamleader Custom fields zichtbaar in Power BI” begrijp ik niet. Ik had verwacht een afdruk van de V2Flat tabel InvoiceCustomFieldValues of CustomFieldsByInvoice(invoice_id).

Welke tabel is de afbeelding “Teamleader Custom fields zichtbaar in Power BI”?

De SQL gebruikt in de definitie van de viewInvoiceCustomFieldValues is:

select cfd.type
       cfd_type
,      cfd.label
       cfd_label
,      cfd.group
       cfd_group
,      cfd.required
       cfd_required
,      ivedet.* prefix with 'ife_'
,      ive.* prefix with 'ive_'
from   v2.invoices ive
join   CustomFieldsByInvoiceId(ive.id) ivedet
on     ( ivedet.value_as_string is not null
         or
         ivedet.value_as_number is not null
         or
         ivedet.value_as_number is not null
         or
         ivedet.value_as_array is not null
         or
         ivedet.value_as_boolean is not null
         or
         ivedet.value_object_id is not null
       )
join   CustomFieldDefinitions cfd
on     cfd.id = ivedet.definition_id

Mogelijk helpt dat bij het uitzoeken.

Via de Invantive Query Tool zie ik helemaal niks van V2Flat - wat op zich al vreemd is:

Screenshot Query Tool

Dus ik kan je helaas geen afdruk van de “InvoiceCustomFieldValues” bezorgen.

Via de SQL-editor in de Invantive Cloud zie ik deze tabel wel in de V2Flat:

Screenshot SQL editor

Echter, als ik de tabel tracht uit te lezen krijg ik de volgende foutmelding (itgenpwf002):

Screenshot foutmelding

Kortom, er is zeker een tabel “InvoiceCustomFieldValues”, alleen is die overal zichtbaar en kan die niet uitgelezen worden.

Het ontbreken van het schema V2Flat voor de Teamleader V2 API tabellen in het Query Tool komt waarschijnlijk doordat het Query Tool in de 20.0 release geïnstalleerd staat. De V2Flat data is pas toegevoegd in 20.1 BETA. De download van Query Tool hiervoor is te vinden op https://releasenotes.invantive.com/BETA/invantive-query-tool.html en kan geïnstalleerd en gebruikt worden naast de 20.0 release.

De methodologie is:

  • van een productierelease van een Invantive GUI product kan maar 1 hoofdversie geïnstalleerd staan. Hoofdversies zijn 17.32, 20.0 en t.z.t. 20.2.
  • van een BETA release kunnen meerdere versies tegelijk geinstalleerd en gebruikt worden. Versies zijn bijvoorbeeld 20.1.1, 20.1.2, 20.1.3, etc.
  • voor niet-GUI producten gelden andere releasecycles.

De itgenpwf error is meestal een timeout. De echte foutmelding wordt helaas niet getoond op dit moment. De V2Flat tabellen zijn erg traag en structurele snelheidswinsten zijn niet te behalen. Voor optimalisatie raden we aan om een consultant te betrekken en vanuit het rapportagedoel te kijken welke shortcuts acceptabel zijn.

Voor deze specifieke vraag raad ik aan om eerst te testen met maar een deel ophalen, zoals bijvoorbeeld:

select *
from   InvoiceCustomFieldValues
limit  1

Deze query stopt automatisch direct na ontdekken van de eerste factuur met een waarde voor een custom field.

Mocht dit ook erg lang duren, probeer het dan via de BETA van het Query Tool.

Mocht dat problematisch zijn, dan is advies om de V1 tabellen te gebruiken.

Met behulp van de Query Tool 20.1 zie ik effectief de tabel ““InvoiceCustomFieldValues”, alsook de structuur. Maar zelf met het toevoegen van “limit 1” aan het sql-statement krijg ik een “time-out”. Wat me doet vermoeden dat er toch iets grondig mis is met de onderliggende query.

Fijn dat gelukt is de view te vinden. Helaas zal ook de limit 1 moeten wachten op de eerste rij. Advies is om te kijken of het op V1 beter gaat. De Teamleader API heeft helaas performancetechnisch en qua ontwerp een aantal serieuze beperkingen.

Op basis van Invantive techniek zijn er ook op de dealers pagina een aantal partijen die data repliceren naar een database. Mogelijkerwijs dat zij een dienst hiervoor kunnen leveren.