SlideShare una empresa de Scribd logo
1 de 12
Content Migration
with CRX2Oak
BY MICHAEL HENDERSON
http://www.filstan.com.au
Michael Henderson
Technical Director
michael@filstan.com.au
What’s the problem?
 You want to transfer content from one AEM instance to another
 You don’t want to create from a snapshot or a backup from the existing
environment
 Residual corruption? Dodgy data? Worried about previous versioned/patched
assets that might transfer through via a full clone? Or, just want to start fresh?
 Options?
 Content package export/import: Large. Slow. No versions. No orphaned
content. No resume.
 Content transfer tool: CRX2Oak.
http://www.filstan.com.au
Michael Henderson
Technical Director
michael@filstan.com.au
What is the tool?
 CRX2Oak has been created to migrate content from one AEM repository to
another
 Common use-cases for CRX2Oak are:
 Upgrade: From an older version of AEM to a newer version
 Sidegrade: From one instance to another of the same version but with
architectural changes. I.e. Changing Node store or Blob store
 Migration: From one instance to another fresh build of the same version and
same architecture. Content + code release. Sometimes this is referred to as a
“Blue/Green Deployment”
 An open source version (without CRX2 upgrade functionality) is available
as the Jackrabbit Oak “oak-upgrade” migration tool
http://www.filstan.com.au
Michael Henderson
Technical Director
michael@filstan.com.au
What can it do?
 Resume Support: If you interrupt the command, you can continue it later
on and it will continue where it left off
 Customisable Upgrade Logic: Add custom values and control via Java
classes
 Support for Memory Mapped Operations: Improve performance
 Selective Migration of Content: Copy just what you want to
 Path Merging: Merge migrated content without clobbering
 Version Support: Ability to copy versions including orphans
 Open Source Version: oak-upgrade available (no CRX2 support)
 Speed: Approx. 1.5GB per min with versions (on c4.xlarge)
http://www.filstan.com.au
Michael Henderson
Technical Director
michael@filstan.com.au
What version should I use?
 Ensure the version of CRX2Oak is the same version (or as close as you can) as your destination
version of Oak: http://localhost:4502/system/console/status-
Repository%20Apache%20Jackrabbit%20Oak
 Download the required version from Adobe’s public repository:
https://repo.adobe.com/nexus/content/groups/public/com/adobe/granite/crx2oak/
 WARNING: Using a mismatched Oak version of the tool can corrupt your instance!
http://www.filstan.com.au
Michael Henderson
Technical Director
michael@filstan.com.au
CRX2Oak – Migration Options http://www.filstan.com.au
Michael Henderson
Technical Director
michael@filstan.com.au
CRX2Oak – Merge Option http://www.filstan.com.au
Michael Henderson
Technical Director
michael@filstan.com.au
CRX2Oak – Version Options http://www.filstan.com.au
Michael Henderson
Technical Director
michael@filstan.com.au
Let’s look at the command
 Usage: Run via the command-line:
 java -jar crx2oak.jar [options] [datastore-options] [source] [destination]
 [source] & [destination] are directory or URI
 CRX: /path/to/aem/crx-quickstart/repository
 Mongo: mongodb://<hostname>:<port>/<database>
 JDBC: jdbc:mysql://<hostname>:<port>/<schema>
 Notes:
 Both AEM instances NEED to be shut down
 Both repositories NEED to be filesystem/script accessible
 Docs: https://docs.adobe.com/docs/en/aem/6-2/deploy/upgrade/using-crx2oak.html
 Note: Extra options available in help [java -jar <jar-file> -h]
http://www.filstan.com.au
Michael Henderson
Technical Director
michael@filstan.com.au
Larger Example
 java
 -Dlogback.configurationFile=logback.xml [logging]
 -Xmx4g [memory usage]
 -jar crx2oak-1.4.6-standalone.jar [CRX2Oak jar version]
 /opt/aem/author60/crx-quickstart/repository [source]
 /opt/aem/author62/crx-quickstart/repository [destination]
 --include-
