ServiceDesk Plus: modifica massiva di ticket con PowerShell

| |

Su un’installazione di ServiceDesk Plus già esistente (e discretamente popolata di ticket) mi è stato chiesto di modificare in massa tutti i ticket esistenti perché privi del Support Group assegnato. Un’operazione che si è resa necessaria solo “oggi” perché su quella istanza bisognerà far entrare un nuovo team di supporto che non dovrà chiaramente vedere richieste che non gli appartengono (e lo stesso vale per il team già esistente e che lavora da sempre su quella installazione).

Per comportamento predefinito ServiceDesk Plus permette di modificare solo 100 ticket alla volta tramite interfaccia grafica. Dopo aver aperto una nuova discussione nel forum di supporto (pitstop.manageengine.com/portal/en/community/topic/bulk-assign-to-support-group) senza però una risposta ufficiale, ho deciso di affacciarmi alla documentazione e mettere in moto le API del software con l’aiuto di PowerShell. Nello specifico si parla di aggiornare esclusivamente il Support Group di un elenco ticket che ho potuto facilmente esportare in CSV direttamente da ServiceDesk Plus (utilizzando la funzione di reportistica integrata).

Una volta creata una chiave API per il mio utente (tecnico di quell’istanza SDP) ho potuto lanciare una richiesta direttamente all’URL di SDP: https://sdp.contoso.com/api/v3/requests/1234, ottenendo così la struttura JSON del ticket in risposta. Per il mio specifico caso ho scoperto così che a interessarmi era solo questo piccolo riferimento:

{
    "request": {
        "group": {
            "name": "Team Supporto Contoso"
        }
    }
}

Dove ovviamente “Team Supporto Contoso” dovrà essere sostituito con il nome reale del team di supporto precedentemente creato su ServiceDesk Plus. Da qui alla richiesta di PUT via PowerShell il passo è relativamente breve.

$technician_key = @{"authtoken"="123A4BC5-1ABC-1234-12A3-A12BC3456D78"}
$input_group = @'
{
    "request": {
        "group": {
            "name": "Team Supporto Contoso"
        }
    }
}
'@
$input_subcategory_group = @'
{
    "request": {
        "category": {
            "name": "Categoria errata"
        },
        "subcategory": {
            "name": "Da categorizzare"
        },
        "group": {
            "name": "Team Supporto Contoso"
        }
    }
}
'@
$group = @{ 'input_data' = $input_group}
$subc_group = @{ 'input_data' = $input_subcategory_group}

Import-CSV "$PSScriptRoot\UpdateRequest.csv" | % {
    $url = "https://sdp.contoso.com/api/v3/requests/$($_.Request)"
    Write-Host "Request $($_.Request) " -nonewline
    try {
        $response = Invoke-RestMethod -Uri $url -Method put -Body $group -Headers $technician_Key -ContentType "application/x-www-form-urlencoded" -StatusCodeVariable 'statusCode'
        Write-Host "- $statusCode"
    } catch {
        $response = Invoke-RestMethod -Uri $url -Method put -Body $subc_group -Headers $technician_Key -ContentType "application/x-www-form-urlencoded" -StatusCodeVariable 'statusCode'
        Write-Host "- $statusCode - RICATEGORIZZATA"
    }
}

Cosa fa lo script? Presto detto: prepara due set di informazioni possibili, il primo è quello che ti ho già mostrato prima ed è praticamente tutto ciò che ti serve per aggiungere il Support Group ai ticket che desideri. Il secondo invece l’ho costruito nel caso in cui dei ticket non abbiano categoria e sottocategoria specificata, cosa che teoricamente non dovrebbe capitare ma che su questa istanza esisteva per alcuni residuati bellici che sono nati (e sono stati chiusi) quando ancora non c’erano neanche i campi obbligatori per la chiusura di un ticket.

Ho quindi preso il CSV dei ticket da modificare (l’ID del singolo ticket è specificato nella colonna Request), l’ho dato in pasto allo script PowerShell e l’ho lanciato, questo continuerà a invocare delle PUT verso le API di ServiceDesk Plus fino a quando i ticket termineranno. In caso di errore (che ho studiato lanciando prima una piccola ondata a campione) vorrà dire che la categoria / sottocategoria non è specificata, quindi proverò a lanciare una PUT del set di informazioni più esteso (e sì, ha funzionato correttamente).

Il tempo di conclusione dello script dipende dalla quantità di ticket da modificare e dalla velocità del server che fa girare ServiceDesk Plus. Io ho portato così il risultato a casa. Se tu hai bisogno di delucidazioni in merito a questo specifico articolo puoi sempre farmi un fischio nell’area commenti. La documentazione API di ServiceDesk Plus è fatta piuttosto bene e si trova in area amministrativa della tua istanza, con tanto di form che puoi compilare al volo per testare il tutto ancora prima di darlo in pasto a PowerShell o qualche suo simpatico collega (Python, ma non solo).

#StaySafe

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

L'articolo potrebbe non essere aggiornato

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Condividi l'articolo con i tuoi contatti:
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Commenti
Inline Feedbacks
View all comments