Problematic +Transfer data between multiple environnements •Need for « Selective » export or import, not all data… Incremental import • don’t push DB dump ! +Available tools •« Site scope » data LAR export / import Remote stagging Resource Importer Plugin •Data outside « site scope » (company-level data) ?... that’s the problem ! 3 A classic data import/export use case Integration Q/A Acceptance Production
Problematic 4 What are company-level data ? « Site-scope » data Covered by Liferay ARchive native export / import « Company-scope » data No native feature to help us…
Frontline feedback +Default permissions for roles •A critical security configuration + How-to ? •Without any tool (very painful) : you need to write specific configuration procedure documentation (potentially huge) You need to « replay » procedure manually (UI) for each environement (re-)initi Unsafe (human error) Build a tool to do the work (go back at home earlier !) Fast to replay Repeatable (error-prone) 6 Example : roles permissions definitions 1 2 3
Frontline feedback +Don’t work directly with database (SQL extract & load) •Possible application-level data integrity violations +Only use portal services to read and write data •Choose your weapon Plain-old plugin, written in Java Admin script, written in Groovy, Ruby, etc. + Be carreful about IDs •An entity ID is not the same in source environment and target environment Do not rely on entity ID Relations between entities must not be stored with IDs 7 Best practices to write import/export tools
Out-of-the-box tool +Hook Plugin •No user interface, actions only by file manipulation Easy to use for Ops •Input and output files in the same directory (configurable) ${liferay.home}/deploy/imex +Export Input xxxx.export.properties (options) Output xxxx.imex.zip (data archive) +Import Input xxxx.import.properties (options) xxxx.imex.zip (data archive) 9 Discover a comprehensive ready-to-use tool