paths=/content,/etc/cloudservices/testandtarget,/etc/designs/x,/etc/designs/y,/etc/designs/
z,/etc/tags,/etc/xyz,/home/users/x,/home/users/y,/home/groups/x,/home/groups/y
[include paths]
 --exclude-paths=/home/users/x/xyz,/home/groups/x/xyz [exclude paths]
 --copy-versions=2016-08-29 [ignore versions before 2016-08-29]
 --copy-orphaned-versions=2016-08-29 [ignore versions before 2016-08-29]
 --copy-binaries [copy binaries – don’t just reference old DataStore]
 --fail-on-error=true [fail if there’s an error]
http://www.filstan.com.au
Michael Henderson
Technical Director
michael@filstan.com.au
Things to look out for
 AEM structures can change between versions; Notably:
 From AEM 6.1 onwards user & group paths are hashed (by default), and then stored under a
path with the first letter of their hash (including admin)
 After AEM 6.0, workflow instance paths have an additional server node in their path.
/etc/workflow/instances/serverXYZ/YYYY-MM-DD
 From AEM 6.2 onwards, /content/campaign paths introduced a concept of area (default =
master)
 Content structures that you have created are the safest
 I.e. /content/xyz
 Ask whether you want versions or orphaned content to come across?
 If not, then exclude them via “--copy-versions=false” and “--copy-orphaned-versions=false”
(will run faster)
 If so, specify appropriate dates so you only copy what you need
 Don’t migrate package contents. Deploy packages as normal instead
 Best to reindex everything post-migration. Delete indexes or run re-index tool
http://www.filstan.com.au
Michael Henderson
Technical Director
michael@filstan.com.au
Questions? http://www.filstan.com.au
Michael Henderson
Technical Director
michael@filstan.com.au

Más contenido relacionado

La actualidad más candente

Cookies: HTTP state management mechanism
Cookies: HTTP state management mechanismCookies: HTTP state management mechanism
Cookies: HTTP state management mechanism
Jivan Nepali
 

La actualidad más candente (20)

Java OCA teoria 4
Java OCA teoria 4Java OCA teoria 4
Java OCA teoria 4
 
Implementing blue-green deployment with Atlassian Bamboo
Implementing blue-green deployment with Atlassian BambooImplementing blue-green deployment with Atlassian Bamboo
Implementing blue-green deployment with Atlassian Bamboo
 
Scale your Alfresco Solutions
Scale your Alfresco Solutions Scale your Alfresco Solutions
Scale your Alfresco Solutions
 
Content migration to AEM
Content migration to AEMContent migration to AEM
Content migration to AEM
 
Adobe AEM Maintenance - Customer Care Office Hours
Adobe AEM Maintenance - Customer Care Office HoursAdobe AEM Maintenance - Customer Care Office Hours
Adobe AEM Maintenance - Customer Care Office Hours
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
 
SOP (same origin policy)
SOP (same origin policy)SOP (same origin policy)
SOP (same origin policy)
 
AEM & eCommerce integration
AEM & eCommerce integrationAEM & eCommerce integration
AEM & eCommerce integration
 
JAMStack
JAMStackJAMStack
JAMStack
 
Not Just ORM: Powerful Hibernate ORM Features and Capabilities
Not Just ORM: Powerful Hibernate ORM Features and CapabilitiesNot Just ORM: Powerful Hibernate ORM Features and Capabilities
Not Just ORM: Powerful Hibernate ORM Features and Capabilities
 
(Re)Indexing Large Repositories in Alfresco
(Re)Indexing Large Repositories in Alfresco(Re)Indexing Large Repositories in Alfresco
(Re)Indexing Large Repositories in Alfresco
 
Complex architectures for authentication and authorization on AWS
Complex architectures for authentication and authorization on AWSComplex architectures for authentication and authorization on AWS
Complex architectures for authentication and authorization on AWS
 
Ask the expert AEM Assets best practices 092016
Ask the expert  AEM Assets best practices 092016Ask the expert  AEM Assets best practices 092016
Ask the expert AEM Assets best practices 092016
 
Link Building the Aquarium Way
Link Building the Aquarium WayLink Building the Aquarium Way
Link Building the Aquarium Way
 
