Skip to main content
Question

Automatische controle op inactieve behandelaarsaccounts

  • February 11, 2026
  • 9 replies
  • 166 views

Forum|alt.badge.img+1

Goedendag, 😉

Wij ontvangen regelmatig aanvragen voor behandelaarsaccounts. Na het verlenen van toegang blijkt echter dat deze accounts vaak slechts sporadisch of zelfs helemaal niet worden gebruikt.

Daarom overweeg ik om een automatische controle in te richten (bijvoorbeeld op basis van “Laatste actief”), waarbij wordt gekeken naar de activiteit van behandelaarsaccounts. Wanneer er gedurende een bepaalde periode (x aantal weken) geen activiteit of inlogmoment is geweest, zou het account automatisch kunnen worden gearchiveerd.

Mijn idee is om dit via Power Automate in te richten met dan gelijktijdig een informatiemail die naar de betreffende gebruiker wordt verstuurd. Of zou dit binnen TOPdesk ook haalbaar zijn?

Mijn vraag is of iemand hier al ervaring mee heeft en of de TOPdesk-API’s de juiste velden ondersteunen om dit goed te kunnen inrichten.

Groet,

9 replies

JeroenvdK
Forum|alt.badge.img+4
  • Starter
  • February 11, 2026

Staat op onze backlog om dit te bouwen in een Action Sequence. Proces ongeveer als volgt:

  1. Haal alle actieve (non-archive, login actief) operators op die:
    1. Geen API zijn
    2. Langer dan x tijd niet zijn ingelogd
    3. Langer dan x tijd geleden zijn aangemaakt
  2. Zet op deze operators het vinkje “Can login” uit
  3. Mail elke operator dat het vinkje uitstaat
  4. Haal alle operators op die
    1. Langer dan 2x tijd niet zijn ingelogd
    2. Langer dan x tijd geleden zijn aangemaakt (dit zou niet nodig hoeven zijn)
  5. Archiveer deze operators

Wij bieden dan ook nog in de periode tussen 3 en 5 de operators de mogelijkheid om via Self-Service hun account weer te activeren mocht dat nodig zijn. Daarvoor hebben we een SSP form dat een change met een automation erachter activeert. Scheelt ons echt behoorlijk wat werk na elke opruimactie.

Er is een service in TOPdesk die je de last login datums kan verstrekken (wel undocumented/unsupported helaas - ik heb gevraagd dit veld aan de API toe te voegen). De rest van de benodige gegevens kun je volgens mij wel opvragen via de API. Dan zijn we niet afhankelijk van een andere tool, zoals we dat nu wel zijn (we exporteren nu wat data via SQL daarvoor).


Christiaan Fousert
Forum|alt.badge.img+5

Staat op onze backlog om dit te bouwen in een Action Sequence. Proces ongeveer als volgt:

  1. Haal alle actieve (non-archive, login actief) operators op die:
    1. Geen API zijn
    2. Langer dan x tijd niet zijn ingelogd
    3. Langer dan x tijd geleden zijn aangemaakt
  2. Zet op deze operators het vinkje “Can login” uit
  3. Mail elke operator dat het vinkje uitstaat
  4. Haal alle operators op die
    1. Langer dan 2x tijd niet zijn ingelogd
    2. Langer dan x tijd geleden zijn aangemaakt (dit zou niet nodig hoeven zijn)
  5. Archiveer deze operators

Wij bieden dan ook nog in de periode tussen 3 en 5 de operators de mogelijkheid om via Self-Service hun account weer te activeren mocht dat nodig zijn. Daarvoor hebben we een SSP form dat een change met een automation erachter activeert. Scheelt ons echt behoorlijk wat werk na elke opruimactie.

Er is een service in TOPdesk die je de last login datums kan verstrekken (wel undocumented/unsupported helaas - ik heb gevraagd dit veld aan de API toe te voegen). De rest van de benodige gegevens kun je volgens mij wel opvragen via de API. Dan zijn we niet afhankelijk van een andere tool, zoals we dat nu wel zijn (we exporteren nu wat data via SQL daarvoor).

Dat is een hele mooie oplossing. Zou ook voor ons erg interessant kunnen zijn. Alhoewel het aantal behandelaars niet zo heel groot is en ik dit nog met de hand zou kunnen doen. Maar altijd interessant om eens naar te kijken.


Forum|alt.badge.img+4
  • Explorer
  • February 12, 2026

