SAP IDM: Ändern des repository type eines Repo Jobs

Beim Implementieren von repository Jobs hat SAP eine Funktionalität vergessen, nämlich die, einen repo Job auf einen anderen Repository Type zu binden. Das Feld ist in Eclipse einfach ausgegraut, auch wenn man im Bearbeitungsmodus ist.

Wie kann man das nun so lösen, dass man nicht alle Repo Jobs neu anlegen muss, also zum Beispiel wenn man einen neuen Job für ABAP Lastausgleich auch für ABAP Applikationsserver verwenden möchte? Das wäre ja sonst doppelter Aufwand. Außerdem möchte man vielleicht die SAP Repotypen durch eigene ersetzen? Auch dann will man nicht alles nochmal durchlaufen.

Die Antwort liegt wie so oft in der Datenbank. Der Repo Typ wird in der Tabelle mc_jobs über die beiden Spalten mcRepositoryTypeQN und mcRepositoryTypeId ausgesteuert.

Beispiel

update mc_jobs set mcRepositoryTypeQN ='customer.idm.connector.abap:reptype.ABAPLoadBalancedConnection',
mcRepositoryTypeId = 11 where jobid = 1234

Dieses Statement aktualisiert den Repo Typ des Jobs 1234 durch einen anderen Repo Typ.

Wie bekommt man nun die korrekten Werte für die beiden Spalten mcRepositoryTypeQN und mcRepositoryTypeId?

Die einfachste Variante ist das Anlegen eines neuen Rep Jobs für den Ziel-Repotyp und dann

select mcRepositoryTypeQN,mcRepositoryTypeId = 11 from mc_jobs where jobid = 2345

Viel Spass beim IDM programmieren.

SAP IDM Provisionierungsqueue

Wenn man im SAP Identitiy Management in der Datenbank die Provisionierungs-Queue ansieht, dann kann es sein dass man zB erhält:

select count(*) from mxp_provision

15693

Was macht man nun mit der Zahl? Schwierig, denn absolut kann sie nicht wirklich etwas aussagen. Verschiedene Blogs und Tutorials haben Informationen über die einzelnen Stati, aber ob man sich wirklich drum kümmern muss sieht man nur dann wenn man sich auch ansieht, ob das betrachtete Repo überhaupt online ist. Bei Kunden mit großen Systemlandschaften durchaus ein Thema.

Aus der Verknüpfung mit den States und mit den Repositories die aktiviert sind ergibt sich folgende praktische Abfrage

select state.name, rep.rep_name, prov.* from mxp_provision prov inner join mxp_state state on prov.state = state.statid inner join mc_repository rep on rep.rep_id = prov.repositoryid  where rep.rep_disabled = 0 order by state desc

Die Einträge, die nun noch hochkommen sind die, die man sich wirklich anschauen sollte, sortiert nach dem höchsten Status.

Jira Konfiguration für SSL

Die Dokumentation für das Selbsthosting von Jira ist was den Java Keystore betrifft ganz gut.

Für die Vewendung des SSL Zertifikats im server.xml File des Tomcat Servers gibt es aber doch 2 Dinge zu beachten:

Erstens erwartet der Tomcat den JKS im User Home des Jira Users (klingt logisch, man ist aber doch in Versuchung, das keytool unter root laufen zu lassen) und zweitens wäre da noch das Konfigurationsfile, in dem in der Standadauslieferung ein paar Direktiven fehlen.

Bei mir sieht der Jira Connector unter CentOS so aus:

<Connector port="8443" maxHttpHeaderSize="8192" SSLEnabled="true"
relaxedPathChars="[]|" relaxedQueryChars="[]|{}^&#x5c;&#x60;&quot;&lt;&gt;"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true" useBodyEncodingForURI="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/home/jira/.keystore" keystorePass="changeit"
ciphers="TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,
TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384,
TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,
TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,
TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" />

Berechtigungen: Orgebenen für SAP EWM

Es sieht so aus, als hätten die Entwickler von SAP bei der Definition des Rollenkonzepts zwei Orgwerte vergessen. Ich empfehle, die folgenden beiden Berechtigungswerte im SAP EWM zu Orgebenen zu machen:

/SCWM/ORG und APO_LOC

Das geht über den Report PFCG_ORGFIELD_CREATE