Ch 12 Attacking Users - XSS
Ch 12 Attacking Users - XSSCh 12 Attacking Users - XSS
Ch 12 Attacking Users - XSS
 
Ruby on Rails Penetration Testing
Ruby on Rails Penetration TestingRuby on Rails Penetration Testing
Ruby on Rails Penetration Testing
 
Moving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco RepositoryMoving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco Repository
 
Upgrading to Alfresco 6
Upgrading to Alfresco 6Upgrading to Alfresco 6
Upgrading to Alfresco 6
 
Cookies: HTTP state management mechanism
Cookies: HTTP state management mechanismCookies: HTTP state management mechanism
Cookies: HTTP state management mechanism
 
Advanced phishing for red team assessments
Advanced phishing for red team assessmentsAdvanced phishing for red team assessments
Advanced phishing for red team assessments
 

Similar a AEM Meetup Sydney - Content Migration with CRX2Oak

XML London 2013 - Architecture of xproc.xq an XProc processor
XML London 2013 - Architecture of xproc.xq an XProc processorXML London 2013 - Architecture of xproc.xq an XProc processor
XML London 2013 - Architecture of xproc.xq an XProc processor
jimfuller2009
 

Similar a AEM Meetup Sydney - Content Migration with CRX2Oak (20)

How to use source control with apex?
How to use source control with apex?How to use source control with apex?
How to use source control with apex?
 
Tuan Q. Phan - WESST - Getting Started on the Computational Social Sciences
Tuan Q. Phan - WESST - Getting Started on the Computational Social SciencesTuan Q. Phan - WESST - Getting Started on the Computational Social Sciences
Tuan Q. Phan - WESST - Getting Started on the Computational Social Sciences
 
Digital Fabrication Studio.02 _Information @ Aalto Media Factory
Digital Fabrication Studio.02 _Information @ Aalto Media FactoryDigital Fabrication Studio.02 _Information @ Aalto Media Factory
Digital Fabrication Studio.02 _Information @ Aalto Media Factory
 
Docman - The swiss army knife for Drupal multisite docroot management and dep...
Docman - The swiss army knife for Drupal multisite docroot management and dep...Docman - The swiss army knife for Drupal multisite docroot management and dep...
Docman - The swiss army knife for Drupal multisite docroot management and dep...
 
Digital Fabrication Studio v.0.2: Information
Digital Fabrication Studio v.0.2: InformationDigital Fabrication Studio v.0.2: Information
Digital Fabrication Studio v.0.2: Information
 
Really Simple Web Content Management
Really Simple Web Content ManagementReally Simple Web Content Management
Really Simple Web Content Management
 
Common Docker Problems and Solutions
Common Docker Problems and SolutionsCommon Docker Problems and Solutions
Common Docker Problems and Solutions
 
XPages -Beyond the Basics
XPages -Beyond the BasicsXPages -Beyond the Basics
XPages -Beyond the Basics
 
Cloud Native Analysis Platform for NGS analysis
Cloud Native Analysis Platform for NGS analysisCloud Native Analysis Platform for NGS analysis
Cloud Native Analysis Platform for NGS analysis
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
01 configure your-project
01 configure your-project01 configure your-project
01 configure your-project
 
[DanNotes] XPages - Beyound the Basics
[DanNotes] XPages - Beyound the Basics[DanNotes] XPages - Beyound the Basics
[DanNotes] XPages - Beyound the Basics
 
ALPHA Architectural Overview
ALPHA Architectural OverviewALPHA Architectural Overview
ALPHA Architectural Overview
 
Microsoft Windows Server AppFabric
Microsoft Windows Server AppFabricMicrosoft Windows Server AppFabric
Microsoft Windows Server AppFabric
 
Php Conference Brazil - Phalcon Giant Killer
Php Conference Brazil - Phalcon Giant KillerPhp Conference Brazil - Phalcon Giant Killer
Php Conference Brazil - Phalcon Giant Killer
 
UltraESB - Installation and Configuration
UltraESB - Installation and ConfigurationUltraESB - Installation and Configuration
UltraESB - Installation and Configuration
 
