Sharegate migration Nintex

Niedawno brałem udział w projekcie, w którym dane i informacje były tworzone przez lata w SharePoint utrzymywanym w infrastrukturze klienta (SharePoint 2010 i 2013) jednak firma zdecydowała się na migrację swoich zasobów i aplikacji do SharePoint Online w Office 365. Mówiono, że migracja z użyciem Sharegate będzie prosta i szybka, ale… jak zwykle rzeczywistość okazała się nieco bardziej skomplikowana.

Zanim rozpoczęliśmy migrację zacząłem od lektury treści, które opisywały sam proces migracji z użyciem Sharegate i o możliwych problemach. Na bazie tego i własnych doświadczeń, mogę podzielić je na 3 grupy:

  1. Ograniczenia Sharegate
  2. Ograniczenia SharePoint Online
  3. Ograniczenia Nintex dla Office 365

Ale po kolei. Postaram się przedstawić po krótce każdą z nich. 

Ograniczenia Sharegate

Sharegate to naprawdę świetne narzędzie. Szczerze. Pozwoliło mi oszczędzić dziesiątki godzin pracy, ale też przysporzyło niejednej frustracji 🙂 Jednak wciąż – jest ekstra. Raz, że umożliwia wykonywanie migracji pomiędzy różnymi wersjami SharePoint (np. z 2007 do 2013), ale też jest najbardziej „dojrzałym” produktem umożliwiającym na migrację z on-premise do online witryn, kont użytkowników, metadanych i całej reszty, włączając w to workflowy i formularze Nintex.

W kontekście migracji Nintex – Sharegate wspiera w modelu 1 do 1 przenoszenie 30 akcji, jakie aktualnie są dostępne w on-premise (źródło: Nintex FAQ – Sharegate):

Nazwa akcji w on-premiseOdpowiadająca akcja w Office 365
Action SetAction Set
Assign Flexi taskStart a Task Process
Build StringBuild String
Calculate dateAdd Time to Date
Change stateChange State
Check in itemCheck In Item
Check out itemCheck Out Item
Commit Pending Changes---
Convert ValueConvert Value
Create itemCreate List Item
Delete itemDelete Item WM Action
Discard check outDiscard Check Out Item
End workflowTerminate Current Workflow
FilterFilter
For EachFor Each
Log in history listLog to History List
LoopLoop with Condition
Math operationDo Calculation
Pause for...Pause For Duration
Pause until...Pause Until
Query ListQuery List
Regular expressionRegular Expression
Run ifRun If
Run parallel actionsParallel Block
Send notificationSend an email
Set a conditionConditional Branch
Set field valueSet field in current item
Set variableSet Workflow Variable
Set workflow statusSet Workflow Status
State machineState Machine
SwitchSwitch
Twitter TweetTwitter Tweet
Update itemUpdate List Item
Yammer MessageYammer Message 

Moim zdaniem, by móc z powodzeniem użyć Sharegate, należy wpierw przejrzeć każdy workflow i nieco przebudować go co, przynajmniej w teorii, zagwarantuje jego poprawną migrację. Należy przy tym pamiętać o:

  1. istnieją akcje, które są całkowicie niewspierane przy migracji i nie istnieją w O365, ale można zrobić dla nich obejścia.
  2. istnieją akcje, których Sharegate nie migruje i zwyczajnie wymagają odtworzenia w O365, po migracji.

Jak to ugryźć? Jak potraktować akcje? Proponuję podejście, którego sam używałem:

