Anbindung mobiler Prozesse an Microsoft Dynamics AX

Milen KoychevEnterprise Integration, Microsoft Azure, Microsoft Dynamics Mobile, Mobile Services, Mobility

Oft kommen Kunden mit dem Wunsch auf uns zu, Prozesse aus Ihrem Microsoft Dynamics AX System zu mobilisieren. Auch, wenn es schon einige Lösungen für mobile Prozesse auf Basis von Dynamics AX auf dem Markt gibt, sind die Kundenanforderungen so spezifisch, dass die Custom-App-Entwicklung zu einem Standardvorgehen geworden ist.
Auch wenn wir für unsere Kunden unterschiedliche Apps entwickeln, stehen wir am Anfang einer App-Entwicklung immer vor demselben Problem – wir binden wir am sichersten und effektivsten die Benutzer (die Mobile-Worker) an das Dynamics AX System.

Unternehmenskontext

Welche Möglichkeiten gibt es?

Webservice Wrapper

Ein standardmäßiges Vorgehen zur Anbindung von Dynamics AX an einen mobilen Client würde zunächst die Möglichkeit eines personalisierten Webservice-Wrappers nahelegen. Bei diesem Vorgehen wird ein Wrapper für die gewünschte Funktionalität implementiert, sofern diese nicht bereits von Dynamics AX über einen Webservice bereitgestellt wird. Dadurch erweitert man den Funktionsumfang der vom Dynamics AX Server bereitgestellten Webservices. Der Nachteil dieser Methode ist, eine ggf. nicht standardisierte Schnittstelle für die mobile Seite bereitzustellen, wodurch die Entwicklung auf Seite des mobilen Client erschwert werden kann. Wenn zusätzlich noch eine Authentifizierung benötigt wird und das ganze durch Firewalls abgesichert werden muss, dann kommt diese Möglichkeit an die Grenzen. Dies trifft insbesondere dann zu, wenn der Service sich prinzipiell gegen einen Active Directory Dienst authentifizieren könnte, da dieser alle Daten und Richtlinien beinhaltet. Ferner ist beschränkt diese Möglichkeit die Freiheit in der Gestaltung der App und ist nur in Fällen ratsam, wo ein einziges Anwendungsszenario abgebildet werden soll und mit Sicherheit keine weiteren folgen.
Microsoft Dynamics AX Connector für mobile Applikationen
Eine andere Möglichkeit ist die Nutzung des von Microsoft bereit gestellten Microsoft Dynamics AX Mobile Connector für mobile Applikationen. Dieser ermöglicht die Kommunikation mit einzelnen Services des Dynamics AX Servers über dedizierte Endpunkte. Damit gewinnt man die Kontrolle über die nach außen gelegten Schnittstellen zurück und hat einen standardisierten Weg, den Zugriff auf die Ressourcen zu ermöglichen. Der Microsoft Dynamics AX Connector benötigt ein .NET Business Connector Proxy Account und einen konfigurierten Windows Azure Service Bus. Ferner werden noch ein x.509 Zertifikat und die Active Directory Dienst URL zur Authentifizierung benötigt. Hier noch einmal im Überblick die benötigten Parameter

  • Windows Azure Service Bus Konfiguration
    • Azure service namespace
    • Azure service identity name
    • Azure service identity password
  • Thumbprint of X.509 certificate used to sign SAML Token
  • Endpoint URI des/der Dienste(s)
  • ADFS URL
  • Support Email

Mit dieser universell konfigurierbaren Schnittstellen-Komponente, wir eine effektive Nutzung des Dynamics AX für mobile Applikationen ermöglicht. Im Folgenden werden unterschiedliche Nutzungsszenarien für den Dynamics AX Connector vorgestellt.

Windows Azure Mobile Services

Die von Microsoft zur Entwicklung mobiler Applikationen angebotenen Dienste im Windows Azure Mobile Services Portfolio, bieten dem Entwickler die Freiheit die Applikation mit gängigen Verfahren und Technologien auszustatten, ohne dabei auf die Plattform zu achten. Es gibt SDKs für iOS, Andorid, HTML und Windows, sowie eine REST-API für alle anderen benötigten Plattformen. Damit besteht dann die Möglichkeit Push über unterschiedliche Protokolle zu realisieren, wie z.B. SMS und E-Mail. Ferner können Daten applikationsübergreifend auf Azure-Seite durch die SDKs und REST-API genutzt werden. Dies beinhaltet sowohl Windows Azure-SQL-Datenbank, BLOB-Speicher, Tabellenspeicher als auch Datendienste von Drittanbietern wie Mongo DB.
Nach der erfolgreichen Implementierung auf der mobilen Seite, erfolgt die Anbindung der Windows Azure Mobile Services an den Dynamics AX Server. Dazu wird der für den Microsoft Dynamics AX Mobile Connector erstellte Windows Azure Service Bus genutzt. Über frei programmierbare Mobile Service Scripts innerhalb des Windows Azure Mobile Services, erfolgt die Ansteuerung des Dynamics AX Servers über die Erstellung von Serive Bus Queue Nachrichten. Diese werden durch das Script beispielsweise bei einer Änderung des Datensatzes in der Datenbank generiert und dann mittels des Service Bus zum AX Endpunkt übermittelt.

MobileServices

Generischer Ansatz ohne Mobile Services

Falls die Nutzung der angebotenen Dienste im Windows Azure Mobile Services Portfolio nicht benötigt werden, kann auch ein von der Sunato unabhängigerer Weg beschritten werden.

DynamicService

Integrale Bestandteile dieser Lösung sind:

  • Windows Azure Service Bus
  • Windows Azure Access Control Service (ACS)
  • Windows Azure Active Directory Federation Services (ADFS)
  • Application Integration Framework (AIF) über HTTP

Der Dynamics AX Service registriert sich über das AIF Azure Service Bus Adapter beim Windows Azure Service Bus. Der ADFS dient hier als IdentityProvider im ACS. Der ACS ist im ADFS als vertrauenswürdige Quelle eingestellt. Der mobile Client ruft zuerst den ADFS auf um einen SAML Token zu erhalten. Danach ruft der Client den ACS auf und übergibt den erhaltenen SAML Token. Der ACS liefert dann einen Software Token zurück. Der Dynamics AX Service ist über einen Relay im Windows Azure Service Bus erreichbar, welchen der mobile Client mit beiden Token dann direkt ansprechen kann. Die Anfrage der mobilen Applikation wird dann direkt zum Service weitergeleitet. Der Service ruft dann die entsprechenden XPP Methoden auf, welche die Implementierung darstellen und die Daten ins Dynamics AX schreiben oder lesen. Die Services selbst werden über den Dynamics AX Client erstellt und konfiguriert.
Dieses Vorgehen ermöglicht eine freie Gestaltung der mobilen Applikationen und eröffnet die Möglichkeit Antworten vom Server auch in anderen Formaten, wie z.B. JSON, auszuliefern.