Introducing CloudBacko cloud / local backup software
Introducing CloudBacko cloud / local backup softwareIntroducing CloudBacko cloud / local backup software
Introducing CloudBacko cloud / local backup software
 
XML London 2013 - Architecture of xproc.xq an XProc processor
XML London 2013 - Architecture of xproc.xq an XProc processorXML London 2013 - Architecture of xproc.xq an XProc processor
XML London 2013 - Architecture of xproc.xq an XProc processor
 
Presentation on Japanese doc sprint
Presentation on Japanese doc sprintPresentation on Japanese doc sprint
Presentation on Japanese doc sprint
 
Step-by-Step Introduction to Apache Flink
Step-by-Step Introduction to Apache Flink Step-by-Step Introduction to Apache Flink
Step-by-Step Introduction to Apache Flink
 

Último

Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
ZurliaSoop
 
Uncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoUncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac Folorunso
Kayode Fayemi
 
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
David Celestin
 
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
amilabibi1
 
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven CuriosityUnlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
Hung Le
 

Último (17)

My Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle BaileyMy Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle Bailey
 
Introduction to Artificial intelligence.
Introduction to Artificial intelligence.Introduction to Artificial intelligence.
Introduction to Artificial intelligence.
 
Zone Chairperson Role and Responsibilities New updated.pptx
Zone Chairperson Role and Responsibilities New updated.pptxZone Chairperson Role and Responsibilities New updated.pptx
Zone Chairperson Role and Responsibilities New updated.pptx
 
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfAWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
 
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
 
Uncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoUncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac Folorunso
 
in kuwait௹+918133066128....) @abortion pills for sale in Kuwait City
in kuwait௹+918133066128....) @abortion pills for sale in Kuwait Cityin kuwait௹+918133066128....) @abortion pills for sale in Kuwait City
in kuwait௹+918133066128....) @abortion pills for sale in Kuwait City
 
Dreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video TreatmentDreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video Treatment
 
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
 
Report Writing Webinar Training
Report Writing Webinar TrainingReport Writing Webinar Training
Report Writing Webinar Training
 
Dreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio IIIDreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio III
 
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
 
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdfSOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
 
ICT role in 21st century education and it's challenges.pdf
ICT role in 21st century education and it's challenges.pdfICT role in 21st century education and it's challenges.pdf
ICT role in 21st century education and it's challenges.pdf
 
Digital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of DrupalDigital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of Drupal
 
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven CuriosityUnlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
Unlocking Exploration: Self-Motivated Agents Thrive on Memory-Driven Curiosity
 
lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.
 

