Jira user properties & API

Kurt Klinner

Um den alltäglichen Horror mit SAP zu umgehen, nutzen wir in der Firma Tempo zur Erfassung unserer Zeiten (welche dann monatlich in Richtung SAP transferiert werden). Um den Übertrag ermöglichen zu können, ist es nötig einige zusätzlichen Properties pro Useraccount zu hinterlegen (ala Mitarbeiternummer etc).

Für eine handvoll User klappt das recht flott über die Oberfläche, nachdem aber aktuelle Anfragen mehrere dutzend Anwender umfassten, musste ein automatisierter Ansatz her.

Beim Versuch mit Hilfe der Jira API zu arbeiten, kam ich nicht recht zu einem Ergebnis, so dass mal wieder die Suchmaschine des Vertrauens herhalten musste. Diese füjrte mich schließlich zu https://jira.atlassian.com/browse/JRASERVER-45502

Die entscheidende Aussage von Atlassian ist

The user properties that can be set via the user profile page and the user properties exposed in the JIRA REST API are actually two completely different storage mechanisms, which explains why user properties set from EditUserProperties.jspa are not returned when you call the REST API.

WTF UI und API sprechen unterschiedliche Informationen an, aber nicht all zu lange getrauert, sondern das Lieblings-Add-On aka Scriptrunner for Jira wieder mal zum Einsatz gebracht.

Mittels folgendem kleinem Snippet kann man direkt in der ScriptRunner Console (oder in Form eines Scriptes welches man in der Console anspricht) benutzerspezifische Attribute ebenso wie über die Oberfläche setzen.

import com.atlassian.jira.component.ComponentAccessor
def userPropertyManager = ComponentAccessor.getUserPropertyManager()
def userManager = ComponentAccessor.getUserManager()

def username = userManager.getUserByName("<USERNAME>")

userPropertyManager.getPropertySet(username).setString("jira.meta.<PROPERTYNAME>","<PROPERTYVALUE>")