...
Die Azure AD App benötigt hierfür die Scopes: Sites.Read.All
, Files.ReadWrite.All
.
CMI
Für die Integration in das Produkt CMI ist folgendes nötig:
Im CMI muss primedocs als Applikation registriert sein (Scope templateManager
) und die ClientId
und das ClientSecret
wird benötigt.
Diese Daten müssen dann in der primedocs.config
hinterlegt werden:
Code Block |
---|
<primedocs ...>
...
<cmi tokenEndpoint="https://[sts-cmihost]/[cmi-Tenant]/identity/connect/token"
uploadEndpointHost="https://[cmihost].com"
clientId="[Client Id von CMI]"
clientSecret="[Client Secret von CMI]"
/>
...
</primedocs> |
Eine Demonstration dieser Integration finden Sie auf unserem YouTube Kanal.
Einbinden von CMI Daten in Vorlagen
Möchte man Daten aus CMI in primedocs Vorlagen anzeigen, kann man diese als Platzhalter über Word PlainText Content Controls mit dem Namensschema CMI_[FELDNAME]
bzw. können auch Bookmarks genutzt werden. Sowohl die Content Controls mit dem CMI
Naming als auch Bookmarks werden von CMI automatisch mit den richtigen Inhalten befüllt.
Technische Details
Beim Auswahl des primedocs “Template-Picker” wird ein iFrame erzeugt, welches auf die primedocs Web-Applikation zeigt.
Zusätzlich wird der Parameter saveLocationCmiTenant
sowie saveLocationCmiToken
mitgegeben. Im einfachsten Fall erzeugt die CMI Applikation solch ein iFrame:
Code Block |
---|
<iframe src="https://{INSTANCE-NAME}/app/web/cmi?saveLocationCmiTenant=[CMI-Tenant]&saveLocationCmiToken=[CMI-Token]"
style="height: 700px; width: 700px; border: 1px solid;">
</iframe> |
Nach dem Erzeugen des Dokuments wird es automatisch an den uploadEndpointHost
hochgeladen.
Beim Hochladen geschehen noch folgende Zwischenschritte:
Über die
ClientId
undClientSecret
wird vomtokenEndpoint
mit dem ScopetemplateManager
viaclient_credentials
einAccessToken
angefordert.Das
AccessToken
wird für den Dateiupload an[uploadEndpointHost]/[CMI-Tenant]/Template/[CMI-Token]
angehangen und der Upload wird viaHTTP POST
ausgeführt.
Nach dem Hochladen wird per Javascript an CMI dieses Objekt geliefert, sodass der Prozess im CMI fortgesetzt werden kann.
Code Block |
---|
window.parent.postMessage({
type: "template-chooser-document-uploaded",
name: result.name,
}, "*"); |