You are hereInkriti Ideas / ATG / White Paper - ATG Upgrade Best Practices

White Paper - ATG Upgrade Best Practices


The ATG E-commerce Platform

With a customer base of over 500 companies, ATG is the leading e-commerce software company worldwide. In a recent Gartner report, released in July 2008, ATG leads the e-commerce space along with IBM Websphere Commerce. ATG offers a sophisticated product suite that provides an extensible framework and also a customization toolkit to build various subsystems of a typical eCommerce platform such as :
  •  B2C & B2B Commerce store
  • Search
  • Internationalization
  • Merchandizing & Product Catalog Management
  • Campaign Optimizer
  • Outreach, Call center, Self service
  • Customer intelligence, Knowledge and several others.
In order to meet the demands of a growing international global retail industry ATG has been consistently improving its current subsystems and integrating additional subsystems over last many years with a period release of 6-9 months.
 
The ATG Product Releases
 
Currently we are recommending upgrade to ATG2007.1 to most of our customers unless there is a significant reason to stay with the earlier version due to existing IT infrastructure.
 
ATG 7.0
ATG 7.2
ATG 2006.3
ATG 2007.1
ATG 9
Release Date
Q1 2005
Q1 2006
Q3 2006
Q1 2007
TBD
New Modules & Features
New Module : Outreach
x
 
 
 
 
New Module : Campaign optimizer
x
 
 
 
 
New Module : Site Analytics
x
 
 
 
 
New Feature : Added file based asset management for web & application content, in the Merchandizing Module
 
x
 
 
 
New Module : ATG Knowledge
 
 
x
 
 
New Module : Self-service
 
 
x
 
 
New Module : Response Management
 
 
x
 
 
New Module : Customer Intelligence
 
 
x
 
 
New Module : CSC
 
 
 
x
 
New Module : Search
 
 
 
x
 
New Module : Searchandizing
 
 
 
x
 
Multi-brand, Multi-site, Multi-currency eCommerce support
 
 
 
x
 
Technical Improvements
Commerce business layer and domain objects refactoring & enhancements
x
 
 
 
 
Shift in O/R Mapping strategy from Repository View to Repository framework
x
 
 
 
 
                3rd party application server support like JBoss, Weblogic, Websphere
 
x
 
 
 
Merchandising refactoring, stabilization & enhancements.
 
 
x
 
 


 
Inkriti Upgrade Methodology
 
Steps to upgrade/migrate to latest version:
  1. Data Migration: Data migration is required to support new features of ATG as mentioned in the specifications. Upgrading database applies schema changes like (new Fields, Change data types or changes to the existing stored procedures) if any. ATG have multi database support, you can import/export data from one database to another. Data Migration can be done in one of the options mentioned below, based on the Database Server compatible with the ATG version selected.          
    • Migration to existing database:  In case the newer ATG version supports existing database, following approach can be followed. 
                           i.      Take a backup of existing database, using database export utility. For example, exp or expdp command in Oracle and SQL Server Management Studio inMSSQL
                           ii.      Run the database upgrade script for the new ATG version.
    • Migration to latest database version: In case the newer ATG version requires an upgraded database version, following approach can be followed:   
                            i.      Install the latest Database server as per the installation steps suggested for the database.
                           ii.      Export data from existing database using the database export utility. For example, exp or expdp command in Oracle and SQL Server Management Studio inMSSQL.
                           iii.      Create users in new Database with the same names and access permissions as were used in older database.
                            iv.      Import the data, exported in step ii above using database import utility. For example, imp or impdp(This command creates the users also. If export is taken using expdp, step iii can be ignored) command in Oracle and SQL Server Management Studio inMSSQL.
                            v.      Run the database upgrade script for the new ATG version.
  1. Application Server Upgrade: This phase will be done in parallel to step 1. It includes Platform upgrades and BuildScript Upgrades. In the Platform Upgrades we upgrade App server, operating system, jdbc drivers, hardware’s, browsers to the specific version to support latest features of ATG.
    • Operating System/ Hardware Upgrade: Based on the recommendation for ATG platform, Operating system and hardware needs to be updated. ATG provided specifications can be referred for the same.  Operating system and Hardware upgrade is required to achieve a proportionate performance benefit using the new ATG platform.
    • JDK upgrade: JDK has to be upgraded based on the ATG specifications for the newer ATG platform.  For example ATG2007.1 recommends JDK 1.5 or above.
    • JDBC driver: If the database is migrated from Solid to Oracle or from Oracle to MSSQL, JDBC driver needs to be updated. Sample driver names are as follows:
                Oracle - oracle.jdbc.driver.OracleDriver
                MSSQL- com.microsoft.sqlserver.jdbc.SQLServerDriver
               SOLID - solid.jdbc.SolidDriver
    • Application server Upgrade: ATG provides choice for selecting an application server to suit client requirement. BEA Weblogic, IBM Websphere and jBoss are mainly the application servers that ATG supports. Following points are to be taken care of when upgrading the Application server, based on ATG recommendations. Examples below would be with respect to jBoss Server.
                          i. Download & Install jBoss Server. Please follow document provided by Apache for the steps to install jBoss server.  
                          ii.  Create a new server by creating a copy of the “default” server, in <JBOSS_HOME/server>  folder.  Rename the folder to reflect your application name like commerce, CSC etc.
                        iii. Create a file name atg-oracle-ds.xml, if oracle is the database, in the folder <JBOSS_HOME>/server/<application name>/deploy folder.  The file will contain information about all the datasource used in ATG. Below is sample xml that can be referred for the format of the datasource definition.          
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
   <local-tx-datasource>
      <!-- The jndi name of the DataSource, it is prefixed with java:/ -->
      <!-- Datasources are not available outside the virtual machine -->
      <jndi-name>atgcore_ds</jndi-name>
      <!-- The jdbc url -->
      <!-- OCI -->
      <connection-url>jdbc:oracle:oci:@localhost:orcl</connection-url>
      <!-- Thin -->
      <!-- The driver class -->
      <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
      <!-- The login and password -->
      <user-name>atgcore</user-name>
      <password>atgcore</password>
      <!-- The minimum connections in a pool/sub-pool.
           Pools are lazily constructed on first use -->
      <min-pool-size>1</min-pool-size>
      <!-- The maximum connections in a pool/sub-pool -->
      <max-pool-size>4</max-pool-size>
   </local-tx-datasource>