Als Resultat sind in allen abhängigen Rollen die Werte über die Orgfelder in den Rollen pflegbar und eine Ableitung wird möglich.

Auswirkungen von SAP Hinweis 2399477

Mit dem SAP Hinweis 2399477 und den verwandten Hinweisen bringt die SAP Änderungen am ITS handler CL_HTTP_EXT_ITS in Umlauf. Diese Änderungen bewirken aber auch eine Korrelation des Parameters sap-theme am URI mit dem ~theme Parameter, den man aus der ITS Welt kennt. Wenn man nun aber ein IAC Service im Portal integriert oder aber auch einen direkten Link zur IAC im Format /…/IAC?sap-theme=xxx verwendet, dann wird der gute alte ~theme Wert für die IAC von dem XXX übersteuert. Wenn man also kein Thema XXX in der IAC hat, dann bekommt man einen RABAX, ganz egal, ob man z.B. ~theme=99 in der Konfiguration des IAC Service hinterlegt hat.

Mein Workaround: ~sap-theme einfach nicht mehr verwenden im Aufruf, auch wenn es kleinere Auswirkungen in der Formatierung beim Aufruf aus dem Portal hat.

Das Biest bezwingen – Performance aus dem Z-GPRS3 von Seneca rausholen

Das Z-GPRS3, ausgeliefert von der italienischen Firma Seneca, ist ein technisch aktuelles Anzeige- und Kontrollgerät für Messwerte aller Art. Es besitzt die Möglichkeit, die Werte über ein GPRS Interface zu übertragen und in Reports anzuzeigen. Dieses Reporting basiert auf moderner Technologie und kann daher das Berichtsfenster aktualisieren, ohne dass die gesamte Webseite im Browser neu aufgebaut werden müsste. Die Technologie dahinter wird in einer Bibliothek namens jQuery gekapselt.

Wenn man sich nun die Berichte über das Internet ansieht, sieht man eine sehr lange initiale Ladezeit. Wir reden hier von bis zu drei Minuten. Nach dieser Zeit werden die Berichte ganz normal und ohne weiteres Warten dargestellt.

Aus diesen Beobachtungen heraus haben wir einen Mitschnitt der Browserkommunikation mittels der Entwicklerwerkzeuge durchgeführt. Wie man am Screenshot deutlich sehen kann werden drei große Dateien geladen bevor die einzelnen Messwerte in kleinen Datenpaketen nachgeladen werden. Diese drei Dateien verzögern also die gesamte Antwortzeit des Systems.

Im ersten Versuch einer Optimierung sind wir an der „same origin policy“ gescheitert, welche besagt, dass die Anfragen immer zum gleichen Server zurück gehen müssen, von welchem auch jQuery geladen wurde.

Was sollten wir nun machen? Eine Option wäre, die Verbindung des Seneca Geräts über LTE abzuwickeln. Durch die zusätzlich benötigte Hardware ist dies aber für die aktuelle Installation in einem solarbetriebenen, autonomen Umfeld eher ungeeignet.

Die andere Art, die Aufgabenstellung zu lösen ist es, das Seneca Gerät über einen Zwischenserver zu verbinden, welcher das Laden von verschiedenen Quellen überwachen kann. Wir haben uns in diesem Zusammenhang für den Apache Webserver entschieden, welchen wir im „reverse proxy“ Modus betreiben. In diesem Modus werden alle Anfragen von den Clients über diesen Webserver an das Seneca Gerät weitergeleitet. Bis zu diesem Teil hat sich die bisherige Funktionsweise und auch die Architektur kaum geändert. Durch den zwischengeschalteten Server wird es aber möglich, für Zugriffe auf spezifische Adressen das Ladeverhalten zu beeinflussen.

Wir haben also die zuvor ermittelten Dateien in ein öffentlich zugreifbares Verzeichnis auf dem gleichen (wichtig!) Server kopiert. Dann haben wir den Apache Webserver so konfiguriert, dass bei Zugriffen auf diese Dateien eine Umleitung auf das Verzeichnis am Webserver (und nicht auf dem Seneca Gerät) erfolgt.

Wenn man das so macht, gehen die Zugriffe auf diese großen Dateien nicht bis auf das Seneca Gerät zurück, aber die Anfragen für die einzelnen Messwerte werden sehr wohl bis auf das GPRS Gerät umgeleitet.

Fröhliches Messen!