Konzept
primedocs web ermöglicht es, die primedocs Vorlagen in anderen Webapplikationen zu integrieren.
Microsoft SharePoint
primedocs kann direkt aus einer SharePoint Dokumentbibliothek aufgerufen werden. Die primedocs SharePoint App integriert sich hierbei in die Toolbar:
Über die Toolbar Schaltfläche werden Sie in die primedocs web-Applikation weitergeleitet, welche nun alle Dokument direkt in der jeweiligen SharePoint Liste abgelegt:
Technische Details
Für die Konfiguration wird im SharePoint “Root” eine Liste primedocsSettings
hinterlegt mit einem Element TemplatePickerUrl
, das auf https://{INSTANCE-NAME}/app/web/sharepoint
zeigt.
Die installierte SharePoint-App fügt der konfigurierten URL beim Auslösen der Schaltfläche weitere Parameter (saveLocationSharePointSiteId
, saveLocationSharePointSiteName
, saveLocationSharePointFolderPath
, saveLocationSharePointListId
, saveLocationSharePointListName
, saveLocationSharePointUrl
) hinzu, sodass primedocs web die Dokumente in der richtigen Dokumentenbibliothek ablegen kann.
Die Azure AD App benötigt hierfür die Scopes: Sites.Read.All
, Files.ReadWrite.All
.
Microsoft Teams
primedocs kann direkt aus Teams aufgerufen werden.
Hierbei gibt es die Möglichkeit primedocs direkt als App zu nutzen:
Generierte Dokumente werden dann automatisch im OneDrive des Benutzers gespeichert.
Oder als Channel-Tab - die generierten Dokumente werden dann im Channel hinterlegt:
Technische Details
Die Teams App muss in der primedocs.config konfiguriert werden und das Manifest muss anschliessend über die Teams Administration verteilt werden.
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:
<primedocs ...> ... <cmi tokenEndpointHost="https://[sts-cmihost.com]" 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.
Die Konfiguration bei der gehosteten CMI Version sieht in der Regel so aus:
<primedocs ...> ... <cmi tokenEndpointHost="https://sts3.prod.cmicloud.ch" uploadEndpointHost="https://docintegration-template.prod.cmicloud.ch" clientId="[Client Id von CMI]" clientSecret="[Client Secret von CMI]" /> ... </primedocs>
Wichtig: Der “Tenant” wird automatisch über die CMI Integration übertragen und darf daher nicht konfiguriert werden, da ansonsten die URL falsch zusammengesetzt wird.
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:
<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 vom[tokenEndpointHost]/[CMI-Tenant]/identity/connect/token
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.
window.parent.postMessage({ type: "template-chooser-document-uploaded", name: result.name, }, "*");