This document is a guide to help customers to plan migration and of course later on to do the actual migration.
2 Migration Strategies
These are three possible strategies for a migration:
- Platform Migration
- Feature Migration
- Blue Print Migration
Even though these strategies differs in their methodology an overall migration strategy will be always a mixture of all those. Certain features cannot be reused from one version to another if the underlying model has changes dramatically. For instance Enfinity Suite 6.4 compared to Intershop 7.0. The content model has changed too much as it would be possible to reuse the old model. In this case it is necessary to do a feature migration if content is used. The same applies to lot of other functional areas like promotion, basket handling and order handling if migrating from Enfinity Suite 6.4 to Intershop 7.0
2.1 Platform Migration
A platform migration can be useful if the application is highly customized. Therefore only the core platform is used, which implies that as much as possible is reused from the existing functionality. This kind of migration is only recommended if most of the pipelines from the demo application PrimeTech were rewritten and not inherited from the B2C channel.
- Fast and cost effective only if highly customized.
- Less testing effort as the API of external interfaces would not change.
- No benefit from new frameworks and features.
- Higher maintenance for custom code.
- Still necessary to migrate certain core features if they are used, like basket and order handling.
- No development effort is undertaken towards the standard Intershop application.
- Higher maintenance effort for custom code compared to other migration strategies.
- Less Intershop support as only the platform is used and supported.
2.2 Feature Migration
A migration of features is useful if the application is close to standard and many custom-built features are now part of Intershop 7's standard feature set. In addition, it is recommended that a feature migration is done after a platform migration as a 2nd phase.
- Less custom code, therefore less testing and maintenance effort.
- Improved, tested features from Intershop.
- Evaluation is necessary whether the new features actually fulfill the given requirements.
- Needs to be a compromise between custom feature functionality and what is implemented in Intershop 7. Most likely, the custom feature functionality does not exactly match the implemented standard features.
- May require to migrate data in order to keep history data.
- New migrated features may not exactly match the previous implementation. This may require an additional modification of interfaces to 3rd party systems.
2.3 Blue Print Migration
A blue print or green field migration can be done if an overhaul of the entire site is planned at the same time. This may be necessary if business decided to change business flows substantially or to introduce other 3rd party systems into the IT infrastructure at the same time.
- Existing knowledge of Enfinity and Intershop can be used to build an improved version on the new platform; more efficient, performance driven based on Intershop features.
- Reuse of components like pipelets or pipelines even considering their efficiency, memory foot print and performance.
- Most complex migration with several unknowns.
- Generally, it is never a good idea to change many things at once. In case of an error, it is difficult to determine if the error is caused by the migration or by the changed business functionality.
- Highest effort of all migration strategies as in essence it is a starting from scratch.
- DBInit is used to initialize a new DB schema.
- DBMigrate adapts DB entries to existing settings.
- DBExtract extracts information from current DB schema.
- DBDelta extracts information from two different DB schemas.
- API Checker used to check if an API violates Intershop's API's.
- DiffReport compares two versions of Enfinity Suite/Intershop.
DBInit is using database preparers to create channels, preferences, import users, catalogs and products etc. These preparers have slightly changed as the concept of applications has been introduced in IS7. See
com.intershop.component.organization.dbinit.preparer.ApplicationPreparer, for instance.
Please use the API Checker to find out what else has changed.
The same as for DBInit applies to DBMigrate.
DBExtract extracts structural information as well as content information from an given DB.
The following ANT build targets are supported:
- db-extract: Executes all other targets in this order: db-extract-structures, db-extract-sources and db-extract-content.
- db-extract-structures: Can extract tables, views, mviews, sequences, indexes and constraint structures.
- db-extract-sources: Extracts functions, procedures, packages and trigger sources from schema.
- db-extract-content: Predefined database content can be exported via this target. The definition of what is being exported can be found and extended in %IS_HOME%/tools/dbdiff.properties.
ant -f dbextract.xml
This build script contains all targets to analyze and compare database schemas created by the DBInit process.
The comparison of two schemas is processed in several steps:
- Executes all queries defined in the config/queries.xml file.
- Creates a XML file containing the results of the processed queries.
- Performs the same steps as in 1. and 2. for the second database schema too.
- Compares both analysis files (returning XML files).
- Creates a XML file containing the comparison result.
- Generates HTML pages visualizing the comparison result.
The result of analysis and comparison are stored in result/xml. The HTML-transformed comparison XML file is stored under result/html.
The queries defined in the queries.xml file are optimized to compare Enfinity Suite 6 schemas in different versions. It ignores differences belonging to the data replication environment.
3.1.5 API Checker
The API Checker is used to find violations of the Intershop APIs as well as custom APIs. But it allows also to compare, for instance, ES6 APIs with IS7 APIs. The API Checker is located in %IS_HOME%/tools/api_checker. To execute it, please open an ANT build shell and go to %IS_HOME%/tools/api_checker/build.
The following ANT build targets are supported:
- defineapi: Creates the API definition file under %IS_HOME%/tools/api_checker/apidefinitions called api.xml.
- checkapi: Checks the current API api.xml against another API definition reference-api*.xml (can be configured in %IS_HOME%/tools/api_checker/config/api_checker.properties).
- checkquality: Checks code quality of the API definition reference-api*.xml. Results are stored in %IS_HOME%/tools/api_checker/result/QualityWarnings.txt.
- checktemplates: Checks templates for security vulnerabilities. A white list can be configured for templates under %IS_HOME%/tools/api_checker/config/template-check-white-list.txt. Results are stored in %IS_HOME%/tools/api_checker/result/TemplateSecurityWarnings.txt.
- checkacl: Checks ACLs for security vulnerabilities. See %IS_HOME%/tools/api_checker/result/PipelineACLCheckResult.txt for results.
Change properties %IS_HOME%/tools/api_checker/config/api_checker.properties key
apichecker.api.packages to add
com.intershop.*.dbinit.perparer to check the DBInit Preparer as well.
A DiffReport compares two versions of Enfinity Suite/Intershop. These are the artifacts which are considered:
- Java Sources
- Property files
- ImpExp files
- Build tools
- URL rewrites
- Web services
Example DiffReport between Intershop 220.127.116.11.136 and Intershop 18.104.22.168.233
- Development Tasks
- Release Notes
DiffReports are available upon request!
3rd Party ETL Tools
- Altova MapForce
- Talend Data Integration
- Spectral Core Full Convert
Estimating a migration project is always complicated. Many things need to be considered:
- How many artifacts (Java API's, Pipelets, Pipelines, Queries, Templates and Pagelets) have been changed, overwritten or are obsolete.
- What is the degree of customization?
- Is the code well documented and easy to read, understand?
- Are business processes described sufficient enough?
- Is it planed to do a Platform Migration, Feature Migration, Blue Print Migration or a mixture of all three?
A good rule of thumb is 25% of the original customization for a major step (like ES6.x to IS7.y) and 10% for a minor step (IS7.x to IS7.y). In case of a 1.000 men days project it would be roughly 250 days for a migration from Enfinity Suite 6.x to Intershop 7.y for instance.
5 Migration Tasks
5.1 Data Migration
If nothing else stated Intershop provides so called DBMigrate scripts to migrate data. Exceptions are major version steps like from Enfinity Suite 6.x to Intershop 7.x. In those cases it is necessary to cater for migrating data yourself. Within the Intershop 7 family it's enough to execute DBMigrate except for one version from Intershop 7.0 to Intershop 7.1. In 7.1 Intershop introduced a so called ViewContext which is used instead of Context Object Relation (COR). For this it is necessary to migrate data and code.
5.2 Code Migration
All the tasks for code migration are in order. Up until migration step Java and having a compiling code base it's impossible to work in parallel on it.
- Create new cartridges to get new build files.
- Get code to compile.
- Comment out more complicated stuff to be able to work in parallel.
- Add TODO comments to find those areas where rework needs to be done because of source commented out.
- EDL definition has not changed.
- Several templates have changed like ORM in 7.3, regenerate code from EDL’s.
- No changes for Pipelet Descriptor, Pipelet Language Descriptors and the abstract Pipelet Class.
- Feature or API changes need to be taken care of.
- Needs to be changed as model has slightly changed in IS7.1 but not since.
- No change of the file format.
- New types for return mapping to retrieve BO’s
- Get list of custom Pipelines using standard Pipelines. Search for the tag <parent> (inherit) and <startNameRef> (call or jump) in custom Pipelines.
- Get DiffReport from Intershop to find out touched Pipelines and check out differences.
- Resave all custom Pipelines as Intershop Studio has slightly changed the order of nodes within the Pipelines XML.
- Standard Pipelines may return BO’s instead of PO’s with different method names to retrieve attributes.
- Use BO’s instead of PO’s where applicable.
- jQuery UI 1.8.19 is used in IS7.2. It’s not recommended to use more than one JS framework nor to use another jQuery version other than the one is used by Intershop.
5.3 Environment Migration
The recommended way to migrate an environment is to either install the new instance on new hardware or one the same existing hardware pointing either to a new schema or the existing schema.
The proposed strategy for going live would be:
- Deploy Intershop 7.y instance with newest code.
- Bring up maintenance page to stop incoming traffic from customers.
- Shutdown Intershop 7.x instances.
- Reconfigure Load Balancer to point to new Intershop 7.y instance.
- Backup DB and if necessary import DB dump into new instance for 7.y.
- Run DBMigrate on 7.y.
- Startup 7.y cluster.
- Test Intershop 7.y instance.
- If successful:
- If not successful:
- Import DB backup dump.
- Reconfigure Load Balancer to point to the old 7.x.
- Remove maintenance page.
5.4 Process Migration
With Intershop 7.4 a new concept for build, test and deploy was introduced. Intershop has decided to use Gradle as the build tool. With Gradle it is possible to release just certain components like a new Backoffice or a feature like a new or updated payment provider. This new tool may have influences on these processes:
- Development Process
- Build Process
- Deployment Process
- Automatic Test
- Release Cycle