AEM Meetup Sydney - Content Migration with CRX2Oak

  • 1. Content Migration with CRX2Oak BY MICHAEL HENDERSON http://www.filstan.com.au Michael Henderson Technical Director michael@filstan.com.au
  • 2. What’s the problem?  You want to transfer content from one AEM instance to another  You don’t want to create from a snapshot or a backup from the existing environment  Residual corruption? Dodgy data? Worried about previous versioned/patched assets that might transfer through via a full clone? Or, just want to start fresh?  Options?  Content package export/import: Large. Slow. No versions. No orphaned content. No resume.  Content transfer tool: CRX2Oak. http://www.filstan.com.au Michael Henderson Technical Director michael@filstan.com.au
  • 3. What is the tool?  CRX2Oak has been created to migrate content from one AEM repository to another  Common use-cases for CRX2Oak are:  Upgrade: From an older version of AEM to a newer version  Sidegrade: From one instance to another of the same version but with architectural changes. I.e. Changing Node store or Blob store  Migration: From one instance to another fresh build of the same version and same architecture. Content + code release. Sometimes this is referred to as a “Blue/Green Deployment”  An open source version (without CRX2 upgrade functionality) is available as the Jackrabbit Oak “oak-upgrade” migration tool http://www.filstan.com.au Michael Henderson Technical Director michael@filstan.com.au
  • 4. What can it do?  Resume Support: If you interrupt the command, you can continue it later on and it will continue where it left off  Customisable Upgrade Logic: Add custom values and control via Java classes  Support for Memory Mapped Operations: Improve performance  Selective Migration of Content: Copy just what you want to  Path Merging: Merge migrated content without clobbering  Version Support: Ability to copy versions including orphans  Open Source Version: oak-upgrade available (no CRX2 support)  Speed: Approx. 1.5GB per min with versions (on c4.xlarge) http://www.filstan.com.au Michael Henderson Technical Director michael@filstan.com.au
  • 5. What version should I use?  Ensure the version of CRX2Oak is the same version (or as close as you can) as your destination version of Oak: http://localhost:4502/system/console/status- Repository%20Apache%20Jackrabbit%20Oak  Download the required version from Adobe’s public repository: https://repo.adobe.com/nexus/content/groups/public/com/adobe/granite/crx2oak/  WARNING: Using a mismatched Oak version of the tool can corrupt your instance! http://www.filstan.com.au Michael Henderson Technical Director michael@filstan.com.au
  • 6. CRX2Oak – Migration Options http://www.filstan.com.au Michael Henderson Technical Director michael@filstan.com.au
  • 7. CRX2Oak – Merge Option http://www.filstan.com.au Michael Henderson Technical Director michael@filstan.com.au
  • 8. CRX2Oak – Version Options http://www.filstan.com.au Michael Henderson Technical Director michael@filstan.com.au
  • 9. Let’s look at the command  Usage: Run via the command-line:  java -jar crx2oak.jar [options] [datastore-options] [source] [destination]  [source] & [destination] are directory or URI  CRX: /path/to/aem/crx-quickstart/repository  Mongo: mongodb://<hostname>:<port>/<database>  JDBC: jdbc:mysql://<hostname>:<port>/<schema>  Notes:  Both AEM instances NEED to be shut down  Both repositories NEED to be filesystem/script accessible  Docs: https://docs.adobe.com/docs/en/aem/6-2/deploy/upgrade/using-crx2oak.html  Note: Extra options available in help [java -jar <jar-file> -h] http://www.filstan.com.au Michael Henderson Technical Director michael@filstan.com.au
  • 10. Larger Example  java  -Dlogback.configurationFile=logback.xml [logging]  -Xmx4g [memory usage]  -jar crx2oak-1.4.6-standalone.jar [CRX2Oak jar version]  /opt/aem/author60/crx-quickstart/repository [source]  /opt/aem/author62/crx-quickstart/repository [destination]  --include- paths=/content,/etc/cloudservices/testandtarget,/etc/designs/x,/etc/designs/y,/etc/designs/ z,/etc/tags,/etc/xyz,/home/users/x,/home/users/y,/home/groups/x,/home/groups/y [include paths]  --exclude-paths=/home/users/x/xyz,/home/groups/x/xyz [exclude paths]  --copy-versions=2016-08-29 [ignore versions before 2016-08-29]  --copy-orphaned-versions=2016-08-29 [ignore versions before 2016-08-29]  --copy-binaries [copy binaries – don’t just reference old DataStore]  --fail-on-error=true [fail if there’s an error] http://www.filstan.com.au Michael Henderson Technical Director michael@filstan.com.au
  • 11. Things to look out for  AEM structures can change between versions; Notably:  From AEM 6.1 onwards user & group paths are hashed (by default), and then stored under a path with the first letter of their hash (including admin)  After AEM 6.0, workflow instance paths have an additional server node in their path. /etc/workflow/instances/serverXYZ/YYYY-MM-DD  From AEM 6.2 onwards, /content/campaign paths introduced a concept of area (default = master)  Content structures that you have created are the safest  I.e. /content/xyz  Ask whether you want versions or orphaned content to come across?  If not, then exclude them via “--copy-versions=false” and “--copy-orphaned-versions=false” (will run faster)  If so, specify appropriate dates so you only copy what you need  Don’t migrate package contents. Deploy packages as normal instead  Best to reindex everything post-migration. Delete indexes or run re-index tool http://www.filstan.com.au Michael Henderson Technical Director michael@filstan.com.au