Wij werken in de SaaS‑omgeving met versie 15.10.012.
In deze versie is het overzicht "Overzicht behandelaarslicenties" beschikbaar.

Binnen dit overzicht kun je filteren op datum (laatst actief). Door bijvoorbeeld een datum van een half jaar geleden te selecteren, zie je meteen welke behandelaars al zes maanden niet hebben ingelogd. Je kunt vanuit dit scherm ook een export maken.

Dit zou toch aansluiten bij jouw vraag?

 


Robin Noppert
Forum|alt.badge.img+11

Ah dit gaat mij enorm helpen! ik heb net het gebruikersbeleid afgeschreven voor ons bedrijf, en dit zal helpen!


JeroenvdK
Forum|alt.badge.img+4
  • Starter
  • February 13, 2026

Wie durft mee te testen… ;-)?

Een expliciete disclaimer vind ik hier wel belangrijk… al is het eigenlijk impliciet al van toepassing. Let op wat je doet en gebruik dit script voor eigen risico! Je kunt door gebruik van verkeerde waardes jezelf namelijk uit je eigen TOPdesk omgeving buitensluiten. Check ook of de condities die ik heb gebruikt voldoende passend zijn voor jouw eigen TOPdesk omgeving.

Stappen die zaken echt aanpassen/uitsturen heb ik geel gemarkeerd. Je wilt die waarschijnlijk eerst disablen om te kijken en te dubbelchecken wat er geraakt gaat worden…

Type Action Sequence is een webhook.

Ik gebruik een vrij veld op de operator kaart (ExtraFields1.Date5), omdat ik dat in het script makkelijker vond. Daarnaast heeft het als voordeel dat je dan ook op andere momenten via reguliere TOPdesk selecties kan checken wat de Last login datum van je operator accounts was bij de laatste run van dit script.

 

Step

Status

Name

Condition

Description

1

Disabled

debug_LastLogonDateOffset

 

DEBUG – Check calculation for LastLogonDate filter

2

Disabled

debug_CreateDateOffsetDays

 

DEBUG – Check calculation for CreateDate filter

3

Enabled

GetOperatorUserActivity

 

Use undocumented TOPdesk endpoint to retrieve Operator Last Login information.

4

Disabled

debug_CountOfOperatorsToProcess

 

DEBUG – Check number of iterations for Operator maintenance

5

Enabled

GetOperatorDetailsAndPatch

 

Repeating step based on size of Step 3

5.1

Enabled

GetOperatorDetails

Where Operator has a las login value

Step added for testing purposes.

Get OperatorDetails for Operators that will be patched.

5.2

Enabled

PatchOperatorDetails

Where Operator has a las login value

Write LastLoginValue to Operators.

Field used: ExtraFields1 . Date5

6

Enabled

GetExpiredOperators

Where Operator is active, has login permission, is not an API account and both dates are before the date calculated by the OffSetVariable related to “now”

Retreive all Operator accounts to process

7

Enabled

DisableExpiredOperators

Result of Step 6 <> 204. There have to be Operators to process.

Repeating step based on size of step 6

7.1

Enabled

SetLoginPermissionsToDisabled

Where Operator has status “Operator” (double check), has login permissions and is NOT an API account.

Toggle the Login permissions setting for operator to false

7.2

Enabled

EmailOperator

Where Operator has status “Operator” (double check), has login permissions, is NOT an API account (double check) and has a value in the email address field.

Send an email to the operator to inform them their account had been disabled

 


Niels Henriët
Forum|alt.badge.img+4

Een mooie. Wij hebben hem ook draaien, maar op een andere manier.

 

De werking is als volgt:

  • Eén keer per week wordt via een ingeplande actie de laatste login en het type licentie (betaald of gratis) opgehaald.

  • De licentiesoort en de datum van de laatste login worden weggeschreven naar vrije velden op de behandelaarskaart.

  • Vervolgens wordt berekend hoeveel dagen een behandelaar inactief is.

  • Wanneer een behandelaar langer dan x dagen inactief is (in ons geval 360 dagen), wordt het account automatisch gearchiveerd.

  • Als er geen laatste login bekend is, wordt het aantal inactieve dagen berekend vanaf de aanmaakdatum van de behandelaarskaart.

De actie wordt uitsluitend uitgevoerd op behandelaren met de volgende kenmerken:

  • status: “operator”

  • accountType: “regular”

  • apiAccount: “false”

  • archive: “false”