</datasources>
                          iv.   Update all the Datasource properties, if database has been changed, in <ATG_HOME>/servers/<applicationserver>/localconfig folder.
  1. Build Script: Build script is required to deploy the application to the application server.  Build scripts takes care of all the dependencies for a given application.
                        i.      Updating Existing Build script: 
1.       The existing build script should be modified to target all the output (classes/JSPs/HTMLs etc.) to the <JBOSS-HOME/server/<application name>/deploy/<application EAR> folder.
2.      All the ATG library path should be updated as per the newer ATG installation.
3.      Any task related to database should be updated, if required.
                         ii.      Creating a new build script: The build script should consider the following points
1.       Build script should include the library for DAS, DCS, DAF etc, depending on the modules/application to be used. Find below the sample for the build script.      In the same way other files can be added to the classpath.  
<path id="dynamo.classpath">
<fileset dir="${dynamo.home}/../DAS/lib">
      <include name="**/*.jar" />
</fileset>
</path>
2.       Build script should contain task to compile any custom java code. (All the values starting with $ are being picked from a property file.)   
 <target name="compile" >
    <mkdir dir="${classes.dir}" />
<javac srcdir="${src.dir}" destdir="${classes.dir}" debug="true" deprecation="false" optimize="false" source="1.4" target="1.4" verbose="${javac.verbose.bool}">
      <classpath path="${classpath}" />
<classpath path="${lib.classpath}" />
<classpath path="${basedir}/../20063support/build/classes" />
<classpath refid="dynamo.classpath" />
<include name="**/*.java" />
</javac>
<!-- copy java resource files to build directory -->
<copy todir="${classes.dir}">
<fileset dir="${src.dir}/">
<patternset refid="resource.files" />
      </fileset>
</copy>
</target>
3.      Add Task to copy J2EE stuff to <JBOSS-HOME/server/<application name>/deploy/<application EAR> folder.
 <target name="devdeploy">
    <copy description="Copying j2ee files to deployment"         todir="${application.ear.install.dir}/${application.ear.filename}"
          verbose="${copy.verbose.bool}">
      <fileset dir="${j2ee.dir}">
        <exclude name="META-INF/*.*" />
        <exclude name="WEB-INF/*.*" />
      </fileset>
    </copy>
 </target>
Similarly we can add other tasks to deploy, creating javadocs, Execute SQL scripts etc.
 
  1. Repository Upgrade: After data got migrated, run the web (application) to check any changes to the object models. Run the application to test the entire catalog walk through and user logins concurrently. Based on the test results repository will be updated to new version. Use Repository Views to identify new method signatures and for any deprecated methods.
  2. Implementing Enhancements: Consider Enhancements as new features or change requests. In each of these cases we have to follow the life cycle phases in the specified order: application assessment & estimation, application upgrade, testing & QA on target platform, tuning & performance enhancements, Assistance in Production deployment and Documentation & training. Following points needs to be considered while implementing an enhancement
    • All the java files should be checked for the use of HttpServletRequest & HttpServletResponse object. Reference to these objects should be changed to DynamoHttpServletRequest and DynamoHttpServletResponse objects.
    • JSP files should be checked for import statements for all the java objects. Dynamo Application server implicitly adds all the java objects used in a JSP. So an explicit import was not required when ATG is deployed on DAS.
    • Any if-elseif-else block used in JSP files should be opened and closed with curly brackets { }.
  1. Test cases for Integration: Write test cases for the new functionality and for performance improvements of the changed system.
  2. Supported Application Integration & Merchandizing Upgrade : 
Check to see new migration will not break the integration with other supported legacy systems. In merchandising upgrade product catalog will be modified to fit the new schema requirements. ATG provides components for merchandizing upgrade. Use BCC component for product catalog management.
  1. Testing:  All the modules or subsystems are integrated and tested for the correctness of the changed system. It in turn includes tests for functionality and performance considerations. There are two major ways of carrying out an integration test, called the bottom-up method and the top-down method. Bottom-up integration testing begins with unit testing, followed by tests of progressively higher-level combinations of units called modules or builds. In top-down integration testing, the highest-level modules are tested first and progressively lower-level modules are tested after. We then perform stress testing by increasing number of concurrent users or Requests to the application.
  2. UAT Mode: Customer acceptance test will be done for the new features and performance considerations. Write the buildscripts if the user doesn’t have any and test changed system in order to approve the system and go live.
Checklist
 
  1. Configuration management system (SVN, VSS etc.) should be in place and accessible to every team member. Every team member should update code everyday, before starting any work or before checking in any code change.
  2. Base version of any OOTB file should be checked in before modifying it. 
  3. Keep a list of all the ports to be kept open across the networks.
  4. Security certificates: ensure that the security certificates to be used in Live system are tested successfully before Go-Live date.  
About Inkriti
 
Inkriti is a technology consulting company that is a leading provider of IT Solutions for customer-centric e-commerce.  Inkriti is headquartered in Boston, MA and has a global technology center in India. Visit us online at http://www.inkriti.com