Migracja Nintex Workflow z on-prem do Office 365
Table of Contents
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:
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-premise | Odpowiadająca akcja w Office 365 |
---|---|
Action Set | Action Set |
Assign Flexi task | Start a Task Process |
Build String | Build String |
Calculate date | Add Time to Date |
Change state | Change State |
Check in item | Check In Item |
Check out item | Check Out Item |
Commit Pending Changes | --- |
Convert Value | Convert Value |
Create item | Create List Item |
Delete item | Delete Item WM Action |
Discard check out | Discard Check Out Item |
End workflow | Terminate Current Workflow |
Filter | Filter |
For Each | For Each |
Log in history list | Log to History List |
Loop | Loop with Condition |
Math operation | Do Calculation |
Pause for... | Pause For Duration |
Pause until... | Pause Until |
Query List | Query List |
Regular expression | Regular Expression |
Run if | Run If |
Run parallel actions | Parallel Block |
Send notification | Send an email |
Set a condition | Conditional Branch |
Set field value | Set field in current item |
Set variable | Set Workflow Variable |
Set workflow status | Set Workflow Status |
State machine | State Machine |
Switch | Switch |
Twitter Tweet | Twitter Tweet |
Update item | Update List Item |
Yammer Message | Yammer 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:
- istnieją akcje, które są całkowicie niewspierane przy migracji i nie istnieją w O365, ale można zrobić dla nich obejścia.
- 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Ą
- 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 🙂
- 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.
action set nie są migrowane, podobnie jak UDA. Rekomenduję podejśćie z pkt. 1.for each loop nie są migrowane, podobnie jak UDA, czy Action Sety. Rekomenduję podejśćie z pkt. 1.- 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.
- 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.
- 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…
- 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 365 | Zachowanie podczas migracji |
---|---|---|
Query/ Update XML | Query/ Update XML | Akcje nie są migrowalne, ponieważ zmienia się architektura. Po migracji Sharegate zamieni je na puste placehlodery. |
User Profile actions | Office 365 User Profile actions | Akcja zostanie zamieniona na pusty placehloder. |
flexi task | Start 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 query | Office 365 Search Query | Akcja zostanie zamieniona na pusty placehloder. |
dynamics crm | "Dynamics CRM" actions | Akcja zostanie zamieniona na pusty placehloder. |
convert document action | "Document Generation" | Akcja zostanie zamieniona na pusty placehloder. |
set item permissions | Office 365 update item permissions | Akcja zostanie zamieniona na pusty placehloder. |
Update document | No direct counterpart | Akcja zostanie zamieniona na pusty placehloder. |
Create item in another site | Office 365 Create List Item or Document Set | Akcja zostanie zamieniona na pusty placehloder. |
Update/ Delete multiple items | Possibly by some HTTP Request call | Akcja zostanie zamieniona na pusty placehloder. |
Collection operation | By a proper Collection operation | Akcja 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 data | No direct counterpart | W O365 nie istnieje funkcja pozwalająca na przekazywanie danych między workflowami. Konieczny re-design procesu. |
Start workflow | Start workflow | Akcje nie są migrowalne, ponieważ zmienia się architektura. Po migracji Sharegate zamieni je na puste placehlodery. |
Create site collection | By a proper Office 365 create site collection | |
Delete site | By a proper Office 365 delete site | |
Delegate workflow task | By Assign a task and custom work | Brak funkcji. Przykład obejścia: https://community.nintex.com/community/build-your-own/blog/2015/02/26/delegation-in-o365 |
Request approval | Office 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:
- 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. - Plik formularza Infopath nie może przekroczyć 5MB (formularz + załączniki w środku).
- 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:
Brak warunkowego uruchamiania (conditional start) przepływów, chociaż pewnym substytutem jest akcja filter.
[tds_info] Warunkowe uruchamianie przepywów jest dostępne w NWO365 od stycznia 2018[/tds_info]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;[tds_info] Harmonogramy dla workflowów można tworzyć w NWO365 od końca lipca 2017[/tds_info]
- 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”;
- Brak stałych przepływu pracy („workflow constants”).
[tds_info] 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.[/tds_info] - Brak funkcji („inline functions”).
- Brak akcji definiowanych przez użytkownika („UDA” – User Defined Actions).
[tds_info] 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„.[/tds_info] Brak „Action Setów”.[tds_info] Action Sets są obecne w NWO365 od końca czerwca 2017[/tds_info]
- Brak możliwości tworzenia własnych akcji.
[tds_info] 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.[/tds_info]
Kilka przykładów dla akcji dostępnej w on-prem i jej obecności w Office 365:
Akcja w Nintex On premise | Akcja w Nintex for O365 |
---|---|
Query LDAP | Brak odpowiednika w O365 |
Query Nintex Reporting | Brak odpowiednika w O365 |
Capture document set version | Możliwe, że do zrobienia przez użycie "Office 365 Query List", ale nie testowałem. |
Copy to file share | Brak odpowiednika w O365 |
Copy to SharePoint | Dla 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 site | Office 365 Create List Item or Document Set |
Create list | Brak odpowiednika w O365. Jedynie poprzez SharePoint List REST API. |
Declare as record | Brak 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 value | Set Field in Current Item lub w przypadku tworzenia wykonywania w innej witrynie: Office 365 update items |
Undeclare as record | Brak 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 set | Brak odpowiednika w O365 |
Calculate date | Add Time to Date lub Set Time Portion of Date/Time Field |
Collection operation | To 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 data | Brak odpowiednika w O365. Tylko obejścia, np. poprzez zapisywanie informacji w danych elementu i odczytywanie w drugim workflow. |
Store data | Brak odpowiednika w O365. Tylko obejścia, np. poprzez zapisywanie informacji w danych elementu i odczytywanie w drugim workflow. |
Wait for check out status change | Brak odpowiednika. Można użyć: Wait for Field Change in Current Item i ustawić warunek na "Checked out is equal null". |
Complete workflow task | Brak odpowiednika. Jedynie poprzez Update List Item - ustawienie statusu Zadania na "Complete". |
Delegate workflow task | Brak odpowiednika w O365. Tylko obejścia, np: https://community.nintex.com/community/build-your-own/blog/2015/02/26/delegation-in-o365 |
Request approval | Brak odpowiednika w O365. Tylko obejścia, np: https://community.nintex.com/community/build-your-own/blog/2015/02/26/delegation-in-o365 |
Request data | Brak odpowiednika w O365. Tylko obejścia, np: https://community.nintex.com/community/build-your-own/blog/2015/02/26/delegation-in-o365 |
Request review | Brak odpowiednika w O365. Tylko obejścia, np: https://community.nintex.com/community/build-your-own/blog/2015/02/26/delegation-in-o365 |
Task reminder | Funkcja 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′]