PRZED MIGRACJĄ

  1. user defined actions – podczas migracji będą zastąpione pustymi placeholderami, tracąc całkowicie informacje o zawartych w nich akcjach. Rekomenduję zastąpienie ich blokami „Run If” (które są migrowalne) i wstawianie akcji z UDA do ich wnętrza. Taki zabieg umożliwi też na szybkie kopiowanie i wklejanie całych, takich bloków, w inne miejsca danego workflowu. I naturalnie: reguła musi być „zawsze prawdziwa”, np. 1=1 🙂
  2. query list muszą mieć określoną liczbę zwracanych wierszy. Parametr nie może być pusty. Druga sprawa, w O365 parametr „recursive” jest zawsze włączony. 
  3. action set nie są migrowane, podobnie jak UDA. Rekomenduję podejśćie z pkt. 1.
  4. for each loop nie są migrowane, podobnie jak UDA, czy Action Sety. Rekomenduję podejśćie z pkt. 1.
  5. workflow constants nie istnieją w Nintex dla Office 365, zatem Sharegate nie może ich zmigrować. Proponuję albo usunąć je, albo zastąpić zmiennymi wew. workflow, a jeśli mają być reużywane pomięzy różnymi workflowami – wówczas utworzenie listy SharePoint i przechowywanie ich tam, a w workflow jedynie odpytywanie listy o wartości.
  6. zmienne workflow context  – część nie istnieje w Office 365 (np. Approval Comments), zatem Sharegate znów nie może ich zmigrować. Należy je zamienić na zmienną przepływu, albo usunąć, ponieważ mogą sprawiać problemy przy migracji.
  7. inline functions – nie istnieją w Office 365. Należy je zamienić na zmienną przepływu, albo usunąć, ponieważ mogą sprawiać problemy przy migracji. Ostatecznie należy je odtworzyć przy użyciu innych akcji, które wykonane w sekwencji dadzą wynik podobny do użycia funkcji, np. obliczenie daty, wartości, długości ciągu, itp…
  8. commit pending changes – w O365 ta akcja nie istnieje, ponieważ architektura silnika przepływu pracy jest inna. Akcje nie są zbierane i wykonywane w batchach. Wszystko wykonywane jest synchronicznie. Wszystkie te akcje należy usunąć przed migracją.

PO MIGRACJI

Sharegate zmigruje przepływ, ale co zrobi z akcjami? Poniżej krótkie wyjaśnienie, jak zachowają się niemigrowalne akcje.

Akcja on premise Odpowiednik akcji w Office 365Zachowanie podczas migracji
Query/ Update XMLQuery/ Update XMLAkcje nie są migrowalne, ponieważ zmienia się architektura. Po migracji Sharegate zamieni je na puste placehlodery.
User Profile actionsOffice 365 User Profile actionsAkcja zostanie zamieniona na pusty placehloder.
flexi taskStart a task process/ Assign a task (based on how many approvers you have)Nie istnieje także zadanie "To Do" czy "Review. Nie można także ustawić priorytetu maila, ani wybrać, który z przypisanych wykonawców zadania ma otrzymać notyifakcje mailowe. Nie istnieje także delegowanie (choć istnieje workaround: https://community.nintex.com/community/build-your-own/blog/2015/02/26/delegation-in-o365). Nie da się także wyliczyć czasu do wysłania przypomnienia, czy dołączyć załączników do wysyłanego z zadaniem maila.
search queryOffice 365 Search QueryAkcja zostanie zamieniona na pusty placehloder.
dynamics crm"Dynamics CRM" actionsAkcja zostanie zamieniona na pusty placehloder.
convert document action"Document Generation"Akcja zostanie zamieniona na pusty placehloder.
set item permissions Office 365 update item permissionsAkcja zostanie zamieniona na pusty placehloder.
Update documentNo direct counterpartAkcja zostanie zamieniona na pusty placehloder.
Create item in another siteOffice 365 Create List Item or Document SetAkcja zostanie zamieniona na pusty placehloder.
Update/ Delete multiple itemsPossibly by some HTTP Request callAkcja zostanie zamieniona na pusty placehloder.
Collection operationBy a proper Collection operationAkcja się różni. W O365 istnieje dedykowana akcja dla każdej operacji na kolekcji, nie zaś jedna, zbiorcza, jak ma to miejsce w on-premise. Akcja zostanie zamieniona na pusty placehloder.
Store/ Retrieve dataNo direct counterpartW O365 nie istnieje funkcja pozwalająca na przekazywanie danych między workflowami. Konieczny re-design procesu.
Start workflowStart workflowAkcje nie są migrowalne, ponieważ zmienia się architektura. Po migracji Sharegate zamieni je na puste placehlodery.
Create site collectionBy a proper Office 365 create site collection 
Delete site By a proper Office 365 delete site  
Delegate workflow taskBy Assign a task and custom workBrak funkcji. Przykład obejścia: https://community.nintex.com/community/build-your-own/blog/2015/02/26/delegation-in-o365
Request approvalOffice 365 set approval status Akcje nie są migrowalne, ponieważ zmienia się architektura. Po migracji Sharegate zamieni je na puste placehlodery.
I wiele, wiele więcej... Przeczytaj załącznik.
  