Daarnaast hebben wij een specifieke behandelaarsgroep uitgesloten van deze automatisering. Behandelaren die lid zijn van deze groep worden niet gearchiveerd. Denk hierbij bijvoorbeeld aan leveranciersaccounts of een “glass break” account.


JeroenvdK
Forum|alt.badge.img+4
  • Starter
  • February 17, 2026

Ook mooi ​@Niels Henriët en dank voor het delen!

Ik heb er bewust voor gekozen om er een tweetrapsraket van te maken (eerst login deactiveren, daarna pas operator archiveren). Mijn script hierboven doet trap 1 daarvan. De rest moet nog volgen.

Reden om het in 2 stappen te doen is dat ik wil dat na de initiele loginblokkade de operator nog een bepaalde tijd zelf zijn account kan heractiveren. Daarvoor heb ik een form op de SSP met een change die een AS aftrapt om de blokkade weer ongedaan te maken (door de koppeling tussen Person en Operator kan dat tegenwoordig op een nette/veilige manier).

En die werkwijze in 2 stappen geeft mij de mogelijkheid om relatief snel al de login te deactiveren op inactieve accounts. Na een langere periode nog altijd inactief ga ik de operator dus wel ook echt archiveren waarna de “heractivatie self-service” niet meer werkt. De persoon krijgt dan een reactie op de change om zich te melden voor heractivatie van het operator account.

Zo houden we de licenties flink strakker in de gaten dan voorheen en die SelfService heractivatie scheelt ons als beheerder een hoop gedoe.


Forum|alt.badge.img

In ons bedrijf hadden we hetzelfde probleem.
Dit hebben we opgelost via een geautomatiseerd process waarbij de sporadische behandelaars standaard geen rechten hebben, maar deze tijdelijk (max 30 dagen) kunnen aanvragen via een formulier in het SSP.

Wat heb je hiervoor nodig?

  • Een formulier het object veld waarin de assets zitten gelinkt aan de behandelaarsgroepen.
  • Assets met daarin de behandelaarsgroep
  • Behandelaarsgroepen gelinkt aan de permission groups
  • Een automatisatie om de behandelaar te koppelen aan de groep en taken
  • Een automatisatie om de behandelaar te ontkoppelen van de groep en taken.


 


Forum|alt.badge.img+2
  • Starter
  • February 23, 2026

De actiereeks die ik gemaakt heb die dit gebruikt staat 1 keer per dag ingepland om 2 uur in de nacht ofzo.

WARNING:
Gebruik van de endpoints is op eigen risico. TOPdesk kan op elk moment wijzigingen doorvoeren of de endpoint uitschakelen, zonder voorafgaande melding.
Dit kan dan leiden tot breaking changes.

even een disclaimer omdat de service in stap 1 niet gedocumenteerd staat. 

stappen:
1 Get op /services/active-user-overview/api/all-user-activity

2 get op archiveer redenen 

3 herhalende stap

     3.1 get op behandelaar /tas/api/operators/id/${_responses.getActiveUsers.body.operators[i].id}

     3.2 stuurt mail naar behandelaar 

     3.3 archiveert behandelaar. 

 

 

de voorwaarde voor stap 3.2 en 3.3  werkt als volgt waarin ik kijk naar of ze een betaalde licentie hebben en dan vergelijk is nog het aantal dagen in mijn variabele met de huidige dag en als dat een match is dan is het true en anders niet. wij hebben archiveren op 6 maanden daarom de namen van de variabele en assign  

<#setting time_zone="Europe/Amsterdam">
<#if _responses.getActiveUsers.body.operators[i].lastActive??>
<#assign interval = _variables.Archiveren?number * 60 * 60 * 24 * 1000>
<#assign unixTime = _responses.getActiveUsers.body.operators[i].lastActive>
<#assign inlogDatumPlus6Maand = unixTime + interval>

<#if inlogDatumPlus6Maand?number_to_date?string["yyyy-MM-dd"]==.now?string["yyyy-MM-dd"] && _responses.getActiveUsers.body.operators[i].licensed == true>true</#if>
<#else>
<#assign interval = _variables.Archiveren?number * 60 * 60 * 24 * 1000>
<#assign unixTime = _responses.getBehandelaar.body.creationDate?date("yyyy-MM-dd")?long>
<#assign inlogDatumPlus6Maand = unixTime + interval>
<#if inlogDatumPlus6Maand?number_to_date?string["yyyy-MM-dd"]==.now?string["yyyy-MM-dd"] && _responses.getActiveUsers.body.operators[i].licensed == true>true</#if>
</#if>