Kompletna lista akcji, których Sharegate nie migruje, jest wypisana tutaj: Nintex FAQ – Sharegate.

Ograniczenia SharePoint Online

Jednym z najbardziej irytujących ograniczeń są limity (thresholds: Software boundaries and limits for SharePoint 2013). W SharePoint Online po prostu nie ma możliwości ich zmiany, należy więc o nich pamiętać i odpowiednio przygotować dane do migracji:

  1. Plik przepływu pracy nie może być większy niż 5MB – (źródło: https://community.nintex.com/message/57706-re-what-is-the-default-limitation-in-nintex-for-exporting-a-workflow?commentI…). To oznacza, że powinien mieć nie więcej, niż 100 akcji. Tak około 😉
    ACZKOLWIEK miałem „przyjemność” migrowania przepływów, które miały w sobie zaledwie 5 akcji, a których, z dotąd mi nie znanych powodów, Sharegate nie migrował, konsekwentnie wyświetlając niezrozumiałe błędy.
  2. Plik formularza Infopath nie może przekroczyć 5MB (formularz + załączniki w środku).
  3. Lista/ biblioteka nie może mieć więcej, niż 5.000 elementów. Przekroczenie tego limitu może prowadzić do wystąpnienia dziwnych objawów w funkcjonowaniu tenanta (ja np. nie byłem w stanie edytować i zapisywać stron w całej Site Collection). 

Ograniczenia Nintex for Office 365

Te ograniczenia zostały już poniekąd opisane w części dotyczącej ograniczeń Sharegate – wynikają one przede wszystkim z różnic pomiędzy lokalną infrastruktrą, a współdzieloną, hostowaną jaką jest SharePoint Online. Te ograniczenia sprawiły także, że i wiele akcji Nintex nie był w stanie odtworzyć 1-1 w O365 i musiały zostać wytworzone w inny sposób, co z kolei uniemożliwia ich bezpośrednią migrację. Wciąż też, istnieje spora „dziura” pomiędzy możliwościami Nintex w on-premise i O365:

  1. Brak warunkowego uruchamiania (conditional start) przepływów, chociaż pewnym substytutem jest akcja filter.
       Warunkowe uruchamianie przepywów jest dostępne w NWO365 od stycznia 2018
  2. Nie istnieją wciąż funkcja tworzenia harmonogramów dla workflowów witryny (scheduled workflows), ale można użyć aplikacji firmy trzeciej (np.: Plumsail Workflow Scheduler) lub workaround’ów: Scheduled Workflows in Office 365;
       Harmonogramy dla workflowów można tworzyć w NWO365 od końca lipca 2017
  3. Bardzo często, przy użyciu funkcji „porównania”, np. dla warunku, brakuje pozycji „is empty”. Pozostaje jedynie porównywanie na poziomie „równa się lub nie”;
  4. Brak stałych przepływu pracy („workflow constants”).
       Część funkcjonalności stałych przepływu pracy jest dostępna w NWO365 – „Connection Manager”, który pozwala na definiowanie stałych do uwierzytelniania akcji z grupy „Office 365” możliwych do użycia w całym tenancie, jest dostępny od lutego 2018.
  5. Brak funkcji („inline functions”).
  6. Brak akcji definiowanych przez użytkownika („UDA” – User Defined Actions).
      Choć nie ma planów wprowadzenia wsparcia dla UDA w O365, to jednak Nintex planuje nam dostarczyć godny zamiennik – „Component Workflows”, które zostały zaprezentowane podczas konferencji „Nintex Xchange 2018„.
  7. Brak „Action Setów”.
      Action Sets są obecne w NWO365 od końca czerwca 2017
  8. Brak możliwości tworzenia własnych akcji.
      I tu również Nintex nie pozostaje bezczynny. Podczas wspomnianej konferencji „Nintex Xchange 2018” zapowiedziane zostało dodanie funkcji „Xtensions” w Nintex dla Office 365, czyli poniekąd możliwość definiowania własnych akcji.

Kilka przykładów dla akcji dostępnej w on-prem i jej obecności w Office 365:

Akcja w Nintex On premiseAkcja w Nintex for O365
Query LDAPBrak odpowiednika w O365
Query Nintex ReportingBrak odpowiednika w O365
Capture document set versionMożliwe, że do zrobienia przez użycie "Office 365 Query List", ale nie testowałem.
Copy to file shareBrak odpowiednika w O365
Copy to SharePointDla kopiowania załączników listy istnieją obejścia opisane na Community (korzystając z akcji Office 365 Upload File). Dla przenoszenia załączników Infopath brak odpowiednika i obejścia.
Create item in another siteOffice 365 Create List Item or Document Set
Create listBrak odpowiednika w O365. Jedynie poprzez SharePoint List REST API.
Declare as recordBrak funkcji deklarowania jako rekord w Office 365, co za tym idzie - brak akcji (https://nintex.uservoice.com/forums/218291-3-nintex-workflow-for-office-365/suggestions/4476977-declare-a-record)
Set field valueSet Field in Current Item lub w przypadku tworzenia wykonywania w innej witrynie: Office 365 update items
Undeclare as recordBrak funkcji deklarowania jako rekord w Office 365, co za tym idzie - brak akcji (https://nintex.uservoice.com/forums/218291-3-nintex-workflow-for-office-365/suggestions/4476977-declare-a-record)
Action setBrak odpowiednika w O365
Calculate dateAdd Time to Date lub Set Time Portion of Date/Time Field
Collection operationTo zostało rozdzielone. Każda operacja ma własną, dedykowaną akcję: Add Item to Collection, Check if Item Exists in Collection, Clear Collection, Count Items in Collection, Get Item from Collection, Join Items in Collection, Remove Duplicates from Collection, Remove Item from Collection, Remove Last Item from Collection, Remove Value from Collection, Sort Items in Collection
Retrieve dataBrak odpowiednika w O365. Tylko obejścia, np. poprzez zapisywanie informacji w danych elementu i odczytywanie w drugim workflow.
Store dataBrak odpowiednika w O365. Tylko obejścia, np. poprzez zapisywanie informacji w danych elementu i odczytywanie w drugim workflow.
Wait for check out status changeBrak odpowiednika. Można użyć: Wait for Field Change in Current Item i ustawić warunek na "Checked out is equal null".
Complete workflow taskBrak odpowiednika. Jedynie poprzez Update List Item - ustawienie statusu Zadania na "Complete".
Delegate workflow taskBrak odpowiednika w O365. Tylko obejścia, np: https://community.nintex.com/community/build-your-own/blog/2015/02/26/delegation-in-o365
Request approvalBrak odpowiednika w O365. Tylko obejścia, np: https://community.nintex.com/community/build-your-own/blog/2015/02/26/delegation-in-o365
Request dataBrak odpowiednika w O365. Tylko obejścia, np: https://community.nintex.com/community/build-your-own/blog/2015/02/26/delegation-in-o365
Request reviewBrak odpowiednika w O365. Tylko obejścia, np: https://community.nintex.com/community/build-your-own/blog/2015/02/26/delegation-in-o365
Task reminderFunkcja dostępna jedynie w akcjach "Assign a Task" oraz "Start a task process".

Podsumowanie

Czuję, że ten post nie może się zakończyć bez jakiegoś słowa otuchy 🙂 Zatem: jest nadzieja! Sharegate i Nintex intensywnie pracują nad rozwojem swoich produktów. Sharegate nad obsługą migracji kolejnych akcji (słyszałem, że niedługo UDA i Action Sets mają być obsługiwane), zaś nad czym Nintex pracuje można przeczytać tutaj: 3 – Nintex Workflow for Office 365: Hot (300 ideas) – Customer Feedback for Nintex.

Trzymam kciuki za Wasze migracje 🙂

Jeśli macie pytania lub własne historie w tym temacie, którymi chcielibyście się podzielić, zapraszam do dyskusji w komentarzach. Jestem pewien, że istnieje jeszcze mnóstwo ograniczeń i problemów, których nie jestem jeszcze świadom 🙂

Możesz także pobrać zestawienie przedstawiające listę akcji dostępnych w Nintex, status ich wsparcia oraz podpowiedzi na temat możliwych obejść i rozwiązań:

[wpdm_package id=’712′]