+ All Categories
Home > Documents > ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation...

ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation...

Date post: 15-Aug-2020
Category:
Upload: others
View: 6 times
Download: 0 times
Share this document with a friend
275
Service Center Version 10.0.2 Installation and Programming Guide Oracle ATG One Main Street Cambridge, MA 02142 USA
Transcript
Page 1: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

Service Center

Version 10.0.2

Installation and Programming Guide

Oracle ATG One Main Street Cambridge, MA 02142 USA

Page 2: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

ATG Commerce Service Center Installation and Programming Guide

Document Version Service10.0.2 CSCINSTALLv1 04/15/11

Copyright Copyright © 1997, 2011, Oracle and/or its affiliates. All rights reserved.

This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.

The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.

If this software or related documentation is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable:

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are “commercial computer software” or “commercial technical data” pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle America, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark licensed through X/Open Company, Ltd.

This software or hardware and documentation may provide access to or information on content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services.

For information about Oracle’s commitment to accessibility, visit the Oracle Accessibility Program website at http://www.oracle.com/us/corporate/accessibility/index.html.

Oracle customers have access to electronic support through My Oracle Support. For information, visit http://www.oracle.com/support/contact.html or visit http://www.oracle.com/accessibility/support.html if you are hearing impaired.

Page 3: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

i i i

C o n t e n t s

μ

Contents

1 Introduction 1 Audience 1 Documentation Conventions 1 Related Documents 2 Before You Begin 3 Browser and Environment Requirements 3

2 ATG Commerce Service Center Architecture 5 Customer-Facing Server Configuration 5 Agent-Facing Server Configuration 6 Multiple Sites and Data Sharing 7

Site Groups 7 Shareables and/or Shareable Types 8 Site Context 8 Site Priority 9

3 Installing ATG Commerce Service Center 11 Requirements for ATG Commerce Service Center 11

Database and Schema Requirements 11 Adjusting the JBoss Heap Size 12

Installing with ATG Configuration and Installation Manager (CIM) 12 Configuring ATG Commerce Center with an Existing ATG Commerce Installation13 Reviewing Repositories 14 Using IDGenerators 15 Understanding Lock Management 15 Starting the ATG Commerce Service Center Server 17

Accessing ATG Commerce Service Center 17 Enabling Report Data Collection 17

4 Configuring ATG Commerce Service Center 19 Configuring Order and Profile Search 19

Order and Profile Search Overview 19 Configuring ATG Search Indexing Environments 22 Configuring Live Indexing for ATG Search 23 Customizing the Profile Search 26

Configuring Oracle for Catalog Searching 27

Page 4: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

i v

C o n t e n t s

μμConfiguring Multiple Sites 27

Site Configuration Overview 27 Configuring the Default Site 28 Configuring the Default Site Icon 28 Configuring a Site Icon 28 Configuring Shareables 29 Enabling Multisite 29

Customizing Wish/Gift Lists 29 Modifying the New Gift List Form 29 Configuring the Gift Registry Search 30

Configuring Returnable Order States 31 Configuring Return Reason Codes 31

Creating Return Reason Codes 32 Setting up Returned Item Dispositions 34

Creating Returned Item Dispositions 35 Configuring Scheduled Orders 36

Enabling and Disabling Scheduled Orders 37 Configuring Price Lists 37

Configuring Promotions Browser Access 38 Configuring Order Approval 39

Enabling the Order Approval Process 40 Setting Global Appeasements Limits 40 Modifying Individual Appeasement Limits 40 Providing Approval Authorization 40

5 Setting Up Internal Access Control 43 Access Control Overview 43 Default Internal User Access Control Configuration 44

Global Roles 44 Access Controllers 45 Creating New Roles 45

Creating Agent Profiles 46 Creating a New Agent Role 47 Default Roles 48 Customizing the Default Landing Page 51

6 Configuring ATG Click to Call 53 ATG Click to Call Integration Overview 53

Initiating a Call 53 Using a CTI System 53 Specifying Links and Pop Ups 54 Automatic Initialization of the Agent’s Working Environment 54

ATG Click to Call Requirements 54 IBM WebSphere Requirements 55 Oracle WebLogic Requirements 55

Configuring the ATG Click to Call Account 55

Page 5: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

v

C o n t e n t s

μAdding an Agent to ATG Commerce Service Center 56 Adding Agent Phone Numbers 56

Configuring Customer-Facing Store Web Pages 56 Configuring Automatic Page Instrumentation 56 Configuring a Static Link 57 Disabling the Orphaned Session Service 57

Creating Store-Facing Links 58 Using the clickToConnectSave() Function 58 ATGCallToken 60

Creating Store-Facing Static ATG Click to Call Links 61 Creating an ATG Click to Call Link 61 Creating an ATG Click to Call Pop Up 62 Creating a Customized Link or Pop Up 63

Using WinCare 67 Integrating with WinCare 67 Integrating without WinCare 68 Manual CTI Integration 70

Configuring ATG Commerce Service Center Authentication with WinCare 70 Enabling ATG Commerce Service Center Auto-Authentication 70 Disabling ATG Commerce Service Center Auto-Authentication 71

Configuring ATG Commerce Service Center Landing Page Components 71 Default Landing Page 72 Customizing Landing Page Components 72

7 Programming ATG Commerce Service Center 77 Using the CSRConfigurator Component 77 Using Service Center Debugging Modes 79

Service Center Debugging Mode 79 Dojo Debugging Mode 80

Adding a Custom Panel in Service Center 80 Customer Management Panel Configuration 82 Adding a New Panel to ATG Commerce Service Center 83

Adding a New JavaScript or CSS File 85 Adding a Custom Tab 86

Modifying a Tab Action 89 Troubleshooting Tab Customization 89

Customizing Forms 90 Location of Configuration Property File 91

Customizing Grids and Tables 94 Customizable Components 94 Customizing Table Configuration 95 Customizing Grid Configuration 97 Customizing Column Layout 99 Configuring the PageFragment Component 102 Customizing Column Content 102 Modifying Columns 106 Changing the Item Detail (Hover) Page 109

Page 6: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

v i

C o n t e n t s

μμConfiguring Pages with Nucleus Components 110

Customization Options 111 Simple Customization 112 Targeting Customization 114 Creating a ProductSkuRenderer 116 Renderers 117 Customization Information 119 Customizing the Order Summary Panel 119

Customizing E-Mail 121 Configuring E-mail Notifications 121 New Password Configuration 122 Configuring Order Confirmation E-Mails 122 Configuring E-Mail Templates 123

Environment Management 123 CSREnvironmentTools 124 CSREnvironmentMonitor 124 CSREnvironmentConstants 125 EnvironmentChangeFormHandler, ChangeOrder 125 EnvironmentTools 126 Environment Management and Site Context 127

Configuring Ticketing 127 Configuring Ticket Disposition 127 Configuring Specific Ticket Activities 128

Configuring Audit Logging 129 Viewing Audit Logs 130 Adding a New Agent Audit Log Record 131 Disabling Audit Logging Events 133

Using Window Scoped Failover 136 Adding Additional Components 137

Configuring Catalog and Price Lists 137 Using the Current Catalog 138 Using the Current Price List 138 Defining the Default Catalog 139 Defining the Default Price List 139 Setting the Pricing Locale 140 Quick Access Catalogs and Price Lists 140

Pricing Overview 141 Loading Orders and Pricing 141 Modifiable Order API 141 Price Lists and Pricing 142 Original versus Current Pricing 142 Automatic Removal of Items 151 Promotions 151 API for Determining the Correct PricingModelHolder 152 Manual Pricing Adjustments 152 Scheduled Order Templates 153

Customizing Shipping and Payments 154

Page 7: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

v i i

C o n t e n t s

μShipping and Payment Group Configuration Overview 154 Default Shipping Group Types 155 Default Payment Group Types 160 Shipping and Payment Group Form Handlers 167 Configuring Shipping Addresses 168

Configuring Address Books 169 AddressBook Class Information 169 AddressReferenceManager 170 Enabling and Disabling Address Copies 173

Modifying Submitted Orders 173 Cloning Pipelines 174 Cloning Core Classes 177 Extending Core ATG Commerce Objects for Cloning 179 Handling and Fulfillment 180 Fulfillment Notification for Order Modifications 181

Customizing Refund Methods 182 Customizing Returns and Exchanges 183

Returns and Exchanges Overview 183 Calculating Suggested and Actual Refund Amounts 184 ItemCostAdjustments 185 Extending Return Request Objects 188 Configuring Default Return Fees 190 Identifying Returnable Orders and Items 191 Customizing Shipping Refund Calculations 191 ItemPriceSource Objects 192 Accessing Working Orders 192 Pricing Exchange Orders 193 Applying Promotions to Exchange Orders 194

Customizing Scheduled Orders 196 Displaying Scheduling Information 197 Scheduled Order Components 197 Scheduled Orders Pipeline Additions 198

Using Scenarios 199 Configuring Scenario Events 199 Working with Scenario Managers 200

Configuring Process Editor Servers 203 Configuring the Customer-Facing Scenario Manager 203 Configuring the Agent-Facing Scenario Managers 204

Modifying Keyboard Shortcuts 204 Defining Global Keyboard Shortcuts 205

ATG Commerce Service Center Reporting Framework 206 Data Collection Overview 206 Loader Pipeline Overview 209

Appendix A: ATG Commerce Service Center Database Tables 215 ATG Commerce Service Center Core Tables 215 ATG Commerce Service Center Order Approval Tables 225

Page 8: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

v i i i

C o n t e n t s

μμATG Commerce Service Center Profile Tables 227 ATG Commerce Service Center Logging Tables 227 ATG Commerce Service Center Ticketing Tables 235

Appendix B: ATG Commerce Service Center Access Rights Comparison245

Appendix C: CIM Configuration Components 249 Available Added Functionality 249 Server Instances 249

Add On Modifications 250 Data Source Configuration 251

JTDataSource for Agent 251 JTDataSource for Production 251 Switching Data Source 252

CIM File Configuration 252 Production Server File Configurations 253 Agent Server File Configurations 253

Example: CIM Installation 254 Prerequisites 255 Installing the Products 255 Creating a CIM Output File 256 Running CIM 256 CIM Script Selections 256

Index 263

Page 9: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1

1 - I n t r o d u c t i o n

μ1 Introduction

ATG Commerce Service Center (CSC) is a customizable and deployable customer service application that enables an agent to perform the following tasks for an ATG Commerce site:

Create and manage customer profiles

Create and manage orders

Issue refunds and exchanges

Process returned items

Research customer activity

For information about ATG Commerce, see the ATG Commerce Guide to Setting Up a Store and the ATG Commerce Programming Guide.

Audience This manual is intended for Systems, Site Administrators and Programmers responsible for installing, configuring and customizing CSC.

Documentation Conventions The following conventions are used in this manual:

Installation Directory

<ATG10dir> — The installation directory for ATG 10. For example, the default location for installations is /ATG/ATG10.

Menu Navigation

The “ > “ (greater than) symbol indicates menu choices. For example, File > Save means you should select the Save option on the File menu.

Page 10: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2

1 - I n t r o d u c t i o n

μRelated Documents

The following ATG documentation provides additional reference information:

Document Description

ATG Commerce Service Center User Guide Describes ATG Commerce Service Center concepts and tasks for agents and end users.

ATG API Reference for Commerce Service Center

JavaDoc descriptions of ATG Commerce Service Center.

ATG Installation and Configuration Guide Describes how to install and configure ATG applications running on different web applications.

ATG Personalization Programming Guide Describes programming tasks for the ATG Personalization and Scenarios modules. Includes information on setting up profile repositories, creating targeting rules and services, configuring scenario servers, and adding custom scenario events and actions.

ATG Personalization Guide for Business Users

Designed to help business users understand and work with the ATG Personalization and Scenarios modules. Describes how to use the ATG Control Center (ACC) to perform typical tasks such as segmenting site visitors, defining rules for personalizing site content, and using scenarios to create promotional campaigns.

ATG Commerce Guide to Setting Up a Store Describes how to use ATG Business Commerce and ATG Consumer Commerce to create an online store. Intended for business users and page developers.

ATG Commerce Programming Guide Describes how to install and customize ATG Consumer Commerce and ATG Business Commerce. Intended for programmers and site administrators.

ATG Business Control Center User’s Guide Describes how to use the ATG Business Control Center’s Web interface to manage user profiles and organizations; create and assign roles; segment site visitors; and define rules for personalizing site content. Also includes setup and configuration information. Intended for all audiences.

ATG Repository Guide Describes the ATG Repository API, the heart of ATG’s Data Anywhere Architecture. Presents programming concepts for advanced users, including SQL repositories, LDAP repositories, secured repositories, and composite repositories. Includes examples and reference information to help programmers develop applications using the Repository API.

Page 11: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

3

1 - I n t r o d u c t i o n

μ

Before You Begin This section provides a high-level description of the tasks you need to perform before running CSC:

1. Ensure that Java 1.6.0_18 JDK is installed.

2. Install a supported application server. Consult the ATG Installation and Configuration Guide for your application server.

3. Install ATG 10.0.2.

4. Install and configure ATG Commerce. 10.0.2

5. Install and configure ATG Service 10.0.2.

6. Install a supported Database.

Browser and Environment Requirements For information about the supported browsers, environments, and configurations, see http://www.atg.com/en/products-services/commerce/supported-environments/.

Users should enable cookies and scripting in the browser they use to access ATG Service.

Page 12: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

4

1 - I n t r o d u c t i o n

μ

Page 13: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

5

2 - A T G C o m m e r c e S e r v i c e C e n t e r A r c h i t e c t u r e

μ2 ATG Commerce Service Center

Architecture

ATG Commerce Service Center (CSC) is comprised of customer-facing (or production and agent-facing clusters. The customer-facing cluster contains such applications as the customer store, ATG Commerce and other client facing components. The agent-facing cluster contains application such as CSC and other agent-facing components.

Customer-Facing Server Configuration Customer-facing servers, which provide product catalog information and commerce repositories, employ several data source components. In this configuration, the JTDataSource component is used for all repositories other than the product catalog.

Page 14: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

6

2 - A T G C o m m e r c e S e r v i c e C e n t e r A r c h i t e c t u r e

μ

ATG Customer-Facing Server Configuration

Note: The product catalog uses the ProductCatalogSwitchingDataSource, which references the ProductCatalogFakeXADataSourceA and ProductCatalogFakeXADataSourceB components that access the catalog data.

Agent-Facing Server Configuration With agent-facing server configurations, the JTDataSource references its own schema rather than the one used by the customer facing server. In addition to the JTDataSource agent-facing servers use a JTDataSource_production file. This JTDataSource_production data source references all operational data, which includes profiles, orders, tickets, and inventory data.

The catalog may still continue to uses the ProductCatalogSwitchingDataSource component.

Page 15: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

7

2 - A T G C o m m e r c e S e r v i c e C e n t e r A r c h i t e c t u r e

μ

ATG Agent-Facing Server Configuration

For additional information on ATG Commerce architecture, refer to the ATG Commerce Programming Guide.

Note: The ATG Commerce B2B module is not support on CSC, and will not function.

Multiple Sites and Data Sharing Using CSC and Site Administration, you can create and manage multiple sites, as well as to share data between the sites. When an agent is working on a site, their session has site context. Site context determines what will be displayed on the screen and the availability of assets such as products, SKUs, catalogs and price lists. Changing from one site to another changes the site context.

When configuring your system, you identify the assets that are available to each site using Site Administration or ATG Merchandising. Site Administration allows you to define site groups and Shareables. For additional information on using Site Administration, refer to the ATG Multisite Administration Guide.

Site Groups

Site groups are created using Site Administration, and allow you to configure sites that are similar or contain similar properties. Site groups can contain a component, such as a shopping cart. When you add a shareable component to a site group, all of the sites within the site group will use the same component. A

Page 16: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

8

2 - A T G C o m m e r c e S e r v i c e C e n t e r A r c h i t e c t u r e

μsite can belong to no site groups, or can belong to many site groups. However, if desired, you can configure your multisite environment so that a site may be a member of only one site group.

For additional information on configuring site groups, refer to the ATG Multisite Administration Guide.

Shareables and/or Shareable Types

When working with multiple sites, you can set up site groups to share Nucleus components. When site groups that contain shareable components are also known as sharing groups. By default, the Shopping Cart can be shared between multiple sites. To identify a shareable component, you must register it, and then add it to a sharing group using Site Administration.

For additional information on registering and using shareables, refer to the ATG Multisite Administration Guide.

Site Context

Default sites set the site context when the agent logs in. When setting site context the catalog, price list (if used) and sale price list (if used) are set based upon the site. CSC gets the default information from the site repository using ATG Commerce.

Page 17: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

9

2 - A T G C o m m e r c e S e r v i c e C e n t e r A r c h i t e c t u r e

μSite Priority

When configuring sites, you can identify site priority. Site priority allows you to select which sites will be displayed first in the site pickers. Using Site Administration, you can order the sites so that they display in a specific order. For example:

The Main Store is displayed first in the Site Picker. Then the sub stores one through three are listed in order. Setting the site priority allows you to identify those sites that will be accessed the most by agents.

For information on configuring your CSC environment for multisite, refer to the Configuring Multiple Sites section.

Page 18: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 0

2 - A T G C o m m e r c e S e r v i c e C e n t e r A r c h i t e c t u r e

μ

Page 19: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 1

3 - I n s t a l l i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ3 Installing ATG Commerce Service

Center

This section discusses the installation of ATG Commerce Service Center (CSC).

Requirements for ATG Commerce Service Center Before you proceed, you must have the following installed or configured:

Java JDK 1.6.0_18. Ensure that the JAVA_HOME and JAVA_HOME/bin variables are set in your path correctly

A supported application server, such as JBoss or WebLogic. Consult the ATG Installation and Configuration Guide for your application server

A supported database, such as DB2 or Oracle. Create two database users for your database to use, for example admin and svcagent users.

ATG 10.0.2 which includes ATG Adaptive Scenario Engine 10.0.2 , ATG Dynamo Application Framework, ATG Personalization Server, ATG Scenario Server, and the ATG Business Control Center (BCC)

ATG Commerce 10.0.2 or ATG Commerce Reference Store (CRS)10.0.2

Note: CSC does not work with the ATG Commerce B2B application

ATG Service 10.0.2 and ATG Search 10.0.2, which requires a separate instance and server for performing search indexing

Database and Schema Requirements

The following databases and schemas are used in CSC. For additional information on configuration and creation of schemas, refer to the ATG Search Installation and Configuration Guide.

CSC requires two different database user accounts for database configuration. Create the following accounts before configuring the database

Page 20: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 2

3 - I n s t a l l i n g A T G C o m m e r c e S e r v i c e C e n t e r

μDatabase Schema Contents

svcagent

(Agent) Versioned repository tables. Referred to in this document as the agent schema. This schema is accessed from the agent-facing servers.

svcadmin (Production)

Unversioned repository tables. Referred to in this document as the production schema. This schema is accessed from the customer-facing servers.

Databases can be configured with the tables on separate machines, separate table spaces or partitions, or in other configurations.

The following table outlines the SQL files used, the product that the file references, and the schema to which the file should be pointed:

SQL Product Schema

DCS-CSR_production_ddl.sql CSC Production

DCS-CSR_agent_ddl.sql CSC Agent

DCS-CSR_management_ddl.sql CSC Management

service_datawarehouse.sql

(optional – required if running data warehouse) ATG Reporting Data warehouse

Adjusting the JBoss Heap Size

If you are using JBoss, you must adjust the heap size by editing the <jbossdir>/bin/run file by searching for “Sun JVM memory allocation pool parameters” and changing the JAVA_OPTS line:

set JAVA_OPTS=%JAVA_OPTS% -server -Xms1152m -Xmx1152m -XX:

MaxPermSize=128m -XX: MaxNewSize=128m

Installing with ATG Configuration and Installation Manager (CIM)

ATG’s Configuration and Installation Manager (CIM) simplifies ATG product configuration by providing the steps that perform the configuration of the required database tables and necessary CSC modules. This ensures that all necessary steps are completed and are performed in the correct order. Use CIM to get your installation running quickly; however, additional configuration on your installation may be necessary.

CIM handles the following configuration steps:

Page 21: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 3

3 - I n s t a l l i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ Creates data sources according to the database connection information you supplied,

including those needed for the ATG Customer Intelligence (ACI) data warehouse and ATG Search

Creates database tables and imports initial data

Creates and configures ATG servers, including a lock manager and a required loader servers

Assembles your application EAR files for each ATG server, including modules for the Agent, Production and Data Warehouse load servers, as well as DCS-CSR and Fulfillment modules for Agents

Deploys EAR files to your application server and allows you to start up the agent-facing, customer-facing and load servers.

Allows you to add custom modules

See Appendix C: CIM Configuration Components for a full listing of the database scripts and configuration files CIM uses. Refer to the CIM script help and the ATG Installation and Configuration Guide for additional information on CIM.

To install CSC using CIM, do the following:

1. Install your application server.

2. Install your application files.

3. To start CIM, go to <ATG10dir>/home/bin and launch the CIM script:

./cim.sh or cim.bat

4. Select the products you want to configure.

5. Select the add-ons.

6. Continue through CIM according to the prompts. Type H at any prompt for additional information.

Configuring ATG Commerce Center with an Existing ATG Commerce Installation

The following steps are performed by CIM and are necessary only if you have an existing ATG Commerce install. The information provided here will assist in running the CIM script and configuration.

Installing the Production Schema

If you have an existing installation of ATG Commerce, or of the ATG platform/DCS tables installed on your production schema, the following SQL files are the only files that should be installed on the production schema. These files are located in the following directories:

<ATG10dir>/CSC10/DCS-CSR/sql/install/

database-vendor/DCS-CSR_all.sql

<ATG10dir>/Service10/Service/install/scripts/

database-vendor/create-service-all.bat|sh

Page 22: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 4

3 - I n s t a l l i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ If you are adding ATG Reporting, you should also add the

<ATG10dir>/Service10/Service/install/scripts/

database-vendor/create-service-datawarehouse-all.sql file in the same schema where your data warehouse tables are installed. Refer to the ATG Customer Intelligence Data Warehouse Guide for information on ATG Commerce and CSC reports.

Installing the Agent Schema

Create a new agent schema and add the following SQL files. For information on creating a new agent schema, refer to the Creating Database Schemas in the ATG Search Installation and Configuration Guide.

<ATG10dir>/Service10.0.2/Service/install/scripts/

database-vendor/service_agent_all.sql

<ATG10dir>/CSC10.0.2/DCS-CSR/sql/db_components/

database-vendor/DCS-CSR_logging_ddl.sql

Configuring the JTDataSource Files

The JTDataSource file on your agent-facing server should point to the agent schema and the JTDataSource_production file should point to the production schema. Refer to the Configuring the svcagent (Agent) Server section of the ATG Service Installation and Configuration Guide for information on configuring the JTDataSource files.

Importing Data

Once CIM has created the JTDataSource files, load the initial configuration data into the repositories.

The import data scripts are located in <ATG10dir>/Service10.0.2/Service/install/ scripts/import-scripts directory. Import Service-specific data by running the import script import-service-all. This script assumes that two server configurations have been setup, one for agent-facing and one for customer-facing, and loads both the agent and production data. There are two flags available when running this import script.

1. Import the data onto the agent-facing server by running the following:

import-service-all -a agent-facing-server-name

2. Import data onto the customer-facing server by running the following:

import-service-all -p customer-facing-server-name

Reviewing Repositories

Repositories are configured using the CIM Database Configuration menu.

The CSC database tables are used by several repositories. Depending on your needs, you may need to change the configuration of these repositories, such as their data sources. For information on configuring repositories, refer to the ATG Repository Guide.

The following repositories are shared between your customer-facing server and CSC:

/atg/commerce/catalog/ProductCatalog

Page 23: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 5

3 - I n s t a l l i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ /atg/commerce/claimable/ClaimableRepository

/atg/commerce/custsvc/CsrRepository

/atg/commerce/gifts/Giftlists

/atg/commerce/inventory/InventoryRepository

/atg/commerce/order/OrderRepository

/atg/commerce/pricing/priceLists/PriceLists

/atg/userprofiling/ProfileAdapterRepository

CIM configures all repositories to use the /atg/dynamo/service/jdbc/JTDataSource_production DataSource, which should reference the production schema.

For each new repository, the following properties are set by default. If you create new repositories, you should ensure that these properties are configured:

Property Suggested Value

dataSource /atg/dynamo/service/jdbc/JTDataSource_production

idGenerator /atg/dynamo/service/IdGenerator_production

lockManager /atg/dynamo/service/ClientLockManager_production

eventServer /atg/dynamo/server/SQLRepositoryEventServer_production

subscriberRepository /atg/dynamo/service/jdbc/SQLRepository_production

Using IDGenerators

CIM will ensure that all repositories that are used in both the customer-facing and agent-facing servers share the same IDGenerator component.

By default, any repository defined in the customer facing cluster should use the /atg/dynamo/service/ IDGenerator_production IDGenerator component on the agent-facing server.

Understanding Lock Management

CIM allows you to configure dedicated lock manager servers during the installation process.

Lock servers synchronize caches among ATG servers to maintain data integrity, even if an item is modified at the same time by different servers. CIM will configure the ClientLockManager.properties and the ServerLockManager.properties files to ensure all servers are using the correct ports. For additional information on ClientLockManager and ServerLockManager properties, refer to the SQL Repository Caching section in the ATG Repository Guide.

Page 24: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 6

3 - I n s t a l l i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ ATG comes configured with a default client lock manager located at LockManager=/atg/dynamo/ service/ClientLockManager. By default, the ClientLockManager component has its useLockServer property set to false, which disables the lock server. To use locked mode repository caching, this property must be set to true. For example:

$class=atg.service.lockmanager.ClientLockManager

lockServerAddress=tartini,corelli

lockServerPort=9010,9010

useLockServer=true

ServerLockManager on the Customer-Facing Server

The customer-facing server cluster defines a primary ServerLockManager instance. Additionally, there is a defined ClientLockManager, which points to the primary ServerLockManager.

You can configure backup ServerLockManager instances for redundancy if needed. The following diagram shows a typical customer-facing configuration:

Customer-Facing Cluster Lock Management

ClientLockManagers on the Agent-Facing Server

Agent-facing servers use the customer-facing server lock manager for any shared repositories, and individually scheduled services.

The agent-facing clusters define a ClientLockManager_production, which points to the ServerLockManager used by the customer-facing server. The following diagram displays both the customer-facing server and the agent-facing server configuration.

Agent- Facing Cluster and Customer-Facing Server Lock Management

Page 25: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 7

3 - I n s t a l l i n g A T G C o m m e r c e S e r v i c e C e n t e r

μStarting the ATG Commerce Service Center Server Start the server by entering the following command:

<jbossdir>/bin/run.sh|exe -c atg

Accessing ATG Commerce Service Center You can access CSC at the following URL:

http: //hostname: port/agent

The hostname is the name of the machine on which CSC is running. The port is the port number that your application server uses to listen for requests; see the ATG Installation and Configuration Guide for your application server for the default port number.

Enabling Report Data Collection CSC can collect customer and order information, allowing you to generate reports using ATG Reporting Center. Enable the report data collection process by adding enabled=true to the localconfig/atg/dynamo/service/DeploymentDWDataCollectionConfig.properties file on the asset management and the agent-facing servers.

The metadata model for reports can be found in the <ATG10dir>/CSC10.0.2/DCS-CSR/DW/deployment/Commerce Service.zip file.

Page 26: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 8

3 - I n s t a l l i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ

Page 27: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 9

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ4 Configuring ATG Commerce Service

Center

This chapter describes the following CSC tasks that you perform as an administrator:

Note: To set up return reason codes and returned item dispositions, use the Customer Service task area on the main menu of the ATG Control Center (ACC). If you are running the ATG platform with a SOLID demo database, you may not see this option on the menu if the necessary accounts were not created during the installation process.

Configuring Order and Profile Search CSC uses an embedded search method for Orders and Customer Profile searches does not require the installation and set up of an ATG Search Administration server but is configured and administered using the ATG Dynamo Server Admin. This search process is not used for ticket or product searches.

To run profile and order searches, add the DPS.Search.Index and DCS.Search.Order.Index modules to your EAR file on each customer-facing and management server. DPS.Search.Index is used to run profile searches, while DCS.Search.Order.Index is used to run order searches. These modules capture changes that are made from the store front. If these modules are not run, then any profile or orders that are added or updated will not be indexed and thus not be searchable.

Refer to the Example: CIM Installation section for information on adding the modules during the CIM installation.

Order and Profile Search Overview

The order and profile search configuration is comprised of the following:

A routing component - The routing component allows you to create and administer search environments, as well as handle the live updates of the index

Indexing Output Configurations - An Indexing Output Configuration (IOC) is a component with an associated definition file. The definition file is a standard XML document that defines the repository items, such as fields, that create the search index. Separate indices are created for orders and profile, and as such, a definition document is created for each index: profile-output-config.xml and order-output-config.xml.

Page 28: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 0

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ An Indexing Service - The Indexing Service tracks updates in a particular environment

and passes information to the routing component to ensure the index is updated.

Indexed Items groups - The Indexed Items group defines the type of items that will be included in the index. By default, only submitted orders will be indexed.

Indexing Methods

Order and profile search support both incremental and bulk indexing. Incremental indexing occurs in real time, and as such, does not require an index deployment.

Incremental indexing is enabled by default, which is configured using the Indexing Service, to check for modifications to profiles and orders every five seconds from multiple environments. During some operations, such as modification, backup or restoration of an environment, incremental indexing is not available. During these operations, incremental updates are queued until incremental indexing is restored.

Bulk indexing, which is started from the IOC component, recreates the complete index and is performed in a temporary staging environment. When the bulk indexing job is completed, the temporary staging environment is swapped with the live environment. During the time that the bulk index is running, searches are performed in the live environment. However, incremental updates are queued and not applied until the bulk indexing job has completed and the environments are swapped.

Profiles and orders require separate ATG Search projects. This allows both profiles and orders to be indexed concurrently as indexing jobs from separate search environments can be run in parallel.

Customer profile and order information is queued using IncrementalItemQueue, which obtains requests from any server and is processed on the server(s) that executes the indexing request.

Note: You cannot search for incomplete orders. Incomplete orders, or orders that have yet to be submitted, are not indexed, and as such, are not contained within the search index.

Order and Profile Search Components

The following components from DAF.Search.Index are used for order and profile searches. For additional information on these components, refer to the ATG Search Installation and Configuration Guide.

/atg/search/repository/IncrementalItemQueue

/atg/search/repository/IncrementalItemQueueRepository

/atg/search/repository/ConfigStatePersister

/atg/search/repository/ConfigAndRepositoryPersister

/atg/search/repository/IncrementalLoader - DPS.Search.Index appends the ProfileOutputConfig to the monitoredOutputConfig property. DCS.Search.Order.Index appends the OrderOutputConfig to the monitoredOutputConfig property. When the IndexingPeriodicService runs, the IncrementalLoader will process queued indexing requests for each of the IOCs.

Set the /atg/search/repository/IncrementalLoader/ recordIncompleteOrderEvents to false to enable filtering of incomplete orders.

/atg/search/repository/BulkLoader

Page 29: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 1

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ /atg/search/repository/IndexingPeriodicService – Configured in

DPS.Search.Index to run every two seconds by default. All servers are configured with the IndexingPeriodicService enabled but only indexes any IOC that has the component enableIncrementalLoading=true and incrementalUpdateSeconds > 0. As such, you should only set the incrementalUpdateSeconds > 0 on servers that will be used for indexing.

The OrderOutputConfig.incrementalUpdateSeconds is set to 30 by default to ensure that at least one server will process the queued incremental indexing requests. In a production environment, it is recommended that you set incrementalUpdateSeconds=-1 on the agent-facing server and configure incrementalUpdateSeconds>0 on the management server. Incremental indexing can be enabled on any background server that is running DPS.Search.Index, and DCS.Search.Order.Index for servers.

The IndexingPeriodicService clears any expired configuration claim locks each time it runs using the checkExpiredConfigurationClaimsIntervalSeconds property, which checks for expired configuration claim locks every n seconds. Each time the IndexingPeriodicService runs, it checks to see if the time elapsed has exceeded this interval.

The following components are also used in the order and profile search process:

Component Description

/atg/userprofiling/search/

ProfileOutputConfig

The profile IOC. Defined in the DPS.Search.Index module so that an indexing request can be queued wherever a profile is added or updated. The component creates the profile-output-config.xml definition file.

/atg/commerce/search/

OrderOutputConfig

The order IOC. Defined in the DCS.Search.Order. Index module so that an order indexing request can be queued wherever an order is added or updated. The component creates the order-output-config.xml definition file.

/atg/search/repository/

LiveDocumentSubmitter

A special document submitter that updates the index in near real time. This component is defined in the DAF.Search.Index module.

/atg/commerce/search/

OrderProfileIdPropertyAccessor

Uses the atg.repository.search.indexing. accessor.ItemIdPropertyAccessor class that retrieves properties from an item where the item is referenced by ID. In this case, the order item references the user item by Profile ID.

/atg/userprofiling/search/

AddressPropertyAccessor

Uses the atg.repository.search.indexing. accessor.ConcatenatePropetyAccessor class to concatenate address1, address2 and address3 into a single indexed address meta property.

Page 30: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 2

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μComponent Description

/atg/search/repository/

AlphaNumericPropertyAccessor

Removes non-alpha-numeric characters from the indexed meta property. Used to strip white space and punctuation from phoneNumber to promote better search consistency.

Configuring ATG Search Indexing Environments

Each ATG Search project creates an indexing environment on the local machine. Configuration of order and profile search is done using the ATG Dynamo Server Admin. For additional information on search environments, refer to the Managing Search Environments chapter of the ATG Search Administration Guide.

1. On your ATG Search server, start the remote server by running the /Search/Search10.0.2/SearchAdmin/bin/startRemoteLauncher script.

2. Open the ATG Dynamo Server Admin at http: //hostname: port/dyn/admin/nucleus/atg/search/routing/LiveIndexingService/

3. Click the Create a new live indexing environment link. Two buttons appear for creating Order and Profile search environments.

4. Click the buttons to create one of the environments and enter the details of your search engine. You can either select the check box for your existing machine or enter the address of another machine.

5. Repeat steps 3 and 4 to create additional indexing environments.

6. Click the Environments link to display the current default environments. Two environments, a live indexing and a bulk index, are created for both Profile and Order processes.

Page 31: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 3

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ

Note: If you choose different environment names than the default ATGProfile and ATGOrder, you must edit the /atg/userprofiling/search/ ProfileSearchConfiguration and /atg/commerce/search/ OrderSearchConfiguration components to reflect the search environment names and corresponding logical partition names.

7. Use the Environment page to manage your environments.

Configuring Live Indexing for ATG Search

For every server that creates, updates or deletes profiles or orders you must perform the following:

1. Add DPS.Search.Index and DCS.Search.Order.Index modules to the EAR file on the agent-facing servers, if not already present. Also add these modules to the EAR file for your customer-facing and management servers.

2. Modify the Initial.properties file in all servers /localconfig directory to contain the following. This includes agent-facing, customer-facing, indexing and commerce servers:

initialServices+=\

/atg/userprofiling/search/ProfileOutputConfig, \

/atg/commerce/search/OrderOutputConfig

3. You must pick an internal server that will be your live indexing server. For a production environment, this must be a dedicated server. Note: Only one server can be the indexing server. When creating the live indexing server ensure that you have added the DAF.Search.Routing, DPS.Search.Index, DCS.Search.Order.Index, DAF.Search.Index and DAFEar.Admin modules to the EAR file.

4. Edit the following properties files in the live indexing server /localconfig directory with the following settings:

/localconfig/atg/commerce/pricing/pricelists/PriceLists.properties

/localconfig/atg/commerce/inventory/InventoryRepository.properties

/localconfig/atg/commerce/order/OrderRepository.properties

/localconfig/atg/userprofiling/ProfileAdapterRepository.properties

/localconfig/atg/content/media/mediaRepository.properties

Add the following to the properties files:

idGenerator=/atg/dynamo/service/IdGenerator_production

lockManager=/atg/dynamo/service/ClientLockManager_production

Page 32: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 4

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μdataSource=/atg/dynamo/service/jdbc/JTDataSource_production

subscriberRepository=/atg/dynamo/service/jdbc/SQLRepository_production

eventServer=/atg/dynamo/server/SQLRepositoryEventServer_production

5. Edit the following properties files in the live indexing server /localconfig directory with the following settings:

/localconfig/atg/sitemap/SitemapRepository.properties

/localconfig/atg/dynamo/service/jdbc/SQLRepository.properties

/localconfig/atg/dynamo/security/AdminSqlRepository.properties

/localconfig/atg/userprofiling/PersonalizationRepository.properties

Add the following to the properties files:

idGenerator=/atg/dynamo/service/IdGenerator_agent

lockManager=/atg/dynamo/service/ClientLockManager_agent

eventServer=/atg/dynamo/server/SQLRepositoryEventServer_agent

6. Modify the following settings on the live indexing server property files:

Edit the /localconfig/atg/search/routing/repository/ SearchConfigurationRepository.properties file:

dataSource=/atg/dynamo/service/jdbc/JTDataSource_production

subscriberRepository=/atg/dynamo/service/jdbc/SQLRepository_production

Edit the /localconfig/atg/search/service/ SearchSQLRepository.properties file:

componentPath=/atg/dynamo/service/jdbc/SQLRepository_production

Edit the /localconfig/atg/search/service/ SearchSQLRepositoryEventServer.properties file:

componentPath=/atg/dynamo/server/SQLRepositoryEventServer_production

Edit the /localconfig/atg/search/service/SearchIdGenerator.properties file:

componentPath=/atg/dynamo/service/IdGenerator_production

Edit the /localconfig/atg/search/service/ SearchClientLockManager.properties file:

componentPath=/atg/dynamo/service/ClientLockManager_production

7. You must configure the processing of live indexing requests. Set the following properties in the /localconfig directory of CSC and the agent, management and any other server that is not configured as your live indexing server:

/atg/userprofiling/search/ProfileOutputConfig

incrementalUpdateSeconds=-1

/atg/userprofiling/search/OrderOutputConfig

incrementalUpdateSeconds=-1

Page 33: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 5

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μSet the following properties in the /localconfig directory of the live indexing server:

Note: The live indexing server must be a dedicated server if you are running in a production environment. If you are not running in a production environment, and the indexing server is located on another server, such as the management server, the incrementalUpdateSecond variables should be set to a positive value on that server.

/atg/userprofiling/search/ProfileOutputConfig

incrementalUpdateSeconds=5

/atg/commerce/search/OrderOutputConfig

incrementalUpdateSeconds=5

By setting incrementalUpdateSeconds to a positive value, you enable incremental indexing of profiles or orders on the management server. The value you enter is the frequency to check for profiles or orders to index. The value you set depends on how often you need the profile or order indexed.

8. Set the following /localconfig/atg/search/routing/ Configuration.properties values on your indexing and agent-facing servers. The deployment share directory is a single shared directory where master copies of indexes are stored. For additional information, refer to the Installing ATG Search chapter of the ATG Search Installation and Configuration Guide:

deployShare=drive: /yourSharedDirectory/yourDeployShareMainDirectory

engineDir=drive: /path to Search Engine

For example:

deployShare=C: \ATG\DeployShareMain

engineDir=C: \ATG9\Search10.0.2\SearchEngine

9. To create a full index, the indexing engine requires a clean partition. The clean partition is a file from which all indexes are created. As such, you need to identify the location of the clean partition by creating a /localconfig/atg/search/routing/ Configuration.properties file. Use the cleanPhysicalPartitionPath property to identify the full path to the clean partition.

There is a copy of the clean partition located at <ATGSearchdir>/SearchEngine/ operatingsystem/data/initial.index. To resolve the path correctly, use a relative path to identify the clean partition location as a local copy. For example:

cleanPhysicalPartitionPath =../data/initial.index

10. If you would like to preload the index with existing orders and profiles, run /dyn/admin/nucleus/atg/commerce/search/OrderOutputConfig/bulkload on /atg/userprofiling/search/ProfileOutputConfig and /atg/commerce/search/OrderOutputConfig.

For additional information, refer to the Configuring Remote Indexing Engines section in the ATG Search Installation and Configuration Guide.

Page 34: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 6

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μCustomizing the Profile Search

You can extend the Profile Search to search against fields that you identify.

For example to add two new fields, you must extend the class CustomerSearchTreeQueryFormHandler and have getters and setters for the new properties that you require so you will need to create a new component and then point the CustomerSearchTreeQueryFormHandler components $class to your new class. For example:

$class=atg.svc.agent.ui.formhandlers.

ExtendedCustomerSearchTreeQueryFormHandler

$scope=request

searchContext=/atg/search/formhandlers/SearchContext

searchRequest=/atg/search/routing/command/search/TreeQueryRequest

agentSearchRequestTrackerPath=/atg/svc/agent/ui/AgentProfileSearchRequestTracker

maxSearchResultsPerPage^=/atg/svc/agent/ui/

CustomerProfileSearchUIConfiguration.rowsPerPage

maxSearchResults=100

firstNameProperty=firstName

lastNameProperty=lastName

loginProperty=login

emailProperty=email

postalCodeProperty=postalCode

phoneNumberProperty=phoneNumber

myNewFieldName1=newField1

myNewFieldName2=newField2

1. Get the new field by extending your fragment as follows:

<li class="atg_svc_customer_newfield1">

<label class="atg_commerce_csr_fieldTitle">

<fmt: message key="customer.newfield1"/>

</label>

<dspel: input converter="nullable" type="hidden" size="30"

id="atg_service_customer_newfield1"

bean="CustomerSearchTreeQueryFormHandler.searchRequest.fields[6]

name"/>

<dspel: input converter="nullable" type="hidden" size="30"

id="atg_service_customer_searchnewFieldOp"

bean="CustomerSearchTreeQueryFormHandler.searchRequest.fields[6].op"/>

<span class="atg_svc_customer_newField">

<dspel: input type="text" converter="nullable"

id="atg_service_customer_newfieldValue"

bean="CustomerSearchTreeQueryFormHandler.searchRequest.fields[6].

value"

beanvalue="CustomerSearchTreeQueryFormHandler.previousSearchRequest.

fields[6].value" size="35" iclass="table_textbox" maxlength="50"/>

</span>

</li>

Page 35: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 7

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ2. Repeat the above step for the second field.

Configuring Oracle for Catalog Searching If you are configuring your system to perform catalog searches against Oracle, you must perform the following:

1. Configure your Oracle ConText settings to index the columns that the catalog search queries.

2. You can also set the simulateTextSearchQueries of your Product Catalog to TRUE.

Note: When running on a production environment, do not set the simulateTextSearchQueries to TRUE, as it will affect performance.

3. Add a new index:

create index

dcs_prd_chldsku_sid_idx on dcs_prd_chldsku (sku_id) indextype is

ctxsys.context;

This is needed because the following SQL is generated when searching by SKU:

SELECT DISTINCT t1.product_id,t1.product_type

FROM dcs_product t1, dcs_prd_chldsku t2, dcs_prd_catalogs t3

WHERE t2.product_id=t1.product_id

AND t3.product_id=t1.product_id

AND (CONTAINS(t2.sku_id,'xsku1126',0) > 1

AND t3.catalog_id = 'masterCatalog')

Configuring Multiple Sites CSC can be configured to display multiple sites. Sites can be used for such things as providing localized store information, branded segments, or creating running promotions.

Refer to the ATG Multisite Administration Guide for additional information on setting up multiple sites.

Multiple sites within CSC allow the agent to select a site, search throughout sites, and to set site context. Site context ensures that configuration of the current site will affect the CSC display and control the availability of assets such as products, SKUs, catalogs, and price lists. When an agent changes from one site to another the site context and potentially the available assets will also change.

Site Configuration Overview

The sites used by CSC are configured using Site Administration in the BCC and stored in the site repository. These settings include:

Enabled site – sites that are available to ATG applications such as CSC

Page 36: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 8

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ Commerce site – sites that are displayed in an ATG Commerce application

Site icon – an icon that identifies each site. The pixel limit for icons is 16x16

Default site – the default site sets the site context when the agent logs in. This information is obtained from the site repository

Default catalog – the catalog to use with a site unless other selection logic is available

Default price list and sale price list – price lists to use with a site unless other selection logic is available

Site priority - identifies the priority of the site if a member of multiple sites

In addition you use Site Administration to define site groups, shareables, site context and display priority, as described in the Multiple Sites and Data Sharing section above.

For additional information on configuring CSC using Site Administration, refer to the ATG Multisite Administration Guide.

Configuring the Default Site

To configure the default site, use the CSRConfigurator to set the defaultSiteId property. This sets the default current site when an agent logs into CSC. To load an agent specific default site, override the getAgentDefaultSiteId method in CSRAgentTools.

Configuring the Default Site Icon

To configure the default Site Icon in CSC, use the CSRConfigurator to set the defaultSiteIconURL property. This sets a default icon to use if no icon is specifically provided for a site.

Configuring a Site Icon

You can configure site icons to display on specific pages. The images are configured for each site within the site repository and must be downloaded to their appropriate location. To set a site icon, you must update the siteConfiguration item descriptor and add a siteIcon property with the location. The following example sets a siteIcon property value for Site A and for Site B:

<update-item item-descriptor="siteConfiguration" id="SiteA">

<set-property name="siteIcon"><![CDATA[/DCS-CSR/images/icons/icon_site_a.gif]]>

</set-property>

</update-item>

<update-item item-descriptor="siteConfiguration" id="SiteB">

<set-property name="siteIcon"><![CDATA[/DCS-CSR/images/icons/icon_site_b.gif]]>

</set-property>

</update-item>

Page 37: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 9

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μConfiguring Shareables

When you configure ATG Commerce, you identify the shareables that are used in both ATG Commerce and CSC. For information on configuring these shareables, refer to the ATG Commerce Programming Guide and the ATG Multisite Administration Guide.

Enabling Multisite

Using the siteManager multiSiteEnabled property, the isMultiSiteEnabled method allows you to conditionally render the CSC UI for multiple sites. Enabling multisite would allow you to make modifications to the UI in places such as the Order Search panel, Sites Dropdown, the Gift Registry or other panels. Refer to the ATG Multisite Administration Guide for additional information.

Customizing Wish/Gift Lists Gift and Wish lists are lists of items that are selected by customers who visit your site. An agent can assist a customer with the creation and management of their lists, as well as assist a customer to search and purchase from another customer’s list.

For additional information on Gift and Wish Lists, refer to the Setting up Gift Lists and Wish Lists section of the ATG Commerce Programming Guide.

Modifying the New Gift List Form

When an agent creates a new gift list, they use a form that is available on the Customer Profile. This form can be modified to include fields or information. There are two properties files that can be configured for the New Gift List form.

The default configuration for the Create Gift List Form, which is located at /atg/commerce/ custsvc/ui/fragments/gift/GiftListCreateDefault.properties, contains the following settings:

URL=/include/gift/giftlist/giftlistCreateUIFragment.jsp

servletContext=DCS-CSR

The extended configuration properties file, GiftListCreateExtended.properties, does not contain a reference to a JSP file.

The JSP file that is used to create the Gift List form is located at DCS-CSR/panels/gift/ createGiftList.jsp and is configured to import the following page fragments:

<dsp: importbean var="defaultPageFragment"

bean="/atg/commerce/custsvc/ui/fragments/gift/GiftListCreateDefault" />

<dsp: importbean var="extendedPageFragment"

bean="/atg/commerce/custsvc/ui/fragments/gift/GiftListCreateExtended" />

Page 38: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

3 0

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μFor additional information on configuring and modifying page fragments, refer to the Customizing Forms section.

Configuring the Gift Registry Search

The Gift Registry Search instance can also be customized to include additional fields or information. There are two properties file that can be modified.

The default configuration property file is available at /atg/commerce/custsvc/ui/fragments/gift/ GiftListSearchDefault.properties and contains the following:

URL=/include/gift/search/giftlistSearchUIFragment.jsp

servletContext=DCS-CSR

The extended configuration property, GiftListSearchExtended.properties, does not contain links to a JSP file.

The following JSP files are used for configuring the Gift List Search form:

JSP File Description

DCS-CSR/panels/gifts/

giftlistsearch.jsp Calls the following page fragments:

<dsp: importbean var="defaultPageFragment"

bean="/atg/commerce/custsvc/ui/fragments/

gift/GiftListSearchDefault" />

<dsp: importbean var="extendedPageFragment"

bean="/atg/commerce/custsvc/ui/fragments/

gift/GiftListSearchExtended" />

DCS-CSR/panels/gift/

searchResults.jsp

Calls the following page fragments:

<dsp: importbean var="defaultPageFragment"

bean="/atg/commerce/custsvc/ui/fragments/

gift/GiftListSearchResultsDefault" />

<dsp: importbean var="extendedPageFragment"

bean="/atg/commerce/custsvc/ui/fragments/

gift/GiftListSearchResultsExtended" />

The DCS-CSR/panels/gift/giftListSearchGrid.jsp provides the gift list search results grid:

/atg/commerce/custsvc/ui/tables/gift/GiftlistGrid.properties

$class=atg.svc.agent.ui.tables.GridConfiguration

columns=\

/atg/commerce/custsvc/ui/tables/gift/search/EventName,\

/atg/commerce/custsvc/ui/tables/gift/search/LastName,\

/atg/commerce/custsvc/ui/tables/gift/search/FirstName,\

/atg/commerce/custsvc/ui/tables/gift/search/CustomerID,\

Page 39: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

3 1

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ /atg/commerce/custsvc/ui/tables/gift/search/EventType,\

/atg/commerce/custsvc/ui/tables/gift/search/EventDate,\

rowsPerPage=10

gridHeight=450px

gridInstanceId=atg.commerce.csr.gift.giftlistInstance

gridPath=/atg/commerce/custsvc/ui/tables/gift/search/Giftistrid

gridWidgetId=atg_commerce_csr_customer_gift_GiftlistTable

progressNodeId=atg_commerce_csr_gift_GiftlistGridStatus

searchFormId=atg_commerce_csr_giftlistSearchForm

dataModelPage=/atg/commerce/custsvc/ui/tables/gift/search/GiftsistDataPage

gridPage=/atg/commerce/custsvc/ui/tables/gift/search/GiftlistGridPage

For additional information on configuring and modifying page fragments, refer to the Customizing Forms section.

Configuring Returnable Order States CSC allows the modification of submitted orders that have not been fulfilled, as well as returns and exchanges to orders that have been fulfilled.

1. To identify what orders can be returned, edit the modifiable and returnable-order states using the following component:

# /atg/commerce/custsvc/order/OrderIsReturnable

shippingGroupShippedStates=NO_PENDING_ACTION

2. Configure which order states are not modifiable using the following component:

# /atg/commerce/custsvc/order/OrderIsModifiable

nonModifiableOrderStates=REMOVED,

QUOTED,

NO_PENDING_ACTION,

PENDING_REMOVE,

PENDING_CUSTOMER_RETURN

nonModifiablePaymentGroupStates=REMOVED,

SETTLED

Configuring Return Reason Codes Return reason codes must be set up and configured before an agent can perform a return or exchange. Reason codes identify a reason for the return and are comprised of descriptions and corresponding ID numbers. Agents select reason codes when performing a return. The selected reason code is stored within the record of the customer’s exchange or refund.

Page 40: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

3 2

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μThe return reason item descriptor uses the following two properties:

Description – describes the return reason, such as ‘Damaged’ or ‘Wrong Color’ and contains the resource key

Readable description – The readableDescription property, which uses any given resource bundle and user-defined property type to make the data in the resource bundle accessible through the repository API. Note that the readableDescription property does not appear in the ‘New Item’ dialog box in the ACC

Once reason codes have been captured by the system, the system accesses the readableDescription property, which refers to the reason code identified in the ReasonDescriptionPropertyDescriptor property. This code accesses the description property and uses it as a key to look up the verbose description in the resource bundle, which is named in the resourceBundle attribute of the readableDescription property. The verbose string from the resource bundle will be the final text displayed.

Return reasons are configured by performing the following steps:

1. Add a returnReasons item to the /atg/commerce/custsvc/ CSRRepository. For example, the following will add a return reason of “Competitor Beat Price”:

<add-item item-descriptor="returnReasons"

repository="/atg/commerce/custsvc/CsrRepository">

<set-property name="description" value="competitorBeatPrice"/>

</add-item>

2. To add a new reason codes, copy all of the existing reason codes from the atg.commerce.csr.returns.ReturnReasonMessages.properties file to a new properties file. Then add any new reason codes to this file. The newly created resource file should be set in the resourceBundle attribute. The description property should contain the resource key. The atg.commerce.csr.returns. ReasonDescriptionPropertyDescriptor property uses this value as a key when returning reason codes from the resource bundle. Continuing with the Competitor Beat Price example:

#atg.commerce.csr.returns.ReturnReasonMessages.properties

competitorBeatPrice=Competitor Beat Price

3. You can specify a new resource bundle by changing the resource bundle specified in the CSRRepository definition file:

<item-descriptor name="returnReasons">

<property name="readableDescription">

<attribute name="resourceBundle" value="com.example.MyResourceBundle"/>

</property>

</item-descriptor>

Creating Return Reason Codes

There are six default return reason codes stored within the CsrRepository:

Page 41: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

3 3

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μdefective

didNotLike

didNotMeetExpectations

incorrectColor

incorrectItem

incorrectSize

You can add additional return reason codes by performing the following steps:

Note: Create reason codes in the development environment and push them to the production environment.

1. Using the ACC, select the Customer Service task area from the main ACC menu.

2. Select Return Reason Codes from the Customer Service submenu.

The system displays the Return Reason Codes screen. Click List to display all existing return reasons.

3. Click New Item to access the New Item dialog box.

Page 42: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

3 4

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ

4. Enter a return reason in the Description text box (for example, poorQuality).

Using the description resource key, the readable reason description will display in the Reason for Returning Item drop-down list on the Create Exchanges and Returns page.

5. You can also enter an ID (or code) for the return reason in the New ID field. If the New ID field is left blank, the system will automatically generate an ID.

6. Click OK to create the reason code.

7. Once you have created the return reason codes, you must create a resource bundle that contains your environment specific settings. For information on creating resource bundles, refer to the Using Resource Bundles for Internationalization section of the ATG Programming Guide.

Setting up Returned Item Dispositions When an agent processes the receipt of a returned item, the agent assigns an action that should occur with the return. For example, an item might be returned directly to the available stock, or sent for refurbishment. The ACC identifies these actions as returned item dispositions.

When processing the receipt of a returned item, the agent selects a returned item disposition from a list that can be customized. The disposition selected by the agent is stored with the record of the returned item in the system.

Returned item dispositions are configured by performing the following steps:

1. Add a returnItemDisposition item to the /atg/commerce/custsvc/ CSRRepository. For example, the following will add a return reason of “incorrect size”:

<add-item item-descriptor=" returnItemDisposition"

repository="/atg/commerce/custsvc/CsrRepository">

Page 43: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

3 5

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ <set-property name="description" value="incorrectSize"/>

<set-property name="updateInventory" value="false"/>

</add-item>

2. To add a new disposition code, copy all of the existing reason codes from the atg.commerce.csr.returns.ReturnDispositionMessages.

properties file to a new properties file. Then add any new disposition codes to this file. The newly created resource file should be set in the resourceBundle attribute. Continuing with the incorrect size example:

#atg.commerce.csr.returns.ReturnDispositionMessages.properties

incorrectSize=Incorrect Size

3. You can specify a new resource bundle by changing the resource bundle specified in the CSRRepository definition file:

<item-descriptor name="returnItemDisposition">

<property name="readableDescription">

<attribute name="resourceBundle" value="com.example.MyResourceBundle"/>

</property>

</item-descriptor>

Creating Returned Item Dispositions

Use the ACC to create returned item dispositions:

1. Using the ACC, select the Customer Service task area from the main menu.

2. Select Returned Item Dispositions from the Customer Service submenu.

The system displays the Returned Item Dispositions screen. Click List to display all existing returned item dispositions.

Page 44: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

3 6

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ

3. Click New Item to display the New Item dialog box. Type a description for the returned item disposition in the Description field, for example, Return to Stock.

The description for the returned item disposition is displayed in the Action Taken with Returned Item drop-down list on the Receive Returned Item page. An agent can select the returned item disposition when processing the return of an item from a customer.

4. Click the Update Inventory field and then select True or False from the drop-down list. Selecting True will increase the stock level of the item by the quantity that is returned. Selecting False will not increase the stock level.

For example, if the given returned item disposition is Return to Stock, select True to have the item returned to stock. However, if the returned item disposition is Item is Broken, selecting False, will not return the item to stock and the inventory for the item will remain unchanged.

5. Optionally, enter an ID (or code) for the returned item disposition in the New ID field. If this field is left blank the system will automatically generate an ID.

6. Click OK. The system creates the returned item disposition and displays it in the list on the Returned Item Dispositions screen.

Configuring Scheduled Orders Scheduled Orders is a feature of ATG Commerce for setting up automated recurring orders. For additional information on scheduled orders, refer to the ATG Commerce Programming Guide.

A scheduled order is comprised of a template order and a schedule. A template order contains all of the order information but is not submitted. The template can be associated with one or many schedules.

Page 45: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

3 7

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μBased on the schedule(s) associated with the template, the template object is cloned to create an order object, which is then submitted.

Agents can create scheduled order templates using the new order checkout process, or by copying an existing order. Scheduled orders can be reviewed from the customer’s profile. Agents can also display all schedules for a specific template, and submit an ad hoc order from a scheduled order.

Agents set up scheduled orders based on a daily, weekly, or monthly schedule. The schedule may be periodic, which is based on an interval of time between each scheduled run, or calendar-based, which is based on specific day to run. For periodic schedules, CSC allows an agent to choose intervals based on a number of days or weeks. For calendar-based schedules, CSC allows an agent to specify days of the week or dates of the month. A schedule also defines a start end date, which can be used to limit the period of time that the schedule is active.

Enabling and Disabling Scheduled Orders

Scheduled orders are enabled by default. To disable the scheduled orders feature, modify the CSRConfigurator component, setting usingScheduledOrders to false.

For example, to disable scheduled orders:

$class=atg.commerce.csr.util.CSRConfigurator

scope=global

usingScheduledOrders=false

The usingScheduledOrders option controls the availability of the scheduling options at the end of checkout, the scheduled orders panel on the Profile View screen and the scheduled order view screen for template orders.

Configuring Price Lists

Note: If your site uses price lists, you must configure the use of price lists as outlined in Defining the Default Price List later in this document.

The following section describes configuration that affects the pricing of scheduled orders when using price lists in combination with scheduled orders. This configuration affects the pricing of scheduled orders when:

Pricing a new scheduled order for submission

This occurs in ATG Commerce via the ScheduledOrderService and ScheduledOrderTools components when scheduled orders are automatically created and submitted based on their pre-defined schedules.

Pricing a scheduled order template for view in CSC

Scheduled order templates are priced whenever an agent selects one for viewing on the scheduled order view. This ensures that the agent always views the current day pricing when looking at a scheduled order template. The result of this pricing operation is not saved to the repository, and is only temporary for the view.

Page 46: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

3 8

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ Pricing a new scheduled order instance when the “Submit Now” feature is used in CSC

The Submit Now feature is used by an agent to manually create and submit and order from a scheduled order template.

ScheduledOrderTools

This ATG Commerce component automatically generates and submits scheduled orders based on their pre-defined schedules and contains configuration specific to the pricing of the scheduled orders they have submitted.

The property useOrderPriceListsFirst controls how ScheduledOrderTools determines the correct price lists to use. Set by default to false, the price list assignment is determined by looking at the price lists assigned to the customer profile that owns the scheduled order. Because price list assignments are an optional feature in ATG Commerce, if price list assignments are not implemented, the price list will come from the PriceListManager default configuration of defaultPriceList and defaultSalesPricelist. For additional information on ATG Commerce price lists, refer to the Using Price Lists section of the ATG Commerce Programming Guide.

If ScheduledOrderTools.isUseOrderPriceListsFirst is set to true, it will first attempt to get the price lists by extracting them from the template. Pricing information must be stored with the scheduled order template when it is created to be able to extract price lists from order templates. It may not be possible to extract both price lists from the template. If the items in the order are all on sale, the list price cannot be determined. Conversely, if no items are on sale, the sale price list cannot be determined. If the price list cannot be determined from the template, the price list assignment is obtained from the customer profile that owns the scheduled order. If price list assignments are not implemented, the price list will come from the PriceListManager default configuration of defaultPriceList and defaultSalesPricelist.

If running in a multisite environment, the getPriceListFromSite method determines the price list for the site associated with the order. The useSitePriceLists property retrieves price lists from the site using the scheduled order and defaults to true.

It is important to note that there are situations that may occur when using either of these methods:

When a site changes customer price list assignments based on store front selection, it is possible for an agent to set up a scheduled order based on the current assignments for a customer. If the customer switches store fronts, any new scheduled orders will be priced using the new assignments.

If the price list on a customer’s profile is updated, and CSC has been configured to obtain price lists from the order items first, the change will not be applied to any scheduled orders.

For information on customizing scheduled orders, refer to Customizing Scheduled Orders.

Configuring Promotions Browser Access The Promotions Browser allows an agent to view all of the promotions that are available, or may become available, to a user. Agents can view promotions that have been granted, as well as the discount amount

Page 47: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

3 9

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μapplied by each promotion. Additionally, agents can search through promotions and grant a promotion manually.

For an agent to access the Promotions Browser, they must have the cmcPromotionsP and commerce-custsvs-browse-promotions-privilege access rights. These access rights are provided in the csrOrders role.

Configuring Order Approval Agents can provide appeasements for customers by providing price overrides and manual adjustments in orders. When the order is submitted, the total of the order’s price overrides and manual adjustments can be verified against a preset appeasement limit. If the appeasement surpasses the limit, an approval is required to continue the order submission.

The Approval Management System provides the process for submitting new orders that have appeasement discounts. The system consists of processes that determine:

If an approval is required

Saves the data required to complete the action when approved

Interrupts the action

Approves or rejects the action after review

The Approval Management System generates instances of atg.commerce.csr.approvals.Approval to create an Order Approval object that is verified by the /atg/commerce/custsvc/order/approvals/ OrderApprovalHandler. The pipeline IsApprovalRequired processor calls into the Approval Handler to determine if the approval is required. The Approvals Manager uses the ApprovalType property of the Approval object to determine which ApprovalHandler to use. The ApprovalHandler determines if approval is required. If approval is required, the object will be saved in the approvals repository. The Approval Manager identifies the state of an approval, which could be Pending, Approved or Rejected.

Agent access to the approvals process is granted through the cmcApprovals access right, which is incorporated into the CSR-Manager role.

The OrderApprovalHandler handler first checks that the agent placing the order requires an approval by verifying that they have the cmcApprovals access right. Then the handler checks that an appeasement limit exists by first checking the agent’s appeasement for the currency in question and then checking the default appeasement limit for the currency in question. Finally the handler totals the price overrides and manual adjustments and compares them with the appeasement limit.

After the order has been sent through the approval process, an e-mail is generated using the e-mail address associated with the approval record and e-mail templates OrderApprovalAcceptedTemplate and OrderApprovalRejectedTemplate. The sendConfirmationEmailmethod of CSRAgentTools creates the e-mail. If there is no e-mail address associated with the approval record, e-mail will not be sent.

Page 48: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

4 0

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μEnabling the Order Approval Process

The use of appeasement limits is configured using the /atg/commerce/custsvc/util/ CSRConfigurator component usingOrderApprovals property. Setting this property to true enables the order approval process. You can disable the process by setting the property to false.

Setting Global Appeasements Limits

An agent’s profile defines their appeasement limit. If an agent does not have a specified appeasement limit available in their profile, CSC will use the global default appeasement limit for that currency. The default appeasement limit is configured in the /atg/commerce/custsvc/util/CSRConfigurator component with the defaultAppeasementLimits property. The appeasement limit is based upon the currency of the order, such as:

defaultAppeasementLimits=USD=500.00

Modifying Individual Appeasement Limits

User profiles contain an extension that allows you to set appeasement limits in multiple values. Limits can be set per currency. If no appeasement limit is set, the limit will default to the appeasement limits set in the CSRConfigurator component.

By default, the appeasement limit for individuals is set to -1 in US Dollars. This removes all appeasement verification.

To Modify an Agent’s Appeasement Limit

1. Open the BCC > Personalization > Internal Users panel. Select the agent.

2. Scroll to the General pane.

3. Click the Add button to add the appeasement limits. Enter the appeasement limit key and value.

4. Save the agent’s profile.

Providing Approval Authorization

The cmcApprovals access right controls the agent’s ability to see the Order Approvals panel. The cmcApprovals access right is listed in the CSR-Manager role. Agents that are granted the cmcApprovals

Page 49: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

4 1

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μaccess right or the CSR-Manager role will be able to review orders that need approval, as well as the ability to approve and reject orders. Appeasement limits that are applied against agents with these rights will be ignored.

Page 50: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

4 2

4 - C o n f i g u r i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ

Page 51: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

4 3

5 - S e t t i n g U p I n t e r n a l A c c e s s C o n t r o l

μ5 Setting Up Internal Access Control

When CSC is installed, it is preconfigured with various access rights, global roles, and access controllers. These elements are used to restrict access to certain pages in CSC.

Access Control Overview Access control in CSC is designed to enable you to provide different levels of access to the application depending on the job that agents are performing. When you set up access control, you are controlling who can access which part of the CSC application. There are several elements connected with access control:

Users – Each individual, or agent, is an internal user. Each internal user is given access to the CSC application by an administrator. Users are members of an organization that has associated roles, allowing them access to the CSC application.

Your customers are defined as external users. Note: Configuring customer access to different sites or shops is done by creating segments, as described in the ATG Personalization Programming Guide and or by creating scenarios and targeters, as described in the ATG Personalization Guide for Business Users.

Organizations – You can group users by making them members of an organization. For example, you could set up organizations that are based on different geographic areas, or on different business units within your company. For additional information on creating and working with Organizations, refer to the ATG Business Control Center Administration and Development Guide.

Roles – Roles determine the set of rights that are assigned to a user. Once you have created roles, you associate rights and users to the role. There are Global Roles, which work across all users and organizations, and there are organization-based roles, that usually correspond to tasks or a specific function.

Access Rights – Access rights define tasks that the user can perform, for example, creating a new customer profile. Access rights are granted to a role. The access rights for CSC are subdivided according to the following classification:

Tab Security - Security for the CSC tab accessed through the ATG Service Framework tabs

Panel Security - Security for a panel

Element Security - Security for a data field or action element within a panel

Page 52: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

4 4

5 - S e t t i n g U p I n t e r n a l A c c e s s C o n t r o l

μCSC comes preconfigured with access rights that have been designed based on specific CSR agent activities. A subset of these rights is assigned to each CSC role, and you assign the appropriate roles to agents to give them the access rights they need.

For further information on configuring access rights for agents, refer to the Appendix B: ATG Commerce Service Center Access Rights Comparison.

Default Internal User Access Control Configuration The default internal user access control configuration provided with CSC includes a number of access controllers. The access controllers are Nucleus components, which are added to your ATG installation when you install CSC. The access rights and roles are repository data that you import into your database (from supplied XML files) as a configuration step after you install CSC. For more information about installing and configuring CSC, see Installing ATG Commerce Service Center.

Global Roles

CSC comes preconfigured with four global roles for setting access rights granted to CSR agents. The CSC roles use these roles as template to simplify their configuration:

csrTicketing - Includes the access rights necessary to access the CSC application and to use the ticketing components

csrOrders - Includes the access rights needed to create and modify orders. In addition, this role includes csrTicketing as a template role, so all ticketing access rights are included. This role also includes the access rights necessary to grant promotions using the Promotions Browser. This role does not provide authorization to create new customer profiles, or the other rights specific to csrProfiles

csrProfiles - Includes the access rights needed to create and modify customer profiles, set up and review gift lists and respond to customers via e-mail. In addition, this role includes csrTicketing as a template role, so all ticketing access rights are included. This role does not include the scheduling access rights that are included in csrOrders

Page 53: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

4 5

5 - S e t t i n g U p I n t e r n a l A c c e s s C o n t r o l

μ csrManager – Includes all of the rights within both csrOrders (and thus

csrTicketing) and csrProfiles, as well as allowing price overrides

For a list of all access rights for each role, and a description of the access right, refer to Appendix B: ATG Commerce Service Center Access Rights Comparison..

When you create an agent’s profile in the Internal User Profile Repository, you assign the agent a role that corresponds to the tasks the agent is authorized to perform. For example, a typical agent may be able to create and modify orders, but only a manager can override prices and issue credits.

Access Controllers

The following table summarizes the CSC access controllers that can be configured using the security properties files:

ID Name

issueCredit commerce-custsvc-issue-credit-privilege

adjustPrice commerce-custsvc-adjust-price-privilege

Adjust Password commerce-custsvc-change-customer-password-privilege

viewProfile commerce-custsvc-view-profiles-privilege

Return commerce-custsvc-create-return-privilege

Record Return commerce-custsvc-record-merchandise—return-privilege

Change Password commerce-custsvc-change-customer-password-privilege

Create Order commerce-custsvc-create-orders-privilege

Create Profile commerce-custsvc-create-profiles-privilege

Edit Order commerce-custsvc-edit-orders-privilege

Edit Profile commerce-custsvc-edit-profiles-privilege

Issue Credit commerce-custsvc-issue-credit-privilege

browsePromotions Commerce-custsvc-browse-promotions-privilege

For more information regarding access rights and controllers, refer to the ATG Personalization Programming Guide.

Creating New Roles

If you have requirements that none of the existing roles meet, you can create new roles.

To create new roles:

Page 54: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

4 6

5 - S e t t i n g U p I n t e r n a l A c c e s s C o n t r o l

μ1. Open the BCC > Personalization page.

2. Select Internal Users.

3. Use the Show menu to select Organizations and Roles.

4. Open the Global Roles folder. Identify the location to store the role.

5. Click the Create New icon to create the new role.

6. Enter the name of the new role.

7. Select the Access Rights tab to add existing access rights, or to create new access rights by specify Direct Access Rights or incorporating the access rights from existing roles by using the Template Role field.

8. Once you are finished, click Create to save your settings.

For additional information on creating roles, refer to the ATG Business Control Center Administration and Development Guide.

Creating Agent Profiles By default, CSC is not preconfigured with any agent profiles. As part of setting up CSC, you need to:

1. Create the necessary organization, organizational roles, global roles and access rights. Refer to the ATG Business Control Center Administration and Development Guide for information on creating these objects.

2. Create a profile in the Internal User Profile Repository for each agent.

3. Assign each profile the necessary roles.

If you want to create a sample account for evaluation purposes, CSC provides a file named csrEvalUser.xml. Importing the data from this file creates an account whose username and password are both csr. This account is assigned the csrManager role, which means it has access to all areas and activities in the CSC and the ATG Ticketing UI.

Note: When working in a multisite environment, you cannot set security to limit an agent per site.

Note: This account should be added only to the database that is provided with the ATG platform for evaluation purposes. You should not include it in a production database, as this is a serious security risk.

1. Using the BCC, select Personalization > Internal Users.

2. Click the Create New icon to create a new Customer Service Agent.

3. Enter the agent name and password and click Create.

4. Click the Orgs & Roles tab, set the agent’s organization and roles and click Save

For example, to create an agent who can work with existing orders but not create new customers, you would select the csrOrders template role. This role contains all of the order access permission needed to see orders and work with orders, yet it does not contain the create customer profile permissions. Note: Both the csrOrders and

Page 55: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

4 7

5 - S e t t i n g U p I n t e r n a l A c c e s s C o n t r o l

μcsrProfiles roles include the csrTicketing role, which allows access to the application, the log in screen, etc. For a list of all of the access rights, refer to the Appendix B: ATG Commerce Service Center Access Rights Comparison.

5. Once you have saved the new profile, you can use the Access Control tab to review the rights that this user has. If you need to add additional rights, you must create a corresponding role, and then add the role to the user profile.

Creating a New Agent Role

You can cerate new roles based on the requirements of your agents. You can manually create a new role and add the Direct Access Rights individually to the role, or you can copy an existing role and modify the copy. The following steps use the example of copying an existing role and then creating an access right for a Summer-only agent who does not have the ability to modify orders or perform scheduled orders, exchanges or returns.

1. Open the ATG Dynamo Server Admin and select the /atg/userprofiling/ InternalProfileRepositoy. Select the Roles component.

2. To copy one of the roles, use the <print-item> command. For example, to copy the csrManager role:

<print-item item-descriptor="role" id="csrManager"/>

This returns the following:

<add-item item-descriptor="role" id="csrManager">

<set-property name="description"><![CDATA[Role for the CSR

manager]]></set-property>

<set-property name="accessRights"><![CDATA[cmcConfirmReturnP,

cmcOrderReturnsP,issueCredit,cmcProductViewP,cmcRelatedTicketsP,

cmcApprovals,cmcConfirmNewScheduleP,cmcCustomerCreateP,adjustPrice,

cmcOrderHistoryP,cmcPromotionsP,cmcMoreCatalogsP,cmcShoppingCartP,

cmcScheduleCreateP,cmcRefundTypeP,cmcGiftlistsViewP,cmcReturnItemsP,

cmcOrderSearchP,cmcOrderResultsP,cmcSubmittedOrdersP,

cmcCustomerResultsP,cmcConfirmOrderP,cmcAddProductByIdP,

cmcConfirmExchangeP,cmcBillingP,cmcCompleteOrderP,cmcReturnsHistoryP,

commerceTab,cmcProductCatalogSearchP,cmcShippingMethodP,cmcSchedulesP,

cmcExchangeSummaryP,cmcReturnSummaryP,cmcPurchasedItemsHistoryP,

cmcGiftlistViewPurchaseModeP,cmcRelatedOrdersP,

cmcExistingScheduledOrderP,cmcCrossSellP,cmcCustomerInfoP,

cmcTicketHistoryP,cmcCompleteExchangeP,cmcScheduleUpdateP,

cmcMorePriceListsP,cmcConfirmUpdateScheduleP,cmcReturnDetailsP,

cmcGiftlistSearchP,cmcExistingOrderP,cmcShippingAddressP,

RespondComposeMessagePanel,cmcCompleteReturnP,respondTab,

cmcScheduledOrdersP,cmcPurchaseHistoryP,cmcMultisiteSelectionPickerP,

cmcProductCatalogBrowseP,cmcCustomerSearchP,cmcCustomerP]]>

</set-property>

<!-- rdonly <set-property name="version"><![CDATA[2]]></set-property> -->

<set-property name="templateRoles"><![CDATA[csrOrders,csrProfiles]]>

</set-property>

Page 56: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

4 8

5 - S e t t i n g U p I n t e r n a l A c c e s s C o n t r o l

μ <set-property name="name"><![CDATA[CSR-Manager]]></set-property>

</add-item>

3. Copy and paste this into the Run XML Operations Tag field.

4. Rename the ID, Description and Name. For example, change all references to CSR Manager to CSR Summer. The renamed references are shown as bold in the following step.

5. Remove any access rights you do not want. For example, modify the existing CSRManager role by removing rights for approvals, exchanges, returns and any other rights that the agent should not have. For example:

<add-item item-descriptor="role" id="csrSummer">

<set-property name="description"><![CDATA[Role for the CSR

Summer Staff]]></set-property>

<set-property name="accessRights"><![CDATA[cmcConfirmReturnP,

cmcProductViewP,cmcRelatedTicketsP,cmcCustomerCreateP,

cmcOrderHistoryP,cmcPromotionsP,cmcMoreCatalogsP,cmcShoppingCartP,

cmcGiftlistsViewP,cmcOrderSearchP,cmcOrderResultsP,

cmcSubmittedOrdersP,cmcCustomerResultsP,cmcConfirmOrderP,

cmcAddProductByIdP,cmcBillingP,cmcCompleteOrderP,cmcReturnsHistoryP,

commerceTab,cmcProductCatalogSearchP,cmcShippingMethodP,

cmcPurchasedItemsHistoryP,cmcGiftlistViewPurchaseModeP,

cmcRelatedOrdersP,cmcCrossSellP,cmcCustomerInfoP,cmcTicketHistoryP,

cmcMorePriceListsP,cmcGiftlistSearchP,cmcExistingOrderP,

cmcShippingAddressP,cmcPurchaseHistoryP,cmcMultisiteSelectionPickerP,

cmcProductCatalogBrowseP,cmcCustomerSearchP,cmcCustomerP]]>

</set-property>

<!-- rdonly <set-property name="version"><![CDATA[2]]></set-property> -->

<set-property name="templateRoles"><![CDATA[csrOrders,csrProfiles]]>

</set-property>

<set-property name="name"><![CDATA[CSR-Summer]]></set-property>

</add-item>

6. Click Enter to add the new role. Once the role is added, you can modify or edit it using the BCC.

7. Log into the BCC on the Agent Server.

8. At the Personalization screen, select the new role.

9. Make any modifications to the role that you require and add it to the agents’ profile.

Default Roles

The csrOrder role contains the access rights from csrTicketing, as well as four additional roles. These roles allow the agent to browse promotions and work with Scheduled Orders. To create an agent that does not have the ability to edit orders or to perform returns, exchanges, or appeasements, the role might contain the following rights:

Page 57: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

4 9

5 - S e t t i n g U p I n t e r n a l A c c e s s C o n t r o l

μDirect Access Right Allows User to Access the…

browsePromotions Customer’s available promotions

CustomerInformationPanel Information panel on Customer Tab

CustomerOrderHistoryPanel Order History panel on Customer Tab

CustomerResultsPanel Customer Search Results panel on Customer Tab

CustomerSearchPanel Customer Search Panel on Customer Tab

CustomerTicketHistoryPanel Ticket History panel on Customer Tab

GlobalPanel General Preferences panel in Preferences

HelpfulOpenByIDPanel Open Solution panel in Helpful Panels

HelpfulRecentTicketsPanel Recent Tickets Panel in Helpful Panels

HelpfulTicketHistoryPanel Case History panel in Helpful Panels

HelpfulTicketSummary Case Summary panel in Helpful Panels

TasksAllTicketPanel All Tickets panel in Tasks Tab

TasksMyTicketPanel My Tickets panel in Tasks Tab

TicketActivityPanel Ticket History panel in Tickets Tab

TicketsCustomerInformationPanel Customer Information panel in Tickets Tab

TicketsResultsPanel Ticket Search Results panel in Tickets Tab

TicketsSearchPanel Ticket Search panel in Tickets Tab

TicketsSummaryPanel Ticket Summary panel in Tickets Tab

cmcAddProductByIdP Add Product by ID panel

cmcBillingP Billing panel

cmcCompleteExchangeP Complete Exchange panel

cmcCompleteOrderP Complete Order panel

cmcConfirmNewScheduleP Confirm New Schedule panel

cmcConfirmOrderP Confirm Order panel

cmcConfirmUpdateScheduleP Confirm Updated Schedule panel

cmcCrossSellP Cross Sell panel

cmcCustomerCraeteP Customer Create panel

cmcCustomerInfoP Customer Information panel

Page 58: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

5 0

5 - S e t t i n g U p I n t e r n a l A c c e s s C o n t r o l

μDirect Access Right Allows User to Access the…

cmcCustomerP Customer panel

cmcCustomerResultsP Customer Results panel

cmcCustomerSearchP Customer Search panel

cmcExistingOrderP Exiting Order panel

cmcExistingScheduledOrderP Existing Schedule Order panel

cmcMoreCatalogsP More Catalogs panel

cmcMorePriceListsP More Price Lists panel

cmcMultisiteSelectionPickerP Multisite Site picker

cmcOrderHistoryP Order History panel

cmcOrderReulstsP Order Results panel

cmcOrderSearchP Order Search panel

cmcProductCatalogBrowserP Catalog Browser panel

cmcProductCatalogSearchP Search Catalog panel

cmcProductViewP Product View panel

cmcPromotionsP Promotions panel

cmcPurchaseHistoryP Purchase History panel

cmcPurchaseItemsHisotyrP Purchased Items History panel

cmcRelatedOrdersP Related Orders panel

cmcRelatedTicketsP Related Tickets panel

cmcScheduleCreateP Create Schedule Order panel

cmcScheduledOrdersP Scheduled Orders panel

cmcScheduleUpdateP Update Scheduled Orders panel

cmcScheduelsP Scheduled panel

cmcShippingAddressP Shipping Address Panel

cmcShippingMethodP Shipping Method panel

cmcShoppingCartP Shopping Cart panel

cmcSubmittedOrdersP Submitted Orders panel

cmcTicketHistoryP Ticket History panel

Page 59: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

5 1

5 - S e t t i n g U p I n t e r n a l A c c e s s C o n t r o l

μDirect Access Right Allows User to Access the…

commerceDesignTab Commerce Design Tab

commerceTab Commerce Tab

customersTab Customers Tab

tasksTab Tasks Tab

ticketsTab Tickets Tab

workspaceLogin Workspace Login screen

Customizing the Default Landing Page

You can create a default landing page for the agents by configuring atg/svc/option/ OptionRepository. The target value is the “defaultValue” property of the “SiteOption” item-descriptor with the id="AgentUserDefaultHomeTab”.

You can change this value, for example, with <set-property name="defaultValue" value="customersTab"/> to set the default landing page to the customers tab.

Page 60: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

5 2

5 - S e t t i n g U p I n t e r n a l A c c e s s C o n t r o l

μ

Page 61: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

5 3

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μ6 Configuring ATG Click to Call

ATG Click to Call is an optional application that, when integrated with CSC, initiates and manages telephone communication between agents and customers.

ATG Click to Call Integration Overview ATG Click to Call integration with CSC enables customers to initiate phone calls with agents. Once configured, ATG Click to Call uses a page instrumentation engine to add JavaScript into your customer-facing web pages. The JavaScript presents an icon and/or link to the customer who uses this link to enter a phone number that the ATG Optimization Console (WebCare) system or an optional CTI system uses to return their call. CSC presents the agent with the customer’s order information and profile, allowing the agent to assist the customer with their order.

Initiating a Call

When the customer initiates a call, their customer and order information is written to the ATG database. A unique call identification number as well as the customer’s phone number are sent to ATG Optimization Console. This information is transmitted using a token that creates a unique identifier that correlates the call with the customer’s call data. The token is passed to the ATG Click to Call system and is used later to obtain the data for the call.

Once ATG Click to Call has obtained the token, it establishes a call with both the telephony system (CTI) and the customer. The telephony system initiates the call with the agent.

Once the agent or the CTI system has entered the phone number into a CSC Start Call screen, CSC obtains the information about the call using a token and presents the agent with the customer’s order information. The agent then assists the customer as with any other CSC call.

Using a CTI System

ATG Click to Call and CSC can be configured to work with or without a CTI system. With a CTI system, once the unique call information has been obtained, the CTI system initiates a browser screen. The browser invokes a URL that passes the caller ID as a query parameter. CSC looks up the call token from ATG Optimization Console using the caller ID, looks up the customer information using the call token, and configures the agent’s environment with the customer and order information.

Page 62: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

5 4

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μIf the CTI system supports multisite, and you are running in a multisite environment, the siteId is set by the CTI system and the site based on that siteId is loaded into CSC. The siteId is stored in the repository and added to the ATG Click to Connect repository.

CSC also provides a mechanism for your CTI system to authenticate an agent. The CTI system can be configured to pass the agent username to CSC for authentication. The authentication process requires that the system must pass a salted hash of the username for security. If you do not wish to configure authentication, agents can log in to CSC manually using the CSC log in screen.

You can integrate your CTI system using WinCare to obtain the caller ID information from a screen scrape. To use WinCare, you need to install and configure the WinCare system on each agent’s desktop.

Specifying Links and Pop Ups

The ATG Optimization Console system, which is managed and maintained by ATG, creates and configures links that are presented to the customer. These popup icons and call information screens can be customized using logos, graphics and other UI components that are stored locally on your servers.

Links and pop ups can be static or based upon rules that you create using the Webcare Rule Builder tool or the ATG rule process. For example, you can create a rule that presents a link when a customer is from a specific country, or that pops up an ATG Click to Call icon if a customer’s shopping cart has reached a specific amount.

Automatic Initialization of the Agent’s Working Environment

Part of the process of receiving a call in CSC is to initialize the agent’s working environment with the correct set of object.

By default, the following values are saved when a call is initiated on the store front and then used to pre-populate the agent’s working environment with the correct set of the objects:

Profile ID – used to load the active customer

Order ID – used to load the active order

List Pricelist ID – used to load the active list price list

Sales Pricelist ID – used to load the active sale price list

Catalog ID – used to load the active catalog

Site ID – used to load the active site if using multisite

ATG Click to Call Requirements There is no license requirement for ATG Click to Call. However, you must have an active ATG Click to Call account. Contact your ATG account manager for further information.

The following modules are required to run ATG Click to Call and should be installed on the agent-facing server:

Page 63: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

5 5

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μ DCS-CSR.ClickToConnect

Service.ClickToConnect

The following modules should be installed on the customer-facing server:

DCS.ClickToConnect

IBM WebSphere Requirements

If you are using ATG Click to Call with an IBM WebSphere Application Server over SSL, you must ensure that the correct signing certificates are provided to WAS from ATG Click to Call. To do this, you must set up the remote host and SSL port information from which WAS will retrieve the signer certificates. Refer to the IBM WebSphere Application Server documentation for information on obtaining certificate identification.

Oracle WebLogic Requirements

If you are using ATG Click to Call with Oracle’s WebLogic Application Server over SSL, you must ensure that the correct signing certificates are provided to allow WebLogic to recognize the ATG Click to Call certificate. You must set up the Oracle Certificate Signing Request to obtain a certificate for the WebLogic Server. Refer to the Oracle WebLogic documentation for information on obtaining certificate identification.

Configuring the ATG Click to Call Account Before you can set up ATG Click to Call on either your store-facing pages or CSC, you must provide CSC with your account information.

Note: Before completing these steps, you must have a valid and active account with ATG.

1. Configure CSC to recognize your account information by editing the localconfig/atg/clicktoconnect/Configuration.properties file.

2. Add your account ID, user name and password to the file.

# Your ClickToConnect account ID

accountId=Click to Connect Account ID

# The ClickToConnect username

username=Click to Connect User Name

# The ClickToConnect password

password=Click to Connect Password

3. Save the file when you’ve finished.

Page 64: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

5 6

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μAdding an Agent to ATG Commerce Service Center

Agents that use WinCare must be added to CSC. The login name for agents must be the same on both ATG Click to Call and CSC. Use the BCC to add WinCare agents to CSC. Refer to the ATG Business Control Center User’s Guide for additional information in creating users.

Adding Agent Phone Numbers

When creating pop ups and links using the ATG Optimization Console Link Builder tool, you will need to provide the phone number of the call center, and if necessary, extension information. Refer to the ATG Link Builder Tool documentation and the Creating an ATG Click to Call Link section for additional information.

Configuring Customer-Facing Store Web Pages To run ATG Click to Call with CSC, you must add automatic page instrumentation filters. To create static links, you must create the button or link tag that will access ATG Click to Call on your customer-facing store web pages.

Configuring Automatic Page Instrumentation

Automatic page instrumentation allows you to automatically tag each of your customer-facing store web pages with the ATG JavaScript library references, as well as to output other parameters that are used for data persistence purposes without changing any code for your site. When configuring automatic page instrumentation, you set the page instrumentation filters that are used to add the ATG Click to Call code to your pages.

The page instrumentation engine writes JavaScript variables to the web page. These variables are used to identify the customer’s environment and to store information that allows you to create customized rules that display links and pop ups based on specific criteria. For example:

var _atg_call_token=100001-1234;

var _atg_locale=en_US;

Adding Automatic Page Instrumentation

To add automatic page instrumentation, add the following to your customer-facing store’s web.xml file:

<filter>

<filter-name>ADCDataInsertFilter</filter-name>

<filter-class>atg.adc.filter.ADCDataInsertFilter</filter-class>

<init-param>

<param-name>loggingDebug</param-name>

<param-value>false</param-value>

</init-param>

<init-param>

Page 65: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

5 7

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μ <param-name>loggingWarning</param-name>

<param-value>true</param-value>

</init-param>

<init-param>

<param-name>loggingError</param-name>

<param-value>true</param-value>

</init-param>

<init-param>

<param-name>loggingInfo</param-name>

<param-value>true</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>ADCDataInsertFilter</filter-name>

<url-pattern>*.jsp</url-pattern>

</filter-mapping>

Configuring a Static Link

To configure a static link, or a link that remains within a navigational pane or frame within your web pages, you must add a <div> tag in the page HTML where the link should appear. This section holds information that you create in ATG Optimization Console. The following example inserts a <div> that has a specific border style.

<div id="atg_ClickToCall_Link" style="border: 1px solid rgb(0, 0,

0);"></div>

Once you have created a <div>, the <div> tag IDs is used by the link definitions that you define in the ATG Optimization Console. Refer to the Creating an ATG Click to Call Link section for additional information on creating links.

Disabling the Orphaned Session Service

The OrphanedSessionService removes orphaned session items from the ClickToConnect session repository. By default, the service is configured with the DCS.ClickToConnect module set to enabled=true and the Service.ClickToConnect configuration set to enabled=false. This service should be started on any instance where you have installed the DCS.ClickToConnect module and disabled on any instance configured with the Service.ClickToConnect module.

You can disable the service by setting the /atg/clicktoconnect/OrphanedSessionService. properties file enabled property to false in your /localconfig directory.

Page 66: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

5 8

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μCreating Store-Facing Links

You integrate the CSC and ATG Click to Call applications using rules. Using the ATG Optimization Console Rule Builder tool, you must create the following rules. For additional information on creating rules, refer to the ATG Optimization Console documentation.

Using the clickToConnectSave() Function

The clickToConnectSave() function is a JavaScript call that is located on each page of your customer-facing site. The function persists both order and token information in ATG. The JavaScriptCallBack rule looks for the clickToConnectSave function on your page, and controls when to run it. The clickToConnectSave function is created automatically when you run page instrumentation and does not need to be added manually to every page. However, the clickToConnectSave function can also be configured using the ATG Optimization Console Rule Builder tool.

Creating the JavaScriptCallback Rule

When you create the JavaScriptCallback rule, modify the following fields. Other fields can remain at their default. For additional information on the fields, refer to the ATG Optimization Console Rule embedded assistance.

1. Log into the ATG Optimization Console website.

Note: In order to log into the ATG Optimization Console website, you must have an existing ATG Optimization Console account.

2. From the Setup menu, select Rule Builder.

3. Click the Add a New Rule link.

4. Use the Name field to create the name of the rule. Enter JavaScriptCallback.

5. The Applies To field should be set to Customers Only using the pull down menu.

6. Enable the rule by clicking the Yes radio button in the Enabled field.

7. Set the Rule Operating Hours to All Hours to ensure that the rule is always run.

8. Set the Link to Show field to No Link, as this rule will not display a link.

9. Using the URL Match field, enter a regular expression to indicate to which URL the rule applies. To ensure that the rule applies to all URLs on your site, select the use check box and enter .* in the text field.

10. The JavaScriptCallback rule is a RunJavaScript Rule Type. This rule runs the specified JavaScript. Select RunJavaScript from the drop down menu.

11. Click the Show Advanced Feature button to display the arguments that are required when using the RunJavaScript rule type.

12. In the Argument 1 field, enter the name of the function to be called with its associated parameters. Enter clicktToConnectSave()

13. Ensure that Argument 2 field is set to use the default, which is 0. This argument will run the function whenever the link is clicked.

14. Save the rule.

Page 67: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

5 9

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μFor the JavaScriptCallback rule to run, you must enable CoBrowsing:

1. Log into the ATG Optimization Console website.

Note: In order to log into the ATG Optimization Console website, you must have an existing ATG Optimization Console account.

2. From the Setup menu, select Rule Builder.

3. Click the Add a New Rule link.

4. Use the Name field to create the name of the rule. Enter CoBrowse.

5. The Applies To field should be set to Customers Only using the pull down menu.

6. Enable the rule by clicking the Yes radio button in the Enabled field.

7. Set the Rule Operating Hours to All Hours to ensure that the rule is always run.

8. Set the Link to Show field to No Link, as this rule will not display a link.

9. Using the URL Match field, enter a regular expression to indicate to which URL the rule applies. To ensure that the rule applies to all URLs on your site, select the use check box and enter .* in the text field.

10. The CoBrowse rule is a CoBrowse Rule Type. Select CoBrowse from the drop down menu.

11. Click the Show Advanced Feature button to display the arguments that are required when using the CoBrowse rule type.

12. In the Argument 1 field, enter the name of the function to be called with its associated parameters. Enter 1

13. Ensure that Argument 2 field is set to use the default, which is 0. This argument will run the function whenever the link is clicked.

14. Save the rule.

Once you have created these two rules, you need to set up a rule that passes the call token through ATG Click to Call’s data passing system:

1. Log into the ATG Optimization Console website.

Note: In order to log into the ATG Optimization Console website, you must have an existing ATG Optimization Console account.

2. From the Setup menu, select Rule Builder.

3. Click the Add a New Rule link.

4. Use the Name field to create the name of the rule. Enter ATGClicktoCallToken.

5. The Applies To field should be set to Customers Only using the pull down menu.

6. Enable the rule by clicking the Yes radio button in the Enabled field.

7. Set the Rule Operating Hours to All Hours to ensure that the rule is always run.

8. Set the Link to Show field to No Link, as this rule will not display a link.

Page 68: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

6 0

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μ9. Using the URL Match field, enter a regular expression to indicate to which URL the rule

applies. To ensure that the rule applies to all URLs on your site, select the use check box and enter .* in the text field.

10. This rule is a VarFieldMatch Rule Type. Select VarFieldMatch from the drop down menu.

11. Click the Show Advanced Feature button to display the arguments that are required when using the VarFieldMatch rule type.

12. In the Argument 1 field, enter the name of the function to be called with its associated parameters. Enter _atg_call_token

13. Set the Argument 2 field to \s* . This argument will run the function whenever the link is clicked.

14. Set the Argument 4 field to 1.

15. Save the rule.

ATGCallToken

When the customer clicks the ATG Click to Call link or button, a unique token ID is generated and stored using the clickToConnectSave function. This token, which is stored in the _atg_call_token variable in the ATGCallToken rule, is used to identify the information that the customer was viewing. The ATGCallToken rule then passes the token to the ATG Optimization Console.

Once the call is initiated, CSC requests the call token from the ATG Optimization Console using the caller ID and looks up the customer information in the atg/clicktoconnect/Click to CallRepository. The end user information that was stored with the tolkenID is then presented to the agent. The token is created by the page instrumentation filter, and is then passed to the ATG Optimization Console using the ATGCallToken rule.

Creating the ATGCallTokenRule

When you create the ATGCallToken rule, modify the following fields. Other fields can remain at their default. For additional information on the fields, refer to the ATG Optimization Console Rule embedded assistance.

1. Log into the ATG Optimization Console website. From the Setup menu, select Rule Builder.

2. Click the Add a New Rule link. Use the Name field to create the name of the rule. Enter ATGCallToken.

3. The Applies To field should be set to Both Customers and Agents using the pull down menu.

4. Enable the rule by clicking the Yes radio button in the Enabled field.

5. Set the Rule Operating Hours to All Hours to ensure that the rule is always run.

6. Set the Link to Show field to No Link, as this rule will not display a link.

Page 69: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

6 1

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μ7. Using the URL Match field, enter a regular expression to indicate to which URL the rule

applies. To ensure that the rule applies to all URLs on your site, select the use check box and enter .* in the text field.

8. The ATGCallToken rule is a VarFieldMatch Rule Type. Select VarFieldMatch from the drop down menu.

The VarFieldMatch rule checks every two seconds to verify that the field name you specify in the Argument 1 field matches the regular expression entered in the Argument 2 field and is stored in the variable identified in Argument 3.

9. Click the Show Advanced Feature button to display the arguments that are required when using the VarFieldMatch rule type. In the Argument 1 field, enter the name of the JavaScript variable to verify. Enter the JavaScript variable _atg_call_token.

10. The Argument 2 field sets the expected value returned by the JavaScript variable. Use the \s* regular-expression to indicate that the _atg_call_token is always valid.

11. The Argument 4 field sets the variable name in which the value is stored. Set the variable field to 1, indicating that the value returned in Argument 2 is stored in var1.

12. Save the rule.

Creating Store-Facing Static ATG Click to Call Links Using the ATG Optimization Console application, you create customer-facing ATG Click to Call links, which are used by customers to initiate a call. ATG Click to Call links can be generic, which present the same links to all of your customers, or they can be customized. Customized links allow you to configure not only the links, but the presentation and the specific audience for each link.

Creating an ATG Click to Call Link

ATG Click to Call links live within the HTML of your customer-facing web page. For example, you can place a static link in one of your existing navigational menus using a <div> tag.

When creating a static ATG Click to Call link, you create a Timeout Link that has a time out length of zero (0), indicating that the link is displayed whenever the page is rendered. Then you identify the link icon and the location of the link on your commerce page by specifying the ID of a <div> on the page.

The majority of the Link Builder fields will use the default values. For additional information on the ATG Link Builder tool, refer to the ATG Optimization Console documentation or the field screen assistance. Modify the fields as outlined below:

1. Create a <div> tag, as outlined above in the Configuring a Static Link section. Record the ID of the <div> as it will be used when creating the link.

2. Open the ATG Optimization Console. Use the Set Up menu and select the Link Builder tool. From the Add New options, select timeout to access the Link Customization screen.

You will use this screen to configure and customize the links that are presented to your customers.

Page 70: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

6 2

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μ3. Enter a Link Name.

4. Use the Link Type drop down menu to select Timeout.

The Timeout link type is used to display links that appear after a specific amount of time. Use the Timeout link type to create a generic static link.

5. Enter the Language in which the link will be presented.

6. Enter the Phone Number of your call center or agent by selecting the country and entering the country code and phone number.

7. Enter a UI Title. The title you provide will be displayed as the title bar in the browser when the customer selects the link.

8. Select the Link Icon. You can select an existing link that is stored on the site, or you can add a custom URL that displays a custom icon. If you select the custom URL, enter the full DNS name of the link, the port number and the path for the location of the icon. For example:

http: //commerceserver1: 8080/images/atg/clicktocallicon.gif

9. Use the Timeout in Seconds field to enter the amount of time that a customer is on your web page before the link is made available. To configure a static link that is always available, the Timeout value should be set to 0.

10. Set the Positioning fields to 0 for the left and the top of the page. This allows the <div> you created to set the location of the link.

11. In the Relative to Layer ID field, enter the ID of the <div> you created earlier. For example, Atg_ClickToCall_Link.

12. Click Add Link to save the link. The new link is listed in the Link Summary table.

This sets a continual and static link in the <div> you created on your commerce web page.

Creating an ATG Click to Call Pop Up

ATG Click to Call pop ups are links that live within the HTML of your customer-facing web page and appear when specific criteria have been met. For example, you can create a popup that becomes available if your customer has remained on a page for more than ten seconds.

When creating a timed ATG Click to Call pop up, you create a Timeout Link that has a time out length indicating the amount of time that the user remains on the page, for example ten (10) seconds. Then you identify the link icon and the location of the pop up on your commerce page.

The majority of the Link Builder fields will use the default values. For additional information on the ATG Link Builder tool, refer to the ATG documentation or the field screen assistance. Modify the fields as outlined below:

1. Open the ATG Optimization Console. Use the Set Up menu and select the Link Builder tool. From the Add New options, select timeout to access the Link Customization screen.

You will use this screen to configure and customize the links that are presented to your customers.

Page 71: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

6 3

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μ2. Enter a Link Name.

3. Use the Link Type drop down menu to select Timeout.

The Timeout link type is used to display links that appear after a specific amount of time.

4. Enter the Language in which the link will be presented.

5. Enter the Phone Number of your call center or agent by selecting the country and entering the country code and phone number.

6. Enter a UI Title. The title you provide will be displayed as the title bar in the browser when the customer selects the link.

7. Select the Link Icon. You can select an existing link that is stored on the site, or you can add a custom URL that displays a custom icon. If you select the custom URL, enter the full DNS name of the link, the port number and the path for the location of the icon. For example:

http: //commerceserver1: 8080/images/atg/clicktocallpopup.gif

8. Use the Timeout in Seconds field to enter the amount of time that a customer is on your web page before the link is made available. For example enter a time out value of 10.

9. Set the Positioning fields. Identify where on your webpage you want the pop up to appear and enter the location in pixels.

For example, you can set the pop up to appear 650 pixels from the left of the page and 350 from the top of the page.

10. Click Add Link to save the link. The new link is listed in the Link Summary table.

This sets a pop up link that appears if the customer has remained on your commerce web page for at least 10 seconds.

Creating a Customized Link or Pop Up

Links and pop ups can be configured to meet specific criteria using the ATG Optimization Console Rule Builder tool. Rules allow you to set up and configure conditions based upon specific customer behavior.

Example: Creating a Link based on Locale

For example, you can display a French language static link to a customer in France, while displaying an English language pop up link to a customer in the U.S.

The page instrumentation that you configured in the Adding Automatic Page Instrumentation section adds JavaScript variables to your web page. One of the variables added is the _atg_locale variable. This variable identifies the customer’s locale. You create a rule that uses a VarFieldMatch to see if the JavaScript variable named by Argument 1 is equal to the value in Argument 2. If so, the rule will display its associated link.

Using the French language example, to create a button that only renders for those customers who speak French, the page instrumentation would write var _atg_locale=fr_FR into the page when French is

Page 72: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

6 4

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μchosen, a VarFieldMatch rule could be used to render the link by specifying fr_FR as the value for Argument 2. For an English speaker who lives in the United States, the VarFieldMatch rule could be used to render the link by specifying en_US as the value for Argument 2.

To create an example customized static link that resides in a specific location on your customer-facing website:

1. Ensure that you have created a <div> tag in the HTML for your web server pages as outlined in Configuring a Static Link.

2. Create a link, following the steps outlined above in Creating a Link. To create a French link, select French from the Language drop down menu. For example, create a link named StaticFrenchLink that identifies the link as a static link that displays in French.

3. Save the link.

4. Open the ATG Optimization Console Rule Builder tool and click Add New Rule to create a new rule.

5. Name the rule. Use a name that identifies the rules function.

6. Ensure that the rule applies to both Customer and Agents, and that the rule is set to Enabled.

7. Enter the Link to Show. This is the link that you created in Step 3. For example, enter StaticFrenchLink.

8. Use the Rule Type pull down menu to select the VarFieldMatch rule type. This rule type will check to see if the field identified in the Argument 1 field matches the regular expression identified in the Argument 2 field.

9. In the Argument 1 field, enter _atg_locale. This retrieves the information regarding the customer’s location.

10. Identify the language required by entering fr_FR in the Argument 2 field. This indicates that the language is French, as spoken by a customer living in France.

11. The optional Argument 4 is used to pass the value of the matching JavaScript variable. The value can later be retrieved from the ATG web service or it can be used in the ATG Optimization Console reports.

12. Save the rule.

To create an example customized English language pop up link:

1. Create a link, following the steps outlined above in Creating a Generic Pop Up. To create an English pop up, select English from the Language drop down menu. For example, create a link named EnglishPopUp that identifies the link as a pop up link that displays in English.

2. Save the link.

3. Open the ATG Optimization Console Rule Builder tool and click Add New Rule to create a new rule.

4. Name the rule. Use a name that identifies the rules function.

Page 73: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

6 5

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μ5. Ensure that the rule applies to both Customer and Agents, and that the rule is Enabled.

6. Enter the Link to Show. This is the link that you created in Step 3. For example, enter EnglishPopUp.

7. Use the Rule Type pull down menu to select the VarFieldMatch rule type. This rule type will check to see if the field identified in the Argument 1 field matches the regular expression identified in the Argument 2 field.

8. In the Argument 1 field, enter _atg_locale. This retrieves the information regarding the customer’s location.

9. Identify the language required by entering en_US in the Argument 2 field. This indicates that the language is English, as spoken by a customer living in the United States.

10. The optional Argument 4 is used to pass the value of the matching JavaScript variable. The value can later be retrieved from the ATG web service or it can be used in the ATG Optimization Console reports.

11. Save the rule.

Example: Creating a Link based on Segments and Scenarios

You can create links or pop ups that target a specific audience, such as people who are most likely to adopt early technology. You can create variables that display specific information to targeted audiences. By using the ATG Scenario model, you create the scenario that identifies your target audience, and then modify your customer-facing web page to include the <div> tags.

1. Create a <div> tag, as outlined above in the Configuring a Static Link section. Record the name of the <div> tag, as it will be used when creating the link.

2. From the ACC > Targeting > Project Name > Profile and Content Groups, create a user profile. For example, create a user profile that identifies people between the ages of 15 and 30 that purchase early technology. Name the profile something that is descriptive, such as EarlyAdopters.

3. Open Pages and Components > J2EE Pages and open your storefront file.

4. Open the clickToCallLink.jsp file. For example, the /navigation/gadgets/ clickToCallLink.jsp file. The store front page may resemble the following:

<dsp: page>

<!- - - if the click to call feature is disabled, this entire div can be

safely bypassed --- >

<c: choose>

<c: when test="$(not empty Click to CallConfig)">

<fmt: message var="itemLabel"

key="navigation_clickToConnect.PremiumTitle"/>

<fmt: message var="itemTitle" key="common.linkTitle">

<fmt: param value="$(itemLabel)"/>

</fmt: message>

<H3>$(itemLabel></H3>

<fmt: message var="itemLabel" key="navigation_clickToConnect.QuestionsTitle"/>

<fmt: message var="itemTitle" key="common.linkTitle">

Page 74: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

6 6

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μ <fmt: param value="$(itemLabel)"/>

</fmt: message>

<H3>$(itemLabel></H3>

</c: when>

</c: choose>

</dsp: page>

5. Use the Insert Servlet Bean icon to select the Switch droplet. Enter the name of the user profile you created in step 1. For example, bean: /atg/userprofiling/ Profile.EarlyAdopters.

6. Enter the HTML that is displayed if the value is true. This value is the <div> tag that you created for people who are members of the EarlyAdopters profile. For example:

<div id="atg_mystore_ClickToCallEarlyAdopters_link">

7. Enter the HTML that is displayed if the value is false. This value is the other <div> tag that you created for people who are not members of the EarlyAdopters profile. For example:

<div id="atg_mystore_ClickToCall_link">

8. The code now resembles:

<dsp: page>

<!-- if the click to call feature is disabled, this entire div can be

safely bypassed -->

<dsp: importbean var="Click to CallConfig" bean="/atg/clicktoconnect/

Configuration"/>

<c: choose>

<c: when test="${not empty Click to CallConfig}">

<dsp: droplet name="/atg/dynamo/droplet/Switch">

<dsp: param bean="/atg/userprofiling/Profile.EarlyAdopters"

name="value"/>

<dsp: oparam name="true">

<div id="atg_mystore_ClickToCallEarlyAdopters_link">

</dsp: oparam>

<dsp: oparam name="false">

<div id="atg_mystore_ClickToCall_link">

</dsp: oparam>

</dsp: droplet>

</div>

<p style="height: 30px"/>

</c: when>

</c: choose>

</dsp: page>

Once you have modified the .jsp file, you must create the links and rules that will display the information.

1. Create a link, following the steps outlined above in Creating a Generic Link. Ensure that the Relative to Layer ID names the <div> you created earlier, for example:

Page 75: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

6 7

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μatg_mystore_ClickToCallEarlyAdopters_link. Once you have created the link, save the link.

2. Open the ATG Optimization Console Rule Builder tool and click Add New Rule to create a new rule.

3. Name the rule. Use a name that identifies the rules function.

4. Ensure that the rule applies to both Customer and Agents, and that the rule is set to Enabled.

5. Enter the Link to Show. This is the link that you created in Step 9. For example, enter StaticEarlyAdoptersLink.

6. Use the Rule Type pull down menu to select the VarFieldMatch rule type. This rule type will check to see if the field identified in the Argument 1 field matches the regular expression identified in the Argument 2 field.

7. In the Argument 1 field, enter profile.profile name. This retrieves the information regarding the customer’s profile. For example profile.earlyAdopters searches for the Early Adopter profile.

8. Identify whether the profile should be activated or not by entering true in the Argument 2 field. This indicates that customer is a member of the profile.

9. The optional Argument 4 is used to pass the value of the matching JavaScript variable. The value can later be retrieved from the ATG web service or it can be used in the ATG Optimization Console reports.

10. Save the rule.

For information on creating segments, refer to the ATG Business Control Center User’s Guide and the ATG Personalization Guide for Business Users.

For additional information on creating Rules in the ATG Optimization Console, refer to the ATG Optimization Console documentation or the ATG Optimization Console screen field assistance.

Using WinCare WinCare is the agent-facing console that manages agent and customer interactions. WinCare can be used with an existing CTI infrastructure to allow your agents to interact with customers.

Integrating with WinCare

To integrate WinCare, create an WinCare tab using the ATG Optimization Console. A new browser window that contains the predefined URL is rendered using client-side integration with WinCare.

To create the browser window that links your WinCare system to both the CSC and ATG Click to Call systems, you must create an WinCare tab in the ATG Optimization Console. Login to the ATG Optimization Console, and follow the steps outlined below.

1. Select the Account Admin -> WinCare Tabs menu.

Page 76: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

6 8

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μ2. Click Add a New Item. The Item editor will load. Enter information for the following

fields:

Label Name - This will name the WinCare tab

URL – The URL that will be passed to WinCare. In the following example, replace the CSC Server name and the CSC Server port with your specific server and port information:

https: //as00.support.com/webcare/system/

atgconnect.php?url=newwin: //CSC-Server: port/agent/main.jsp

Pushable – performs a page push from the window

Service - enter call to activate ATG Click to Call

Shared – indicates if the browser window will be reused

After Connect - spawns the window after the session connects. Set the After Connect field to 1.

Addressbar – identifies if a tab should be displayed in the address bar

Favorites – indicates if a favorites bar should be displayed

Include Params field – indicates that any parameters should be passed along with the URL. Set the Include Params field to 1

3. A new browser window will be created using a predefined URL.

The URL contains the atgConnect.php script, which generates the URL required to log an agent into CSC and initiate an ATG Click to Call session.

Integrating without WinCare

When you integrate ATG Click to Call and CSC with an external CTI system, you need to provide the CTI system with a URL that accesses the ATG Click to Call information. Before you can configure the ATG portion of the configuration, ensure that your external CTI system can produce a hash that CSC will be able to reproduce. Then, generate a script, for example,

/**

*

* Generates the URL that is used to spawn a CSC instance passing the required

* parameters for a Click To Connect Session

*

* @param pURL

* The initial part of the CSC URL e.g. http: //foo: 8080/agent/main

* @param pUsername

* The username of the CSC user

* @param pCallerID

* The caller id of the customer

* @return The fully qualified URL

*

*/

public URL generateURL(String pURL, String pUsername, String pCallerID) throws \

Page 77: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

6 9

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μMalformedURLException, UnsupportedEncodingException {

// hashKey is the secret key used to salt the hash, this secret key is also

//configured within CSC and should be identical to what is used here.

final String hashKey = "mySecretKey";

// hashingAlgorithim is the algorithm used to create the hash. The algorithm

//should be the same as is configured within CSC in order for CSC to recreate the

//hash.

final String hashingAlgoritim = "SHA1";

// hashText is the information that the hash is created from, the Agent username,

//customer telephone number and the hashKey.

String hashText = pUsername + pCallerID + hashKey;

String clickToCallURLString = "";

String hashString = "";

/*

* Create hash of the username, callerID and the hashKey. The Hashing algorithm

* used is SHA1, matching the hashing algorithm that CSC is configured to use.

*/

try {

MessageDigest m = MessageDigest.getInstance(hashingAlgoritim);

m.update(hashText.getBytes(), 0, hashText.length());

hashString = new BigInteger(1, m.digest()).toString(16).trim();

} catch (NoSuchAlgorithmException nsae) {

}

/*

* The URL is created from the initial CSC URL e.g http: //foo: 8080/agent, the

* clickToCallInit parameter, the Agent username, the hash value, and the

* telephone number of the shopper who initiated the click to call session

*/

clickToCallURLString += pURL + "?clickToCallInit=true&username="

+ URLEncoder.encode(pUsername, "UTF-8") + "&hash="

+ URLEncoder.encode(hashString, "UTF-8") + "&UserTelephoneNumber="

+ URLEncoder.encode(pCallerID, "UTF-8");

URL clickToCallURL = new URL(clickToCallURLString);

return clickToCallURL;

}

Once you have verified that your CTI system can produce the necessary hash and URL, create a script that integrates your system. The script should:

1. Get the username, user telephone number, secret key, and CSC URL variables.

2. Set the checkFTCallID property of the /atg/svc/clicktoconnect/C2CTools component to false on the CSC server.

Page 78: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

7 0

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μ3. Create a hash of the username, user telephone number, and the secret key.

4. Spawn a web browser with a URL made up of the following:

CSC URL (http: //cscserver: port/agent/main.jsp)

The clickToCallInit=true variable

The agent user name

The hash made earlier

The customer telephone number

Manual CTI Integration

If you are using a CTI system that only displays a telephone number on a physical device, the agent must perform the following steps:

1. Log into CSC.

2. Enter a telephone number into the call field of the CSC user interface.

3. Press the Start Call button to perform a lookup. If a valid number has been entered, they must initiate an ATG Click to Call session.

Note: Manual entry of the phone number requires the exact customer telephone number, including the area code as CSC checks the phone number against the number that stored for that customer on the server. For international dialing codes, the 00 or the + is not required.

Configuring ATG Commerce Service Center Authentication with WinCare

CSC authenticates the data request and the agent user ID before transferring any data. CSC authentication uses values that are calculated based on values in the request and a secret key value. You specify the secret key value when working with ATG to set up your WinCare account.

Enabling ATG Commerce Service Center Auto-Authentication 1. You can configure CSC to automatically authenticate an agent setting the

atg/dynamo/servlet/daf/pipeline/AuthenticaionServlet.properties file property enabled parameter to true.

2. The AuthenticationServlet.properties file also contains the following:

# Login parameter name

loginParamName=username

# caller ID parameter name, this is the user telephone number

callerIDParamName=UserTelphoneNumber

# Unique caller ID, this is not the telephone number

Page 79: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

7 1

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μFTCallIDParamName=called

# Hash parameter name

hashParamName=hash

# salt for the hash that's generated

hashKey=secretKey

# enable the AuthenticationServlet

enabled=true

# enable the FTCallID check

checkFTCallID=true

3. A salted hash is generated by your CTI application or by WinCare and then verified by ATG Click to Call to ensure authenticity. The secret key must be configured identically on both CSC and your CTI or WinCare system. The property secretKeyForHashCompare in the /atg/svc/clicktoconnect/ C2CTools file should be set to the value of this key.

# Key that is included when calculating the has value...

secretKeyForHashCompare=secretKey

4. WinCare agents must be added with an identical login name for both CSC and the ATG Optimization Console for automatic authentication. Use the BCC and the ATG Optimization Console to ensure that agent names are the same in both applications.

Note: If you are not using WinCare, set the checkFTCallID property to false in the /localconfig/atg/svc/clicktoconnect/Click to CallTools file.

5. Use the ATG Optimization Console tool to add the agents. Contact your ATG account representative to set up the secret key value. Refer to the ATG documentation for additional information.

6. Each agent must have a copy of WinCare that is used to route telephone calls on their system. Download the WinCare software from the ATG website at https: //Webcare.atg.com/wincare.

Disabling ATG Commerce Service Center Auto-Authentication

You can disable CSC authentication by setting the enabled property in the atg/dynamo/servlet/daf/pipeline/AuthenticaionServlet.properties to false. Once authentication has been disabled, the agent must log in for each session of CSC.

Configuring ATG Commerce Service Center Landing Page Components

Landing pages are used to control which page is initially viewed by the agent at the start of the ATG Click to Call session. Typically, landing pages are determined based on the URL viewed on the store front when

Page 80: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

7 2

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μthe call was initiated. However, the Landing Page components provide a generic interface that allows you to determine a landing page based on other values, and not just the store front URL.

Because most of the time the landing page is determined by the store front URL at the time the call was initiated by the customer, CSC provides a number of LandingPage and LandingPageHandlers pre-configured to land on specific views within the CSC application. This includes a default landing page that is used when no other landing page is provided.

LandingPage configurations are available for landing the follow views in CSC. Any one of the provided LandingPages can be mapped to one or more store front URLs.

The shopping cart view of the active order

The customer profile view of the active customer

The existing order view for a given order

The product view for a given product

The main catalog browse view

Default Landing Page

The Default Landing Page determines which page is initially viewed when no other Landing Page can be determined. By default, the Default Landing Page is configured with the shopping cart view.

Customizing Landing Page Components

You can change the default tab or panel that is presented to the agent when ATG Click to Call presents a new call. The following section describes the components and configurations for this feature.

The landing page configuration consists of the LandingPageManager, the LandingPageHandler and the LandingPage components.

The LandingPageManager Component

The /atg/svc/clicktoconnect/LandingPageManager component contains the configurations for all of the LandingPageHandlers and executes them to determine the correct landing page for the ATG Click to Call request. It polls all LandingPageHandlers until one of them returns a LandingPage object. If no landing page is returned, the defaultLandingPageHandler is used.

These LandingPageManager properties are configurable as follows. If the LandingPageManager does not successfully determine a LandingPage, the agent’s normal login landing page will be the default landing page:

landingPageHandlers - an array of LandingPageHandler components

defaultLandingPageHandler - the LandingPageHandler that is executed when no other LandingPageHandler has provided a landing page

For example:

Page 81: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

7 3

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μlandingPageHandlers+=

/atg/commerce/custsvc/clicktoconnect/ProductViewLandingPageHandler,\

/atg/commerce/custsvc/clicktoconnect/OrderViewLandingPageHandler,\

/atg/commerce/custsvc/clicktoconnect/CategoryViewLandingPageHandler

defaultLandingPageHandler=/atg/commerce/custsvc/clicktoconnect/

DefaultLandingPageHandler

The LandingPageHandler Components

The LandingPageHandler components, which are integrated with LandingPageManager, return a LandingPage based on the values of the Click to CallRequestData object.

The following LandingPageHandler properties are configurable:

landingPage - the landingPage object that is returned by the LandingPageHandler

URIMatches - this property is available to LandingPageHandlers that determine the landing page based on the current store front URL

Note: When configuring the URIMatches property, you must supply the full file path, for example /commerce2/myaccount/profile.jsp.

Component Description

/atg/svc/clicktoconnect/

ProfileViewLanding

PageHandler

This component returns a landing page if the store front URL starts with any one the strings specified by the URIMatches property. The profile viewed will be the same as the profile saved when initializing the call on the store front.

For example: URIMatches=/ondemand/myaccount/profile.jsp

/atg/commerce/custsvc/

clicktoconnect/CategoryView

LandingPageHandler

This component returns a landing page if the store front URL starts with any one the strings specified by the URIMatches property. This component will land the agent on the catalog browse main page.

For example: URIMatches=/ondemand/subcategory.jsp?categoryId=

/atg/commerce/custsvc/

clicktoconnect/OrderView

LandingPageHandler

This component returns a landing page if the store front URL starts with any one the strings specified by the URIMatches property. The order ID is identified by a parameter on the store front URL with the name specified by the property orderIdParameterName. This component has a LandingPage configuration for standard orders and another for scheduled orders.

For example: URIMatches=/ondemand/myaccount/myOrders.jsp

Page 82: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

7 4

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μComponent Description

/atg/commerce/custsvc/

clicktoconnect/ProductView

LandingPageHandler

This component returns a landing page if the store front URL starts with any one the strings specified by the URIMatches property. The product ID is identified by a parameter on the store front URL with the name specified by the property productIdParameterName.

For example: URIMatches=/ondemand/productDetailWithPicker.jsp?

productId=

/atg/commerce/custsvc/

clicktoconnect/

DefaultLandingPageHandler

This component returns a landing page when no other landing page is provided. If the order is modifiable the cart view page is used, otherwise the order view page is used.

For example: scheduledOrderViewLandingPage=

ScheduledOrderViewLandingPage

orderViewLandingPage=OrderViewLandingPage

cartViewLandingPage=CartViewLandingPage

The LandingPage Component

A LandingPage object provides all of the information required for the LandinPageManager to initialize the agent UI on a specific view. CSC provides a number of pre-configuration LandingPage components that are used by the LandingPageHandlers. However, LandingPage objects can be constructed dynamically at runtime.

The following properties are configurable in the LandingPage component:

tabId

panelStackIds

panelIds

dynamicIncludes

treeTableIds

The following LandingPage components are available for configuration:

Component Description

/atg/svc/clicktoconnect/

ProfileViewLandingPage

Identifies the values required to land on the customer tab’s profile view page.

/atg/commerce/custsvc/clicktoconnect/

CategoryViewLandingPage

Identifies the values required to land on the commerce tab’s catalog view page.

Page 83: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

7 5

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μ/atg/commerce/custsvc/clicktoconnect/

ProductViewLandingPage

Identifies the values required to land on the commerce tab’s product view page.

/atg/commerce/custsvc/clicktoconnect/

OrderViewLandingPage

Provides the values needed to land on the commerce tab’s order view page.

/atg/commerce/custsvc/clicktoconnect/

ScheduledOrderViewLandingPage

Identifies the values needed to land on the commerce tab’s scheduled order view page.

/atg/commerce/custsvc/clicktoconnect/

CartViewLandingPage

Provides the values required to land on the commerce tab’s cart page.

Page 84: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

7 6

6 - C o n f i g u r i n g A T G C l i c k t o C a l l

μ

Page 85: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

7 7

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ7 Programming ATG Commerce

Service Center

Depending on the requirements of your site, you may need to modify some of the default behavior of CSC. Much of this behavior is determined by the properties of Nucleus components, so you can customize your system through configuration of these properties using the ACC. For more extensive changes, you may want to extend CSC classes and create new components from your classes.

Using the CSRConfigurator Component The /atg/commerce/custsvc/util/CSRConfigurator component configures ATG Commerce settings, through the following properties:

Property Name Description

catalogTools Specifies the CatalogTools component to use. Default is /atg/commerce/catalog /CatalogTools

usingScheduledOrders Specifies if Scheduled Orders are enabled. The default is true

usingOrderApprovals Specifies if Order Approvals are enabled. The default is true

defaultSiteIconURL Sets a default icon to use if there is no icon identified for the site

defaultSiteId Specifics the global default site that is loaded when the agent logs in

cartShareableTypeId Checks if two sites are in the same cart sharing site group. Also finds sites in the cart sharing site group

maximumAlmostQualifiedFor

PromotionsInShortList

The number of promotion closeness qualifiers to display on the shopping cart. The default number is set to 6.

Page 86: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

7 8

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μProperty Name Description

quantityInputTagMaxLength The maximum number of characters that the quantity input field will accept. The default number is set to 10.

quantityInputTagSize The display size of the quantity input field. If the quantityInputTagMaxLength size is set to 10, yet the quantityInputTagSize is set to 5, the user will be able to enter 10 characters, but only 5 of the 10 characters will be displayed. The default number is set to 10

processReturnRequestImmediately If set to true, then the return request process will begin immediately

usingPriceLists If set to true, indicates that the running commerce application uses price lists

usingGiftLists If set to true, indicates that the running commerce application uses gift lists

shippingGroupTypeToBeInitialized The type of shipping groups that can be initialized include hardgoodShippingGroup and electronicShippingGroup

shippingGroupTYpeConfigurations Identifies the shipping group type configurations to display

paymentGroupTypesToBeInitialized The type of payment groups that can be initialized include creditCard, storeCredit and giftCertificate

paymentGroupTypeConfigurations Identifies the payment group type configurations to display

defaultAppeasementLimit Sets the default appeasement limit that an agent can offer. The default format for the limit is USD=500.00

commerceSiteType Indicates the Site Type, as configured in the Site Administration Console in the BCC. The default for CSC is set to commerce

pricingTools Sets the location of the pricing tools used for the running commerce application. The default location is set to /atg/commerce/pricing/PricingTools

Page 87: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

7 9

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μUsing Service Center Debugging Modes

Development is easier by activating various debugging modes that are available in CSC.

Service Center Debugging Mode

When Service Center debugging mode is turned on, an information icon appears next to each panel, providing information on all of the components that comprise the panel. When the cursor is placed over the icon, debug information displays for the panel, as displayed below:

The popup displays a table that contains the IDs of the data that drives the display of the panel, as well as the JSP that renders the panel content and the web application that contains the JSP. The table also displays the resource bundle and the key that are used to display the panel content.

Below the table is a list of the JSP sources, as well as a list of the included JSP files. This page is cross-linked to the ATG Dynamo Server Admin, which queries for the panel data, allowing real-time modification.

To turn on debug mode, set the useDebugPanelStackMode property of the /atg/svc/agent/ui/ AgentUIConfiguration to true.

Page 88: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

8 0

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μDojo Debugging Mode

Using Dojo debugging enables console logging in Firefox Firebug. To set Dojo debugging, set the dojoDebug property of the /atg/svc/agent/ui/AgentUIConfiguration to true.

Adding a Custom Panel in Service Center Custom panels are created with Panels and Panel Stacks, which are repository-based, and are used to control tabs and tab content. The lowest level of detail is the Panel, which is contained within a Panel Stack.

To modify panels and panel stacks, use the /atg/svc/ServiceFrameworkRepository repository with the repository import file /service/Framework/data/initial/svc_framework.xml and /DCS-CSR/install/data/svc_framework.xml.

The repository contains the definitions for the tabs, the panel stacks and the panel definitions, as outlined in the diagram below:

Page 89: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

8 1

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ

Repository Structure

The following is a sample Panel Stack Definition:

<add-item item-descriptor="PanelStackDefinition" id="WsCustomerPanelStack">

<set-property name="panelStackId" value="customerPanels"/>

<set-property name="errorPanelId" value="errorPanel"/>

<set-property name="header" value="contentHeader"/>

<set-property name="imageUrl" value="/iconcatalog/30x25/header_icons/

icon_panelcustMngmnt.gif"/>

<set-property name="panelBackgroundTabStyle" value="contentBackgroundTab"/>

<set-property name="panelSelectedTabStyle" value="contentSelectedTab"/>

<set-property name="panelTitlebarTabbedStyle" value="contentTitlebarTabbed"/>

<set-property name="panelTitlebarUntabbedStyle

"value="contentTitlebarUntabbed"/>

<set-property name="titleKey" value="panelStack.customerDetails.label"/>

<set-property name="panelIds" value="errorPanel,ticketCustomerInformationPanel,

ticketCustomerTicketHistoryPanel,ticketCustomerOrderHistoryPanel"/>

</add-item>

The following is a sample Panel Definition:

<add-item item-descriptor="PanelDefinition" id="WsTicketCustomerInformationPanel">

<set-property name="appId" value="workspace"/>

<set-property name="panelId" value="ticketCustomerInformationPanel"/>

<set-property name="templateIds" value="panelTemplate=panelTemplate"/>

Page 90: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

8 2

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ <set-property name="contentUrl"

value="/panels/ticketCustomerInformationPanel.jsp"/>

<set-property name="helpKey"

value="panel.ticketCustomerInformationPanel.help"/>

<set-property name="titleKey"

value="panel.ticketCustomerInformationPanel.label"/>

<set-property name="allowContentToggleYn" value="true"/>

<set-property name="allowTabbingYn" value="true"/>

<set-property name="accessRight" value="TicketsCustomerInformationPanel"/>

</add-item>

To avoid migration issues, replace the default PanelDefinition URL with a link to the custom JSP file and include the default JSP from the custom page.

Customer Management Panel Configuration

You can customize the Customer Management Panel to display panels based upon your requirements by adding or removing JSP files that display or manage customer specific data. Because the configuration is based on components, you can perform module-specific customizations. The CSC module (DCS-CSR) extends the Customer Management Panel with ATG Commerce-specific sections, such as Credit Cards, Credits and Promotions. For additional information on Customer Management customizations, refer to the ATG Commerce Programming Guide.

Page 91: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

8 3

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ

To modify the Customer Management Panel, modify the /atg/svc/agent/customer/ CustomerPanelConfig.properties to identify the panels to display as well as the context where the panel is displayed. The following example creates the Profile, Notes and Addresses panels:

$class=atg.svc.agent.customer.CustomerPanelConfig

subSections=

/panels/customer/profile.jsp,

/panels/customer/notes.jsp,

/panels/customer/addresses.jsp

contextRoots=

/agent,

/agent,

/agent

Adding a New Panel to ATG Commerce Service Center

New panels must be added to the Service Repository. To do this, perform an XML combine with the existing svc_framework.xml file as outlined in the following example:

1. Update the Service Repository with definitions of the new CSC panels. ATG Service stores panels, panel stacks and all other framework type objects in a repository, as defined in the install/data/svc_framework.xml file.

Page 92: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

8 4

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μNote: The panel definitions below point to the shopping cart. The following properties must be changed: contentUrl, titleKey and resourceBundle.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE gsa-template SYSTEM

"dynamosystemresource: /atg/dtds/gsa/gsa_1.0.dtd">

<add-item item-descriptor="PanelDefinition" id="myNewPanel1">

<set-property name="appId" value="workspace"/>

<set-property name="panelId" value="myNewPanel1"/>

<set-property name="accessRight" value="NewPanel1"/>

<set-property name="titleKey" value="cmcShoppingCartP"/>

<set-property name="resourceBundle"

value="atg.commerce.csr.FrameworkResources"/>

<set-property name="contentUrl" value="/panels/order/cart.jsp"/>

<set-property name="otherContext" value="DCS-CSR"/>

<set-property name="templateIds" value="panelTemplate=panelTemplate"/>

<set-property name="tabHolderYn" value="true"/>

<set-property name="allowContentToggleYn" value="true"/>

<set-property name="allowTabbingYn" value="true"/>

</add-item>

<add-item item-descriptor="PanelDefinition" id="myNewPanel2">

<set-property name="appId" value="workspace"/>

<set-property name="panelId" value="myNewPanel2"/>

<set-property name="accessRight" value="NewPanel2"/>

<set-property name="titleKey" value="cmcShoppingCartP"/>

<set-property name="resourceBundle"

value="atg.commerce.csr.FrameworkResources"/>

<set-property name="contentUrl" value="/panels/order/cart.jsp"/>

<set-property name="otherContext" value="DCS-CSR"/>

<set-property name="templateIds" value="panelTemplate=panelTemplate"/>

<set-property name="tabHolderYn" value="true"/>

<set-property name="allowContentToggleYn" value="true"/>

<set-property name="allowTabbingYn" value="true"/>

</add-item>

<add-item item-descriptor="PanelDefinition" id="myNewPanel3">

<set-property name="appId" value="workspace"/>

<set-property name="panelId" value="myNewPanel3"/>

<set-property name="accessRight" value="NewPanel3"/>

<set-property name="titleKey" value="cmcShoppingCartP"/>

<set-property name="resourceBundle"

value="atg.commerce.csr.FrameworkResources"/>

<set-property name="contentUrl" value="/panels/order/cart.jsp"/>

<set-property name="otherContext" value="DCS-CSR"/>

<set-property name="templateIds" value="panelTemplate=panelTemplate"/>

<set-property name="tabHolderYn" value="true"/>

<set-property name="allowContentToggleYn" value="true"/>

<set-property name="allowTabbingYn" value="true"/>

Page 93: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

8 5

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ</add-item>

<gsa-template>

The new panels can be added to any existing panel stack by updating the panelIds property. Similarly, the panels may be added to a new panel stack.

Note: It is recommended that the JSPs for new panels should be housed in a custom web-app. If the JSPs are housed in a custom web-app, the otherContext property of the PanelDefinition should be set to the value of the context root of the containing web-app.

2. The list of valid framework components is managed by the FrameworkComponents service in the /atg/svc/configuration/FrameworkComponents.properties file. Add the new panel to the end of the list in the appropriate configuration layer with the flag set to true, for example:

componentIds+=\

myNewPanel=true

Note: The componentIds list is used for both panels and tabs.

Once the repository definition has been extended and the panels have been added to the required panel stack, the Service database should be reloaded. The panels will then be visible.

Adding a New JavaScript or CSS File To add a new JavaScript or CSS file to CSC, add them to the applicationScriptFiles property of the /atg/svc/agent/ui/AgentUIConfiguration.

Page 94: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

8 6

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μThe following example adds myScript1.js and myScript2.js to myServiceCenter. To add to the list, ensure that you are using the += syntax:

applicationScriptFiles+=

/myServiceCenter/scripts/myScript1.js,

/myServiceCenter/scripts/myScript2.js

If dojoDebug is turned on, you must add your custom scripts to the debugScriptFiles list:

debugScriptFiles+=

/myServiceCenter/scripts/myScript1.js,

/myServiceCenter/scripts/myScript2.js

To add a new CSS file, add it to /atg/svc/agent/ui/AgentUIConfiguration using the applicationStyleSheets property:

applicationStyleSheets+=

/myServiceCenter/styles/myStyles.css

Adding a Custom Tab The following example displays the addition of a new myNewTab tab definition. It renders a new panel stack called MyNewPS, which renders the three additional panels added above: myNewPanel1, myNewPanel2, and myNewPanel3 (see Step 3 in Adding a New Panel to ATG Commerce Service Center).

In this example, the following properties will be changed for the tab definition:

The appId property must be set to workspace for the tab to be loaded in Service Center

The tabId property must correspond to the tab ID referenced in the ContentDefinition item defined for the tab action

The titleKey property references a resource defined in the customer resource bundle in the CSC class path.

The accessRight may remain the default GlobalPanel right or a specific right. If using a specific right, the right must be defined and assigned to Service Center users. Note: The access right must be defined or the tab will not be rendered

The panelStackAssignments property uses pre-existing column names defined in the Service Framework Repository. This positions the panel stacks in the left column using contentColumn, the right column using sidebarColumn or top area using globalCell. Note: Changing the top area in the globalCell is not supported.

Page 95: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

8 7

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ The currentPanelStacks property determines which panel stacks to show

initially or by default.

The panelStackOrder property determines the sequence in which the panel stacks are rendered in case there is cross-referencing JavaScript between panel stacks that creates dependencies in the rendering order.

The contentIds property points to the ContentDefinition item defined above so that the requested JavaScript action is executed when the tab is selected.

Additional information regarding the following properties is available in the ATG Service Installation and Configuration Guide

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE gsa-template SYSTEM

"dynamosystemresource: /atg/dtds/gsa/gsa_1.0.dtd">

<!--

The new myNewTab tab definition

-->

<add-item item-descriptor="TabDefinition" id="WsMyNewTabDefinition">

<set-property name="appId" value="workspace"/>

<set-property name="tabId" value="myNewTab"/>

<set-property name="titleKey" value="myNewTab.resource"/>

<set-property name="resourceBundle"

value="atg.commerce.csr.FrameworkResources"/>

<set-property name="accessRight" value="GlobalPanel"/>

<!--

Note: both cmcHelpfulPanels and helpfulPanels must be defined in

case the user goes to Utilities | Preferences while on the Commerce

tab. Preferences needs the next steps menu in the helpfulPanels panel

stack.

-->

<set-property name="panelStackAssignments"

value="MyNewPS=contentColumn,globalPanels=globalCell,

helpfulPanels=sidebarColumn cmcHelpfulPanels=sidebarColumn

preferencesPanel=contentColumn"/>

<set-property name="currentPanelStacks"

value="MyNewPS=contentColumn,cmcHelpfulPanels=sidebarColumn,

globalPanels=globalCell"/>

<set-property name="panelStackOrder"

value="globalPanels,cmcHelpfulPanels,helpfulPanels,MyNewPS,

preferencePanels"/>

<set-property name="templateIds"

value="contentHeader=contentHeaderTemplate"/>

<set-property name="contentIds" value="actionJavaScript=myTabAction"/>

</add-item>

<!--

Page 96: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

8 8

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ The panel stack that gets rendered initially when the tab is loaded.

This is done by setting the currentPanelStacks property of the tab

definition.

-->

<add-item item-descriptor="PanelStackDefinition" id="MyNewPS">

<set-property name="appId" value="workspace"/>

<set-property name="panelStackId" value="MyNewPS"/>

<set-property name="errorPanelId" value="errorPanel"/>

<set-property name="header" value="contentHeader"/>

<set-property name="titleKey" value="MyNewPS"/>

<set-property name="resourceBundle"

value="acme.csr.MyUserResource"/>

<set-property name="panelIds"

value="errorPanel,myNewPanel1,myNewPanel2,

myNewPanel3"/>

</add-item>

<!--

Update the existing framework to be aware of the new tab.

-->

<update-item item-descriptor="FrameworkDefinition"

id="WsAgentFramework">

<set-property name="tabIds" value="myNewTab" remove="true"/>

</update-item>

<update-item item-descriptor="FrameworkDefinition"

id="WsAgentFramework">

<set-property name="tabIds" value="myNewTab" add="true"/>

</update-item>

<gsa-template>

1. Once the new tab and panel stacks are defined, add the ContentDefinition item for the new tab action. This defines the JavaScript action that will be attached to the TabDefinition item for the new tab (via the contentIds map, see below) and will be executed when the tab is selected. For example:

<add-item item-descriptor="ContentDefinition" id="WsMyNewTabAction">

<set-property name="appId" value="workspace"/>

<set-property name="contentId" value="myNewTabAction"/>

<set-property name="mimeType" value="text/javascript"/>

<set-property name="body"><![CDATA[atgChangeTab(atg.service.framework.

changeTab('myNewTab'),null,null,null);]]></set-property>

</add-item>

2. The list of valid framework components is managed by the FrameworkComponents service in the /atg/svc/configuration/FrameworkComponents.properties file. Add the new tab to the end of the list of your customer application configuration layer with the flag set to true, for example:

Page 97: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

8 9

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μcomponentIds+=\

myNewTab=true

Note: The same componentIds list is used for both panels and tabs.

Modifying a Tab Action

You can modify the action that a tab performs by modifying the ContentDefinition item for the action in the Service Framework Repository. Once you have modified the item, you must define the JavaScript that will be run when the tab is clicked.

Troubleshooting Tab Customization

When the application is started yet your new tab, panel stack or panel is not visible, check the following common causes:

1. Verify that the enableYn property is set to true (the default value).

2. If you are using an access right other than GlobalPanels, verify that your access right has been created in the appropriate repository. If unsure, set the accessRight to GlobalPanels, which is an access right with no restrictions. The GlobalPanels access right can be used for both tabs and panels.

3. Verify that the tabId property (for a tab) or the panelId property (for a panel) is defined in the /atg/svc/configuration/FrameworkComponents Nucleus component. If you are using a custom configuration layer, use the ACC to confirm that the correct component is active. Note: This applies to tabs and panels only.

4. If a tab is not displaying, verify that the tabId for the tab was added to the tabIds property in the workspace FrameworkDefinition item as described above.

5. If a panel stack is not displaying, verify that the panelStackId for the panel stack is added to the panelStackAssignments, currentPanelStacks and panelStackOrder properties of the TabDefinition item as described above.

6. If a panel is not displaying, verify that the panelId for the panel is added to the panelIds property in the PanelStackDefinition item as described above.

7. If the top panel in the panel stack is not displaying, verify that the tabHolderYn property is set to true.

Page 98: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

9 0

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ8. If a panel other than the top panel is not displaying, verify that the tabHolderYn

property is false.

9. If tabbed panels are not displaying, verify the following:

The first panel should be configured with tabHolderYn=true, currentPanelId=set to the same as panelId and tabbedPanelIds=set to the list of panelId's of panels in the row of tabs not including first panel

The panels after the first panel should be configured with tabHolderYn=false and currentPanelId and tabbedPanelIds set to null

All the tabbed panels should be configured to alwaysTabbedYn=true, tabbedYn=true and allowTabbingYn=true

10. If all the data is consistent and the item is still not displaying, check whether the following state-saving tables have stale data that is interfering with the loading of the new data. In the admin schema, remove all the data from the following tables and restart the server (if tables are non-empty):

svc_cell_cfg

svc_content_cfg

svc_framewrk_cfg

svc_fw_tab_cfg

svc_panel_cfg

svc_ps_pnl_cfg

svc_pstack_cfg

svc_skin_cfg

svc_tab_cfg

svc_tab_pnl_cfg

svc_template_cfg

Customizing Forms You can customize CSC forms using configuration layering. Extend the functionality of forms within CSC by modifying the fields within the form. CSC allows you to add or remove fields or to modify the behavior of fields. For example, you can identify required fields within a specific form, by mapping to your own JSP snippets that contain your customized layout. Once you have created your own customized JSP snippets, you can modify the appropriate configuration property for that form to render your customizations.

Using default or extended fragments, you can modify the default forms, and/or append your customizations. If these JSP snippets are not specified, the standard forms are rendered.

The following forms can be modified:

Page 99: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

9 1

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μPage Form/Page Area

Customer Information Create New Customer

Customer information Edit/View Customer

Customer Search Customer Search or the Select Customer pop-up in the shopping cart

Order Search Order Search

Product Catalog Product Search

Order View Display values

Scheduled Order Display values

Forms are customized by modifying the configuration properties files that define the JSP fragments that replace and/or append the field. The JSP fragment is integrated within your page layout to display the new or modified field. CSC uses a default JSP fragment that contains all of the standard fields displayed on a page, and an optional extended JSP fragment used for creating additional fields.

The default page fragment component is mapped to the default JSP snippet in CSC but may be redirected with a configuration property to your own JSP page. The page contains a dsp: include tag that reads the associated configuration file and then includes the page defined by the page fragment component. For example, to change the default fragment to your own code, you would change the page fragment’s servletContext and URL properties to point to your page.

The extended page fragment component allows you to append content to the page without changing the default page fragment. The extended page fragment component contains the same functionality as, and is defined directly after, the default page fragment component.

The default and extended page fragment components are instances of atg.web.PageFragment, which are used to define the location of the JSP file. The configuration files that define the page fragment components contain the following properties to identify the JSP:

servletContext - Specifies the context root of the JSP fragment that will be incorporated into the page

URL - Specifies the URL of the JSP fragment to be incorporated into the page

Both the default and extended property files are instances of PageFragment, allowing a servletContext and URL to be specified for the JSP snippet. As such, the servletContext and URL property descriptions can be applied for both fragment types.

Location of Configuration Property File

The configuration property files for each modifiable form are located below. Note that there are two properties files, one for the default configuration and one for the extended configuration. By default, the extended properties files do not contain a reference to a JSP file. You can define a JSP for the extended

Page 100: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

9 2

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μfragment to incorporate form properties that are specific to your business. The default URL and serverContext properties have also been identified below:

Instance Location

View Customer

<ATG10dir>/Service10.0.2/Service/Agent/config/atg/svc/

agent/ui/fragments/customer/CustomerViewDefault.properties

and

/CustomerViewExtended.properties

The default URL property is mapped to /include/customer/ProfileVewUIFragment.jsp

The default ServletContext property is mapped to agent

New Customer

<ATG10dir>/Service10.0.2/Service/Agent/config/atg/svc/agent /ui/fragments/customer/CustomerNewDefault.properties

and

/CustomerNewExtended.properties

The default URL property is mapped to/include/customer/ProfileNewUIFragment.jsp

The default ServletContext property is mapped to agent

Edit Customer

<ATG10dir>/Service10.0.2/Service/Agent/config/atg/svc /agent/ui/fragments/customer/CustomerEditDefault.properties

and

/CustomerEditExtended.properties

The default URL property is mapped to /include/customer/ProfileEditUIFragment.jsp

The default ServletContext property is mapped to agent

Customer Search

and Customer Select pop-up in Shopping Cart

<ATG10dir>/Service10.0.2/Service/Agent/config/atg/svc/ui/fragments/customer

/CustomerSearchDefault.properties

and

/CustomerSearchExtended.properties

The default URL property is mapped to /include/customer/ProfileEditUIFragment.jsp

The default ServletContext property is mapped to agent

Product Search

<ATG10dir>/CSC10.0.2/DCS-CSR/config/atg/commerce/custsvc/ui/fragments

/catalog/ProductSearchDefault.properties

and

ProductSearchExtended.properties

Page 101: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

9 3

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μInstance Location

The default URL property is mapped to /include/catalog/ProductSearchUIFragment.jsp

The default ServletContext property is mapped to DCS-CSR

Order Search

<ATG10dir>/CSC10.0.2/DCS-CSR/config/atg/commerce/custsvc/ui/

fragments/order/OrderSearchDefault.properties

and

/OrderSearchExtended.properties

The default URL property is mapped to /include/order/OrderSearchUIFragment.jsp

The default ServletContext property is mapped to DCS-CSR

Order View

<ATG10dir>/CSC10.0.2/DCS-CSR/config/atg/commerce/custsvc/ui/

fragments/order/OrderViewDefault.properties

and

/OrderViewExtended.properties

The default URL property is mapped to /include/order/OrderViewUIFragment.jsp

The default ServletContext property is mapped to DCS-CSR

Scheduled Order View

<ATG10dir>/CSC10.0.2/DCS-CSR/config/atg/commerce/custsvc/ui/

fragments/order/ScheduledOrderViewDefault.properties

and

/ScheduledOrderViewExtended.properties

The default URL property is mapped to /include/order/ScheuledOrderViewUIFragment.jsp

The default ServletContext property is mapped to DCS-CSR

Creating an Extended Page Fragment

Adding a new field to the end of the default fields is best done by modifying the appropriate extended properties file. Any new fields will be displayed after the default fields. It is recommended that you use configuration layering to create extended configuration files that reside within your own application module, and point these files to the extended page fragments contained in your custom web application. This prevents your customizations from being overwritten if CSC is updated, as the configuration properties are located in your web application.

1. Create a JSP fragment file that provides the new field information.

2. Add the path of the newly created JSP file to the appropriate extended properties file. Specify the URL and ServletContext for the appended file.

3. Save the extended properties file.

Page 102: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

9 4

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ4. Create a new fragment and place it in the location specified by the URL property of the

extended properties file. Optionally, you can edit an existing JSP fragment that has been specified in the extended properties file to include the new field information.

Note: The JSP fragments are dynamically included and the file will be compiled and executed before being embedded into the form. As such, import any necessary components into your page to ensure successful compiling.

Overriding the Default Page Fragment

You can make customizations to existing form fields such as adding a new field within or above the default field layout. It is recommended that you use configuration layering to create configuration files that reside within your own application module, and point these files to the extended page fragments within your own web application. This prevents your customizations from being overwritten if CSC is updated, as the configuration properties and JSPs are located in your web application.

1. Make a copy the appropriate default fragment.

2. Make your customizations to the copy of the default fragment. Specify the URL and ServletContext for the web application file. Save your changes.

3. Update the appropriate version of the /localconfig configuration file to point to the new copy of the default fragment.

Customizing Grids and Tables ATG provides a method of customizing tables and grids with configuration layering. Using configuration properties, you can identify the location and file names of JSP snippets to be included inside the default CSC pages. If these JSP snippets are not specified, the default grid/table pages are displayed. However, you can choose to specify these JSP snippets, and extend the grid components, by providing additional rendering information and grid data that is integrated into the existing CSC grids.

Grids or tables can be modified to add columns, reorder or remove columns, change column widths or sorting, as well as to change hover information.

Customizable Components

The customizable components of a grid or table are:

Column title

Column contents

Column sorting

Column width

Number of rows displayed per page

Number of rows displayed at a time per user scrolls

The following CSC grids can be modified:

Page 103: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

9 5

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ

Page Grid Location

Order History /atg/commerce/custsvc/ui/tables/order/

OrderHistoryGrid.properties

Scheduled Orders

/atg/commerce/custsvc/ui/tables/order/

ScheduledOrdersGrid.properties

Customer Information

Ticket History atg/svc/agent/ui/tables/ticket/

CustomerTicketGrid.properties

Exchange History /atg/commerce/custsvc/ui/tables/order/

ExchangeHistoryGrid.properties Order View

Related Tickets /atg/commerce/custsvc/ui/tables/ticket/

RelatedTicketGrid.properties

Submitted Orders

/atg/commerce/custsvc/ui/tables/order/

SubmittedOrdersGrid.properties Scheduled Order

Related Tickets /atg/commerce/custsvc/ui/tables/ticket/

RelatedTicketGrid.properties

The following CSC tables can be customized:

Page Table Location

Customer Search Search Results /atg/svc/agent/ui/

CustomerProfileSearchUIConfiguration

Order Search Search Results /atg/commerce/custsvc/order/

OrderSearchUIConfiguration

Customizing Table Configuration

The TableConfiguration class is located in ATG Service Agent classes. The columns are defined in a list. The properties for TableConfiguration are:

Property Description

columns List containing all columns in display order

formHandlerPath The Nucleus path to the form hander that renders the results

imageClosed The file name of the image to render when the grid item detail is not visible or is closed

Page 104: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

9 6

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μProperty Description

imageOpen The file name of the image to render when the grid item detail is visible or is open

imagePath The URL path to the images

tablePage The page fragment containing the grid implementation

tablePath The Nucleus path to the grid configuration component

rowsPerPage The number of items to fetch per server request, usually extracted from the results form handler

defaultSortField The default sort column. This field should point to the configured values in the particular column configuration to be sorted. The ViewLink.sortField must match what is defined in the profile-output-config.xml or the order-output-config.xml file.

defaultSortDirection The default sort direction, either ascending or descending. This field should point to the configured values in the particular column configuration to be sorted.

The following is an example of the /atg/commerce/custsvc/order/ OrderSearchUIConfiguration.properties file:

$class=atg.svc.agent.ui.tables.TableConfiguration

$scope=global

columns=\

/atg/commerce/custsvc/ui/tables/order/search/Toggle,\

/atg/commerce/custsvc/ui/tables/order/search/ViewLink,\

/atg/commerce/custsvc/ui/tables/order/search/LastName,\

/atg/commerce/custsvc/ui/tables/order/search/FirstName,\

/atg/commerce/custsvc/ui/tables/order/search/Total,\

/atg/commerce/custsvc/ui/tables/order/search/ItemsReturned,\

/atg/commerce/custsvc/ui/tables/order/search/DateSubmitted,\

/atg/commerce/custsvc/ui/tables/order/search/Originator,\

/atg/commerce/custsvc/ui/tables/order/search/State,\

/atg/commerce/custsvc/ui/tables/order/search/WorkOn

imageClosed=icon_find.gif

imageOpen=icon_find.gif

imagePath=/images/icons/

rowsPerPage=10

defaultSortField^=/atg/svc/agent/ui/tables/customer/ViewLink.sortField

Page 105: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

9 7

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μdefaultSortDirection^=/atg/svc/agent/ui/tables/customer/ViewLink.defaultSort

tablePath=/atg/commerce/custsvc/ui/tables/order/search/OrderSearchResultsTable

tablePage=/atg/commerce/custsvc/ui/tables/order/search/OrderSearchTablePage

Customizing Grid Configuration

The GridConfiguration object is located in ATG Service Agent classes and extends the TableConfiguration class. The columns are defined in order in an array of ColumnConfiguration components. The properties for GridConfiguration are:

Property Description

columns The array of ColumnConfiguration components that specify the columns for the grid in display order

dataModelPage The page fragment component that contains the data model (for example, JSON). Include the full Nucleus path to the component

detailFormId The DOM ID of the form node to submit to retrieve an item detail

formHandlerPath The Nucleus path to the form handler that renders the results

gridHeight The value assigned to the height CSS style for the table to determine its visible height.

gridInstanceId The JavaScript variable name that should be unique for each instance of the table in the application

gridPage The page fragment containing the grid implementation

gridPath The Nucleus path to the grid configuration component

gridWidgetId The Dojo ID of the table widget that should be unique for each instance of the table in the application

imageClosed The file name of image to render when the grid item detail is not visible or closed

imageOpen The file name of image to render when the grid item detail is visible or open

imagePath The URL path to the images

itemDetailPage The page fragment component containing the item details (currently implemented as a hover popup)

pageBaseOffset The base of the paging: 0 for 0-based paging, 1 for 1-based paging, etc.

pageIndexElementName The element name of the page index form input

Page 106: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

9 8

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μProperty Description

progressNodeId The optional ID for a DOM node to render status messages, such as ‘search in progress...’ or ‘No results found.’ etc.

rowsPerPage The size of the result to send back from the form handler in each page

searchFormId The DOM ID of the form node to submit to retrieve orders

selectLink An anchor tag template with pattern replacement for selecting the item in the application

viewLink An anchor tag template with pattern replacement for viewing the item in the application

The following is an example of the /atg/commerce/custsvc/ui/tables/order/ OrderHistoryGrid.properties file:

$class=atg.svc.agent.ui.tables.GridConfiguration

# invisible data columns: DBState

columns=\

/atg/commerce/custsvc/ui/tables/order/Toggle,\

/atg/commerce/custsvc/ui/tables/order/ViewLink,\

/atg/commerce/custsvc/ui/tables/order/Total,\

/atg/commerce/custsvc/ui/tables/order/ItemCount,\

/atg/commerce/custsvc/ui/tables/order/ItemSummary,\

/atg/commerce/custsvc/ui/tables/order/SubmittedDate,\

/atg/commerce/custsvc/ui/tables/order/Origin,\

/atg/commerce/custsvc/ui/tables/order/State,\

/atg/commerce/custsvc/ui/tables/order/SelectLink,\

/atg/commerce/custsvc/ui/tables/order/ID,\

/atg/commerce/custsvc/ui/tables/order/DBState

rowsPerPage=10

formHandlerPath=/atg/commerce/custsvc/order/OrderHistoryTableFormHandler

gridHeight=450px

gridInstanceId=atg.commerce.csr.order.historyGridInstance

gridPath=/atg/commerce/custsvc/ui/tables/order/OrderHistoryGrid

gridWidgetId=atg_commerce_csr_customer_order_searchResultsTable

progressNodeId=atg_commerce_csr_order_resultsGridStatus

searchFormId=orderHistoryListForm

dataModelPage=/atg/commerce/custsvc/ui/tables/order/OrderDataPage

gridPage=/atg/commerce/custsvc/ui/tables/order/OrderGridPage

itemDetailPage=/atg/commerce/custsvc/ui/tables/order/OrderDetailPage

Page 107: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

9 9

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μCustomizing Column Layout

The ColumnConfiguration object is located in Service.Agent.

Column Configuration with Dojo

The properties for ColumnConfiguration within Dojo are:

Property Description

cellRendererPage The page fragment component that can contain a client-side JavaScript function to render the cell contents. Includes the full Nucleus path to the component

dataRendererPage The page fragment component that returns server-side data in JSON that inserts a cell. Includes the full Nucleus path to the component

defaultSort Is set to either ascending or descending sorting or left blank for no sorting.

field The field name identifier for the data to render in the column from the data model. UI-only columns without a backing data representation should leave the field parameter undefined.

sortField The name of the data model field on which to sort, which is different than field. If this property is undefined and sorting is enabled using defaultSort, the data is sorted on the field property. If this property is defined and sorting is enabled using defaultSort, the data is sorted on the sortField property. This property allows a column to contain rendering and markup that does not interfere with the sorting of the field. For example, the ViewLink column can have a link to view an item where the column is not sorted on the link markup, but on a separate corresponding data value.

isVisible Whether to display the column in the UI or only to send back the data for the column. This is useful for JavaScript widgets that store invisible column data for other columns. For example, an onClick function in the ID field can use an invisible DBState field to identify what to do when an order is opened.

resourceBundle The resource bundle that contains the column display name

resourceKey The key that references the column display name in the resource bundle

width The extent of the column using the Dojo grid syntax (e.g. ‘5em’ or ‘auto’)

styles The column CSS styles. Note: Styles are not modifiable for tables.

The following is an example of the /atg/commerce/custsvc/ui/tables/order/ ViewLink.properties column configuration:

Page 108: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 0 0

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ$class=atg.svc.agent.ui.tables.ColumnConfiguration

defaultSort=ascending

field=viewLink

sortField=id

width=4em

resourceBundle=atg.commerce.csr.Messages

resourceKey=view-order

isVisible=true

cellRendererPage=/atg/commerce/custsvc/ui/tables/order/ViewLinkPage

dataRendererPage=/atg/commerce/custsvc/ui/tables/order/ColumnRendererPage

Column Configuration using an HTML Table

The properties for ColumnConfiguration using an HTML table are:

Property Description

dataRendererPage The page fragment component that returns server-side data in JSON that inserts a cell. Includes the full Nucleus path to the component

field The field name identifier for the data to render in the column from the data model. UI-only columns without a backing data representation should leave the field parameter undefined.

isVisible Whether to display the column in the UI or only to send back the data for the column. This is useful for JavaScript widgets that store invisible column data for other columns. For example, an onClick function in the ID field can use an invisible DBState field to identify what to do when an order is opened.

resourceBundle The resource bundle that contains the column display name

resourceKey The key that references the column display name in the resource bundle

width The extent of the column using the Dojo grid syntax (e.g. ‘5em’ or ‘auto’)

The following is an example of the /atg/svc/agent/ui/tables/customer/LastName.properties column configuration:

$class=atg.svc.agent.ui.tables.ColumnConfiguration

field=lastName

resourceBundle=atg.svc.agent.WebAppResources

resourceKey=customer.results.lastName

isVisible=true

Page 109: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 0 1

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ

dataRendererPage=/atg/svc/agent/ui/tables/customer/ColumnRendererPage

Customizing Column Attributes

The steps for customizing column title, sorting and width are similar in that they update properties in the column configuration component. Note: Do not use quotes when setting values in this map.

To begin customization, override the column configuration by performing the following:

1. Create a new application module for customizations. Include this module when starting JBoss. Refer to the ATG Installation and Configuration Guide for information on creating new application modules and starting JBoss.

2. Locate the properties file that defines the appropriate column configuration.

3. Inside the customization module, create a properties file at the corresponding path that contains no properties.

Customizing a Column Title

1. Create or edit a resource bundle for customized strings in the customization module.

2. In the properties file for the column, update the resourceBundle and resourceKey properties to point to the corresponding resource bundle and key that contain the customized string. This overrides the default values for these properties. For example:

defaultSort=ascending

field=viewLink

sortField=id

width=4em

resourceBundle=atg.commerce.csr.newMessages

resourceKey=new-view-order

isVisible=true

Configuring Column Sorting

1. In the appropriate properties file for the column, set the defaultSort property to either ascending or descending. Removing the property or setting the property to an empty string will remove sorting. For example:

defaultSort=ascending

field=viewLink

sortField=id

width=4em

resourceBundle=atg.commerce.csr.Messages

resourceKey=view-order

isVisible=true

2. To configure a Dojo-grid column to sort on a field other than the data field that is rendered in the column, set the sortField to any field in the data model.

For example, your column might display a data field containing an HTML link or JavaScript, such as viewLink, which is not appropriate for sorting. By setting the

Page 110: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 0 2

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μsortField property to ID, the column can still be sorted by the corresponding ID property.

3. Configure an HTML-grid column by configuring the /atg/svc/agent/ui/ CustomerProfileSearchUIConfiguration.properties or /atg/commerce/custsvc/order/OrderSearchUIConfiguration.properties files.

Customizing a Column Width

1. In the properties file for the column, update the width property to the desired CSS width specification, for example. 4em.

2. To set the column width to fill the remaining space on the screen, set the width to auto.

Configuring the PageFragment Component

The table and column configuration components use the PageFragment component in Web UI to reference JSP pages located in the /atg/web/PageFragment directory.

URL – the URL of the page to include

servletContext – the context root of the application that contains the page

The following is an example of the /atg/commerce/custsvc/ui/tables/order /ColumnRendererPage:

$class=atg.web.PageFragment

URL=/include/order/columnRenderer.jsp

servletContext=DCS-CSR

Customizing Column Content

The data renderer page displays the content to render within the column.

Column Content using Dojo Grids

By default, the data renderer page is called for each column when the grid items are iterated. The following parameters are passed to the data renderer page:

Parameter Description

field The string identifier of the column to render as defined in the ColumnConfiguration object.

colIndex The zero-based index of the column.

Page 111: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 0 3

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ[bean] The object(s) containing the data for the grid item. They will vary depending on the

data being rendered. For an order, the item is a single orderItemMap bean.

The following is an example from the /web-apps/DCS-CSR/include/order/columnRenderer.jsp file:

<dsp: getvalueof var="field" param="field"/>

<dsp: getvalueof var="colIndex" param="colIndex"/>

<dsp: getvalueof var="orderItemMap" param="orderItemMap"/>

<c: choose>

<c: when test="${field == 'id'}">

"id": "${orderItemMap.id}",

</c: when>

<c: when test="${field == 'viewLink'}">

<fmt: bundle basename="atg.commerce.csr.Messages">

"viewLink": "<a href=\"#\" class=\"blueU\" title=\"

<fmt: message key="view-order"/>\"

onclick=\"atg.commerce.csr.order.viewExistingOrder(\'${orderItemMap.id}\',\

'${orderItemMap.state}\');return false;\">${orderItemMap.id}</a>"

</fmt: bundle>

</c: when>

...

Column Content using HTML Tables

The data renderer page displays the content to render within the column. By default, the data renderer page is called for each column heading and data cell. The following parameters are passed to the data renderer page:

Parameter Description

field The string identifier of the column to render as defined in the ColumnConfiguration object

customerItemMap The current customer item being rendered

resourceBundle The resource bundle that defines the resource keys

resourceKey The key that maps to the resource string

isPopup Identifies if the search table is a pop up. For example, the customer search from the Shopping Cart page is a pop up table

isHeading Identifies if a heading should be rendered

Page 112: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 0 4

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ

Configuring Column Content

The data renderer page displays the content to render within the column. By default, this page is called for each column when the grid items are iterated. The following parameters are passed to the data renderer page each time it is included:

field - The string identifier of the column to render as defined in the ColumnConfiguration object

colIndex - The zero-based index of the column

[bean] - The object(s) containing the data for the grid item. This varies depending on the data being rendered. For example, for an order, the item is a single orderItemMap bean.

Before customizing the data renderer page, perform the following steps:

1. Create a new application module for customizations. Include this module when starting JBoss. Refer to the ATG Programming Guide for information on creating new application modules and the ATG Installation and Configuration Guide for information on starting JBoss.

2. Locate the properties file that defines the column configuration.

3. Inside the customization module, create an empty properties file at the corresponding path.

Customizing the Data Render Page

1. Create a new JSP file in the module that will render the customized data.

2. In this module, create a new PageFragment properties file under /atg/commerce/custsvc/ui/tables. For example, create a NewColumnRendererPage.properties file.

3. In the properties file for the page fragment, set the URL and servletContext to reference the JSP page created in the customization module. For example:

# @version $Id: //application/DCS-CSR/atg/commerce/custsvc/ui/tables/

order/NewColumnRendererPage.properties#1 $$Change: 523100 $

$class=atg.web.PageFragment

URL=/include/order/newColumnRenderer.jsp

servletContext=DCS-CSR

4. In the properties file for the column or grid, update the dataRendererPage property to point to the PageFragment properties file. For example:

dataRendererPage=NewColumnRendererPage

Example: Customizing Column Content

This example replaces the Origin column in the default application with a Last Modified column in the Order History grid.

Page 113: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 0 5

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ1. In the resource bundle at /acme/resources/Resources.property, add a new key

for the column title.

lastModifiedDate=Last Modified

To avoid a recompile of the JAR, add both the new resource bundle and the new key into your <ATG10dir>/locallib directory. You must restart your server once you have created the key.

2. In the sample application, create a grid properties file at /atg/commerce/custsvc/ ui/tables/order/OrderHistoryGrid.properties to override the default file. Override the columns property with the new columns; however, ensure that the invisible columns are included so that the order links work correctly:

invisible data columns: DBState

columns=\

/atg/commerce/custsvc/ui/tables/order/Toggle,\

/atg/commerce/custsvc/ui/tables/order/ViewLink,\

/atg/commerce/custsvc/ui/tables/order/Total,\

/atg/commerce/custsvc/ui/tables/order/ItemCount,\

/atg/commerce/custsvc/ui/tables/order/ItemSummary,\

/atg/commerce/custsvc/ui/tables/order/SubmittedDate,\

/atg/commerce/custsvc/ui/tables/order/LastModified,\

/atg/commerce/custsvc/ui/tables/order/State,\

/atg/commerce/custsvc/ui/tables/order/SelectLink,\

/atg/commerce/custsvc/ui/tables/order/DBState

3. In the sample application, create the properties file for the column at /atg/commerce/custsvc/ui/tables/order/LastModified.properties that contains the configuration for the new column:

$$Change: 523100 $

$class=atg.svc.agent.ui.tables.ColumnConfiguration

field=lastModified

width=5em

resourceBundle=acme.resources.Resources

resourceKey=lastModifiedDate

defaultSort=descending

isVisible=true

dataRendererPage=/atg/commerce/custsvc/ui/tables/order/

LastModifiedRendererPage

4. In the sample application, create the properties file for the content page at /atg/commerce/custsvc/ui/tables/order/

LastModifiedRendererPage.properties:

$class=atg.web.PageFragment

URL=/panels/order/lastModifiedRenderer.jsp

servletContext=/Sample-DCS-CSR-App

Page 114: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 0 6

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ5. In the sample application, create a JSP page at the location referred to by the page

configuration. The JSP renders the last modified date property from the order:

<%@ include file="/include/top.jspf"%>

<dsp: page>

<fmt: bundle basename="acme.resources.Resources">

<dsp: getvalueof var="field" param="field"/>

<dsp: getvalueof var="colIndex" param="colIndex"/>

<dsp: getvalueof var="orderItemMap" param="orderItemMap"/>

<c: choose>

<c: when test="${field == 'lastModified'}">

"lastModified": "${orderItemMap.lastModifiedDate}"

</c: when>

<c: otherwise>

</c: otherwise>

</c: choose>

</fmt: bundle>

</dsp: page>

6. Test and verify that the last modified date column is rendered in the grid.

Note: Default date formats can be modified using the webAppResources.properties file in the /WEB-INF directory.

Example: Creating Calculated Content

The following provides an example that returns calculated content.

1. Follow the steps for creating customized content, as outlined in the Customizing Column Content section.

2. Create a JSP page that returns a calculation of one or more data items. For example:

<%@ include file="/include/top.jspf"%>

<dsp: page>

<fmt: bundle basename="acme.resources.Resources">

<dsp: getvalueof var="field" param="field"/>

<dsp: getvalueof var="colIndex" param="colIndex"/>

<dsp: getvalueof var="orderItemMap" param="orderItemMap"/>

<c: choose>

<c: when test="${field == 'totalNoTax'}">

<dsp: tomap var="priceInfo" value="${orderItemMap.priceInfo}"/>

<c: set var="totalValue"><dsp: valueof converter="currency"

value="${priceInfo.amount+priceInfo.shipping}"/></c: set>

"totalNoTax": "${totalValue}",

</c: when>

...

3. Test and verify that the calculation is rendered in the grid.

Modifying Columns

The following steps provide information on how to add, delete or reorder columns.

Page 115: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 0 7

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μAdding a Column

1. Follow the steps above to customize column content to create the new column. However, instead of opening an existing column configuration file, create a new properties file for the column.

2. Set the column properties as outlined above.

3. Open the properties file for the grid under /atg/commerce/custsvc/ui/tables and insert the column using the full Nucleus path to the column configuration component in the desired location of the columns list.

Removing a Column

1. Open the properties file for the grid under /atg/commerce/custsvc/ui/tables.

2. Delete the column identifier from the columns list.

Reordering Columns

1. Open the properties file for the grid under /atg/commerce/custsvc/ui/tables.

2. Reorder the column identifiers within the columns list.

Example: Adding a New Column to the Order Search Results

1. Create a new column as outlined above in the Adding a Column section.

2. Add your new column to the order-output-config.xml file. Adding the store-as-meta-index parameter allows your search engine to store the data within this column in a sort-enabled format. For example, to add a Last Modified column, you would create the following:

<item item-descriptor-name="order">

<meta-properties>

<property name="lastModifiedDate" type="date" store-as-meta-

index="false" />

</meta-properties>

</item>

3. Run the /dyn/admin/nucleus/atg/commerce/search/ OrderOutputConfig/bulkload method.

4. Create a property file for the new column in the /atg/commerce/custsvc/ui/ tables/order/search directory. Using the LastModifiedDate example, you would create a /atg/commerce/custsvc/ui/tables/order/search/ LastModified.properties file. For example:

$class=atg.svc.agent.ui.tables.ColumnConfiguration

field=lastModified

sortField=lastModifiedDate

width=5em

resourceBundle=acme.resources.Resources

resourceKey=lastModifiedDate

defaultSort=descending

isVisible=true

Page 116: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 0 8

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ

dataRendererPage=/atg/commerce/custsvc/ui/tables/order/search/

LastModifiedRendererPage

5. Create a new dataRendererPage property file in the location indicated in the new column property file you just created. This file will identify the URL page to use, as well as the context application.

Using the previous example, you would create a /atg/commerce/custsvc/ui/ tables/order/search/LastModifiedRendererPage.properties file that contained the following:

$class=atg.web.PageFragment

URL=/panels/order/search/lastModifiedRenderer.jsp

servletContext=/Sample-DCS-CSR-App

6. Create the new JSP file at the location identified above in the URL parameter.

When you create the JSP file use the isHeading parameter to determine whether to render a heading or a data row. If rendering a heading you can display the heading title or information can be passed into the orderSearchResultSortHeading.jsp file, which allows users to sort on this column. Note: The sortField used must be the same as what is used in the XML file because this parameter is passed to the search engine. For example:

<%--

Last modified date renderer example for order search table

@version $Id: //application/DCS-CSR/main/sample-app/src/web-apps/Sample-

DCS-CSR-App/panels/order/search/lastModifiedRenderer.jsp $

@updated $DateTime: 2009/04/01 11: 29: 04 $

--%>

<%@ include file="/include/top.jspf"%>

<dsp: page>

<fmt: bundle basename="acme.resources.Resources">

<dsp: getvalueof var="field" param="field"/>

<dsp: getvalueof var="sortField" param="sortField" />

<dsp: getvalueof var="orderItemMap" param="orderItemMap"/>

<dsp: getvalueof var="isHeading" param="isHeading" />

<dsp: getvalueof var="resourceBundle" param="resourceBundle" />

<dsp: getvalueof var="resourceKey" param="resourceKey" />

<c: if test="${empty isHeading}">

<c: set var="isHeading" value="false" />

</c: if>

<c: choose>

<c: when test="${field == 'lastModified' and isHeading=='false'}">

<c: out value="${orderItemMap.lastModifiedDate}" />

</c: when>

<c: when test="${field == 'lastModified' and isHeading=='true'}">

<dsp: include src="/panels/order/orderSearchResultSortHeading.jsp"

otherContext="${CSRConfigurator.contextRoot}">

<dsp: param name="resourceBundle" value="${resourceBundle}"/>

Page 117: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 0 9

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ <dsp: param name="resourceKey" value="${resourceKey}"/>

<dsp: param name="fieldName" value="${sortField}"/>

</dsp: include>

</c: when>

<c: otherwise>

</c: otherwise>

</c: choose>

</fmt: bundle>

</dsp: page>

7. Create the new table column configuration and add the new column information by creating a /atg/commerce/custsvc/order/OrderSearchUIConfiguration. properties file. The following example extends the default values by identifying the number of results per page, as well as enabling search on the new column:

$class=atg.svc.agent.ui.tables.TableConfiguration

$scope=global

columns=\

/atg/commerce/custsvc/ui/tables/order/search/Toggle,\

/atg/commerce/custsvc/ui/tables/order/search/ViewLink,\

/atg/commerce/custsvc/ui/tables/order/search/LastName,\

/atg/commerce/custsvc/ui/tables/order/search/FirstName,\

/atg/commerce/custsvc/ui/tables/order/search/Total,\

/atg/commerce/custsvc/ui/tables/order/search/ItemsReturned,\

/atg/commerce/custsvc/ui/tables/order/search/DateSubmitted,\

/atg/commerce/custsvc/ui/tables/order/search/LastModified,\

/atg/commerce/custsvc/ui/tables/order/search/Originator,\

/atg/commerce/custsvc/ui/tables/order/search/State,\

/atg/commerce/custsvc/ui/tables/order/search/WorkOn

rowsPerPage=3

defaultSortField^=/atg/commerce/custsvc/ui/tables/order/search/

LastModified.sortField

defaultSortDirection^=/atg/commerce/custsvc/ui/tables/order/search/

LastModified.defaultSort

Changing the Item Detail (Hover) Page

The following provides information on changing the page that is displayed for the order detail, which is configured as a hover object.

1. Create a JSP page to render the order item detail in a new application module. If necessary, use the existing item detail page located at /panels/order/ orderDetail.jsp as a template for the new file.

2. Open the properties file for the grid and find the itemDetailPage property. This component contains the URL to the item detail page.

Page 118: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 1 0

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ3. Create a new properties file for the item detail page component under

/atg/commerce/custsvc/ui/tables. Override the servletContext and URL properties to point to the new file.

Configuring Pages with Nucleus Components Some portions of the UI use a technique that makes the rendering of pages, or portions of pages, configurable through Nucleus components. This feature allows you to customize page content without unpacking the web application, modifying its JSP, and then repackaging the modified application. Customization in this context means the addition or replacement of JSP.

Examples of customizations with Nucleus components include the Products View Panel, which is accessed in /panels/catalog/productView.jsp. The Product View Panel contains the ProductInformation panel, the ProductSku panel and the CrossSellItems panels.

Additional pages that can be rendered include the ProductInformationPopup page, which includes the QuickViewSkuTable, the ProductInformation panel and the ProductQuickViewPopup panels. The ProductInformationPopup page is accessed from the item description.

Page 119: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 1 1

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ

Another example of customization includes the SkuProductPopup, which is accessed using the SkuChangePopup. When the SkuChangePopup is activated, the SkuChangePanel and SkuChangeTable, as well as the ProductInformation panel, are displayed.

You can change the SKU of CommerceItem objects in an order. The CSRCartModifierFormHandler contains the handle method handleChangeSKUs() that uses the changeSKUsSuccessURL and changeSKUsErrorURL properties, as well as the pre/post handler methods.

Customization Options

You can use personalization to control who has access to specific content. When customizing your pages, you work with personalization assets such as rules, targeters and segments. If you are working in a multisite environment, personalization assets can be used between multiple sites. For example, the BCC Personalization UI uses a Rules tab that displays and manages multiple Site Override Rules and Site Filters.

Page 120: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 1 2

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μSite filters can be applied to Content Groups and targeters, allowing site-filtered searches. Personalization with Segments, Targeters and Content Groups is defined per site. Scenarios are aware on which site the scenario event has occurred.

For detailed information on personalization and using the Personalization UI, refer to the ATG Personalization Programming Guide.

There are two general options for customizing page content.

Simple Customization – This customization requires the configuration of an alternate URL in a component property. Depending upon requirements, this customization may be all that is required for most customization needs.

Targeting Customization – Targeting customization is useful when one of a number of JSPs could be rendered in a particular situation. In this situation, the decision of which JSP to render depends on complex rules, rules that are expected to change often, or where it in instances where it is necessary to modify these rules without restarting the application.

Targeting Customizations require writing targeting XML rules that contain information such as request attributes, product and or order information, the current customer and the current agent, or other information relevant to the functional area in question. Targeting rules normally target repository items, however, targeting rules target Nucleus components that identify which JSPs to render.

Simple Customization

Simple customization involves writing custom JSPs and configuring Nucleus components to refer to that JSP. For example, to replace the area of the Product View panel that displays product SKUS and allows agents to enter quantities for each SKU, you would modify the /atg/commerce/custsvc/ui/ renderers/ProductSkuRenderer component.

Because renderer components are globally scoped, you can temporarily change the page though the ATG Dynamo Server Admin. All renderer components exist in the Nucleus configuration path at /atg/commerce/custsvc/ui/renderers/. So if you are using JBoss, the SKU rendering component may be located at:

http: //localhost: 8080/dyn/admin/nucleus/atg/commerce/custsvc/ui/

renderers/ProductSkuRenderer/

Changing the url property of this component to point to the new JSP temporarily implements the customization. To make this configuration persistent, you must use a configuration file.

All components live under the Nucleus path /atg/commerce/custsvc/ui/renderers/. There are four components for each renderer:

BaseNameRenderer

BaseNamePageData

BaseNameSourceMap

BaseNameTargeter

Page 121: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 1 3

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μThe BaseNameRendereridentifies the renderer and the renderer information that is used by the targeter, the data and the source map. The renderer contains the properties that are necessary to identify the JSP in particular web-apps. The RenderInfo class creates the render information:

package atg.commerce.csr.rendering;

public class RenderInfo

{

// Some ID string

public String getId() {}

// URL to JSP

public String getUrl() {}

// WebApp name which contains the JSP referenced

// in the Url, or null for current web-app

public String getWebAppName() {}

// Values for use in constructing rules

public Map getRuleOptions() {}

// Options for use in customizing page rendering

public Map getPageOptions() {}

}

The renderer uses properties files to represent both the default and a custom product rendering page. For example, the default product renderer might be defined in the DefaultProductRenderer.properties file:

$class=atg.commerce.csr.rendering.RenderInfo

id=default

url=/renderers/product/generic.jsp

And the custom product renderer may be defined the CustomProductRenderer.properties file:

$class=atg.commerce.csr.rendering.RenderInfo

id=default

url=/renderers/product/custom.jsp

webAppName=Custom App 2.0

The BaseNamePageData component is used by the page as a place to store parameters to the targeting rule. For example, to use the product item that you are viewing in the rule that you are going to execute to determine which page fragment to use for the product, you would store the product item in the PageData component. The PageData component is a map whose keys can be referenced in the rule as pageData.key-name where key_name is a key in the map.

The BaseNameSourceMap holds the container component of the associated targeter. For example, the source map for a targeter may contain the following:

/atg/commerce/custsvc/ui/renderers/ProductViewProductSourceMap.properties:

$class=atg.targeting.TargetingSourceMap

sourceMap=\

RuleData=/atg/commerce/custsvc/ui/renderers/ProductViewRendererRuleData

Page 122: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 1 4

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μThe BaseNameTargeter component is configured to target the RenderInfo configurations, using the ProductREnderer.rules. For example the ProductViewProductRendererTargeter.properties file might contain the following:

$class=atg.targeting.RuleBasedCollectionTargeter

collectionComponents=\

DefaultProductRenderer,\

CustomProductRenderer

# The RuleSet configured above

ruleSetService=ProductViewProductRendererRuleSet

Pages that use renderers reference them using the path and the base name, for example:

<csr: renderer name="/atg/commerce/custsvc/renderers/ProductInformation">

There are optional RenderInfo properties, which include:

pageOptions (Map) - A placeholder for settings used by the page

ruleOptions (Map) - A container for use in targeting rules.

There is also a subclass RenderInfo for additional custom properties. A contextRoot property is available in the atg.commerce.csr.rendering.RenderInfo class, allowing you to identify a web-app within CSC. The web-app is executed when a user’s web browser references a URL that contains the web module’s context root.

For example, if you were to modify a renderer component such as /atg/commerce/custsvc/ui/ renderers/ProductInformationRenderer to identify the contextRoot property of:

contextRoot=/web-app

url=/web-app/test.html

This replaces the contents of the product information panel with whatever would be rendered by visiting http: //machine: port/web-app/test.html.

Targeting Customization

To customize the UI using the JSP targeting rules, one or more renderer component configuration must be added to in the dynamo component path. Each renderer component represents one variation, or one JSP, of the UI to display.

The following example describes the creation of a custom renderer for the SKU display and input area of the Product View panel. The following /atg/commerce/custsvc/ui/renderers components are involved in this example customization:

ProductSkuRenderer: The default renderer for the product SKU area

ProductSkuPageData: A component that will contain data from the enclosing page, such as product or customer information

Page 123: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 1 5

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ ProductSkuSourceMap: The main component container used by the targeting rules.

This component refers to the PageData component above

ProductSkuTargeter: The targeter configuration. This component refers to the SourceMap component above, and one or more Renderer components

To create a targeting customization:

4. Create a new renderer component to represent the custom JSP. The basic properties of each renderer component properties should be made in the /nucleus/ component/path/CustomRenderer.properties file:

# The base class for renderer components.

$class=atg.commerce.csr.rendering.RenderInfo

# An ID that uniquely identifies this renderer component in the

# domain in which it is used. All renderers currently shipped by

# ATG use the value "default" as their ID.

id=custom

# The custom JSP that performs the actual content rendering

url=/file/system/path/customSkuDisplay.jsp

5. Create a default RuleSetService configuration. This component identifies the rules file and contains settings for when that file is loaded. In the /nucleus/component/path/

RuleSetService.properties file, add the following:

$class=atg.targeting.RuleSetService

# Path to rules file

rulesFilePath=/file/system/path/sku.rules

# Settings that control when/if rules files are loaded:

updatesEnabled=true

rulesFileCheckSeconds=0

The values used for updatesEnabled and rulesFileCheckSeconds above are useful when testing targeting rules because they cause the rule file to be reloaded for every request. See the Targeting documentation for more information about these values.

Note: If the default RuleSetService has been configured to always reload targeting rules, it is easier to experiment with rules by changing the file and causing the page to be redisplayed.

6. Create the rules file for the RuleSetService configured Step 2. In the /file/system/path/sku.rules file, add the following:

<ruleset>

<accepts>

<rule op="and">

<rule op="eq">

<!-- pageData is obtained from the SourceMap component -->

Page 124: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 1 6

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ <valueof bean="pageData.product.id">

<valueof constant="prod10001">

</rule>

<rule op=eq>

<!-- target (display) the custom JSP -->

<valueof target="id">

<valueof constant="custom">

</rule>

</rule>

</accepts>

</ruleset>

In the example, the sku.rules file will target the custom renderer only when the product being displayed has a value of “prod10001”. Only the first targeted component is displayed because the TargetingFirstDroplet is used, so while multiple targets may match, only the first matching component’s JSP will be rendered.

7. Update the existing ProductSkuTargeter configuration to refer to the new Renderer component created in Step 1, and to the RuleSetService configured in Step 2.

In localconfig, or another suitable Nucleus config directory, configure the properties of the /atg/commerce/custsvc/ui/renderers/ ProductSkuTargeter/ProductSkuTarger.properties file with the following values:

# The collection of renderer components to be targeted. The

# following configures two renderers, the renderer created in step

# #1, and the default renderer provided with the product.

collectionComponents=ProductSkuRenderer,

/nucleus/component/path/CustomRenderer

# The targeting RuleSetService created in step #2

ruleSetService=/nucleus/component/path/RuleSetService

8. Depending on the state of your Dynamo instance, you may need to restart the server for the settings to take effect.

For in-depth information on working with targeters, refer to the ATG Personalization Programming Guide.

Creating a ProductSkuRenderer

To create a ProductSkuRenderer, modify the atg/commerce/custsvc/ui/renderers/ ProductSkuRenderer component path. The render components that should be extended are atg.commerce.csr.rendering.RenderInfo with atg.commerce.csr.rendering.SkuRenderInfo.

Create new properties that describe how to render each table column. Property names can be actual SKU property names or symbolic names such as price and status. Symbolic properties, or property names that do not represent actual properties of the SKU, specify a JSP in the renderer property.

The ProductSkuRenderer uses the standard pageOptions property to specify form handler, URL properties and other information. The pageOptions properties include:

Page 125: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 1 7

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ# JSP fragment that renders the "Add to Cart" button

actionRenderer=/renderers/order/sku/skuBrowserAction.jsp,

# Form handler to use

formHandler=/atg/…/order/CartModifierFormHandler,

The properties variable includes:

properties=viewItem,id,displayName,price,status,quantity

By default, the ProductSkuRenderer page uses skuItem.propertyName to display the SKU property.

The property renderer specifies optional JSP files that are used to render named cells.

renderer=

viewItem=/renderers/order/sku/viewItem.jsp,

price=/renderers/order/sku/skuPrice.jsp,

status=/renderers/order/sku/inventoryStatus.jsp,

quantity=/renderers/order/sku/quantityInput.jsp

Each fragment renders its column header and column cell

<c: choose>

<c: when test="${area == 'cell'}">

render cell content

</c: when>

<c: when test="${area == 'header'}">

render column header content

</c: when>

</c: choose>

Renderers

The following renderers are available in the /atg/commerce/custsvc/ui/renderers directory. All renderers listed contain the four component files, the *Renderer, *PageData, *SourceMap and *Targeter properties files:

Renderer Rendering JSP Description

CrossSellItems /renderers/order/

crossSellItems.jsp

A renderer for product information cross-sells, a section of a page that by default displays a product image, ID, description and price range.

CustomerSearch /panels/customer/

customerSearch.jsp

A renderer for the Customer Search Page.

CustomerSearchResults /panels/customer/

customerSearchResults.jsp

A renderer for the Customer Search Results page.

Page 126: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 1 8

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μRenderer Rendering JSP Description

CustomerSelectionPopup /renderers/customer/

customerSelection.jsp

A renderer for the Customer Selection popup page.

ItemDescription /renderers/order/

itemDescription.jsp

A renderer for the description of a product in an order. It is used in the existing order view and the order confirmation panel.

ProductInformation /renderers/order/

productInformation.jsp

A renderer for product information that displays on the Product Quick View panel, the SKU Change panel and the Read-Only Product view.

ProductQuickViewPopup /renderers/order/

productQuickView.jsp

A renderer for the Product Quick View popup page.

ProductReadOnlyPopup /renderers/order/

productReadOnly.jsp

A renderer for the product view page, specifically the read-only product information popup.

ProductSku /renderers/order/

productSkus.jsp

A default renderer for SKU items in the SKU browser.

ProductViewPanel /renderers/order/

productView.jsp

A default renderer for the product view page.

QuickViewSkuTable /renderers/order/

productSkus.jsp

A default renderer for SKU items in the SKU browser that displays an array of SKU properties to be displayed in the SKU table.

ReturnShippingAddress /panels/order/returns/

returnShippingAddress.jsp

A default renderer for the returns line item page shipping address.

ReturnsLineItem /panels/order/returns/

returnItemsLineItem.jsp

A default renderer for a line item on the Returns Item page.

ShippingAddressTable /renderers/order/

shippingViewPanel.jsp

A default renderer that displays the shipping information contained on the Order View page

SkuChangePanel /include/order/product/

skuChangePanel.jsp

A renderer used on the shopping cart when a line item has been edited to change the SKU.

SkuChangeTable /renderers/order/sku/

skuChangeAction.jsp

/renderers/order/

productSkus.jsp

A default renderer for displaying the SKU changes in the SKUChangePanel.

Page 127: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 1 9

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ

Customization Information

Custom Renderer components do not follow the naming convention of components involved in the renderer configuration. Custom Renderer components may exist in any Nucleus component path. When working with rule data:

The custom renderer is targeted by ID in the example above, but any property of the atg.commerce.csr.rendering.RenderInfo class, or subclass, can also be used in the targeting rules.

The SourceMap component, ProductSkuSourceMap in the case of this example, contains data from the current environment, including data calculated on the page in the pageData property of the SourceMap. This data is available for use in targeting rules.

Flexible Customization uses a Targeter to target a collection of renderer components, so there are no repository items involved. For example: atg.targeting.RuleBasedCollectionTargeter.

Targeting rules data is contained in the BaseNameSourceMap component, but can use data from the page, as well as global, session, or request scoped data:

Agent Profile

Customer Profile

Shopping Cart

Customizing the Order Summary Panel

The Order Summary panel, which is available to the agent when using the Commerce tab, displays order status information. It also presents links based on the state of the order and where the agent is in the order process. The Order Summary display is triggered when the agent performs a specific action or navigates to a specific page.

Note: Page navigation changes take precedence over action changes.

The following actions trigger an update of the Order Summary display:

Select an order, which also changes the active order in the Global Context Area

Add a product to the shopping cart

Cancel an exchange from within the exchange process

Cancel a refund from within the refund process

The following processes trigger an update of the Order Summary display:

Modification of an order on the Shopping Cart, Shipping Address, Shipping Method, Billing, Review Order and Confirmation pages

Scheduling a new or updating an existing schedule using the Schedule page

Page 128: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 2 0

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ A Return using Return Items, Return Type or the Return Confirmation pages

Exchanges

To customize the Order Summary panel, override the Nucleus configuration files located in the config/atg/commerce/custsvc/ordersummary directory. Then copy and modify the JSP files in DCS-CSR.war/panels/ordersummary.

Adding a New Order Summary Step

1. If the new step fits into one of the pre-existing paths, such as modify order or returns, add a new properties file to the configuration. If necessary, create a new JSP file. Pre-existing paths are indicated by the use of a task-based name, such as exchange, modify, return, template, complete and submitted.

The properties files have the following entries:

page= indicates the JSP file to display when the agent is in the step. If necessary, add a new JSP file and add it to the page entry.

content= indicates the web-app that contains your JSP files. If you do not indicate the web-app, then the app server will try to find your new JSP in the DCS-CSR web application. Placing your JSP in the DCS-CSR web app for testing is appropriate, but JSPs should be moved into your own web app for production. Additionally, this will prevent your JSPs from being overwritten during any subsequent patch upgrades.

visibleWhenInSteps= is a comma separated list of the steps where the JSP should be displayed. The panel stack’s ID is used to identify the step. Use this for paths where steps appear immediately after the step on which the agent is working. Leave the list blank if the step should always remain visible.

completeWhenInSteps= is a comma separated list of the steps where the step should be in the complete state. Completion is indicated when the step shifts from showing edit links to display the text “complete”. These steps are performed after the step in which the agent is working. Leave the list empty if the step is always complete.

2. Edit the properties files of the other steps in the path to provide information on the new step. For example, add the ID of the new step to the visibleWhenInSteps= list of the steps before this new step in the path when the agent is in the new step.

3. Ensure that one of the panels in the new panel stack calls the JavaScript function atg.progress.update('someIdStringHere'), passing the ID of the panel stack. This lets the progress bar know it needs to update itself, and indicates where the agent is in the process.

4. To add the JSP into your web applications, modify the Nucleus configuration properties files to identify which web-app contains the JSP file. For example:

path=/panels/ordersummary/specialOffers.jsp

context=/my-web-app

Editing an Existing Order Summary Step

1. Copy an existing JSP file and rename the file.

Page 129: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 2 1

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ2. Modify the JSP. For example, to modify the template billing step so that it is visually

different than the modifiable order billing step, copy the existing billing JSP file and make the changes as needed.

Customizing E-Mail You can configure how CSC manages customer profiles.

Note: These components are modified using the ACC.

Configuring E-mail Notifications

When an agent creates a new customer profile, a password is automatically generated for the customer’s account, and an e-mail notification is typically sent to the customer’s e-mail address. The /atg/svc/agent/UI/Formhandlers/CustomerProfileFormHandler component has several properties for managing new account e-mail notifications:

Property Name Description

sendNewAccountEmails If true, an e-mail containing the new account login and password is generated and sent to the customer. Default is true.

persistNewAccountEmails If true, new account e-mails are persisted in the customer’s profile before they are sent. Default is false.

newAccountTemplateEmailInfo The atg/svc/email/ component creates the e-mail message.

sendNewAccountEmailInSeparateThread If it is a new account, e-mail is sent in a separate thread. The default is true.

For information about configuring a TemplateEmailInfo component, see the ATG Personalization Programming Guide.

Automatically Sending E-mail for Orders

To configure an automatic e-mail to be sent when an order is created or updated, use the /atg/commerce/custsvc/order/CommitOrderFormHandler.properties:

# Confirmation Email Settings

autoSendEmail=false

autoSendNewOrderEmail=false

autoSendUpdateOrderEmail=false

Page 130: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 2 2

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μBy default, these properties are set to false. To enable an automatic e-mail whenever a new order is created, the autoSendEmail and autoSendNewOrderEmail properties should be set to true. To enable an automatic e-mail whenever an order is updated, the autoSendEmail and autoSendUpdateOrderEmail properties should be set to true.

New Password Configuration

When an agent generates a new password for a customer in the CSC, the customer’s profile must have a valid e-mail address so the new password can be e-mailed to the /atg/svc/agent/UI/ Formhandlers/CustomerProfileFormHandler component has several properties for managing e-mail notifications:

Property Name Description

sendResetPasswordEmails If true, an e-mail containing the new password is generated and sent to the customer. Default is true.

resetPasswordtemplateEmailInfo The resetPasswordTemplateEmailInfo component that creates the e-mail message. Default is ForgotEmailTemplateInfo (in /atg/svc/email/).

sendResetPasswordEmailInSeparateThread If true, the reset password e-mail is sent in a separate thread. The default is true.

For information about configuring a TemplateEmailInfo component, see the ATG Personalization Programming Guide.

Configuring Order Confirmation E-Mails

It is possible to configure e-mail confirmations that occur once an order has been placed. The /atg/commerce/custsvc/util/CSRAgentTools allow you to configure order confirmation e-mails.

Property Name Description

confirmationEmailMap

NEW_ORDER /atg/commerce/custsvc/profile/NewOrderEmailInfo

ORDER_UPDATE /atg/commerce/custsvc/profile/OrderUpdateEmailInfo

ORDER_EXCHANGE /atg/commerce/custsvc/profile/OrderExchangeEmailInfo

ORDER_RETURN /atg/commerce/custsvc/profile/OrderReturnEmailInfo

Page 131: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 2 3

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μA new e-mail information component can be associated with any of the keys to override the default e-mail component.

If you are working in a multisite environment, you can identify the site in the order objects to include site information in different parts of the configuration e-mail. For example, you could enter all of the From field values into a branch based on the order’s submit site. Additionally, you could add a property to the From site object and reference that property based on the order’s submit site.

Configuring E-Mail Templates

E-mail confirmations are sent for the following activities. CSC provides a default e-mail template implementation for each of these:

New Account Registration

New Account Registration Following Checkout

Password Reset

New Order Confirmation

Order Modification Confirmation

Return Confirmation

Exchange Confirmation

The e-mail information component can be reconfigured to use a different templateURL property, which points to a different JSP page specifying a different template.

To change an e-mail template, set the templateURL property of any of the following TemplateEmailInfo components:

/atg/svc/email/NewAccountTemplateEmailInfo

/atg/commerce/custsvc/profile/NewAccountEmailInfo

/atg/svc/email/ResetPasswordTemplateEmailInfo

/atg/commerce/custsvc/profile/NewOrderEmailInfo

/atg/commerce/custsvc/profile/OrderExchangeEmailInfo

/atg/commerce/custsvc/profile/OrderReturnEmailInfo

/atg/commerce/custsvc/profile/OrderUpdateEmailInfo

Environment Management An environment is the collective state of agent’s current working context. An environment monitoring interface is defined for integrating applications with environment management. Use environment monitoring to coordinate changes to the global environment objects.

CSC exposes the following global objects to the environment management system:

Page 132: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 2 4

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ Current Order - The order the agent is currently working on

Current Catalog - The catalog context the agent is current working in

Current Pricelist - The currently selected price list. This price list is used for pricing operations on the catalog, cart and checkout pages

Current Site – The currently selected site. Agent actions, such as change order, start new call will maintain the appropriate state per site.

Site versus Catalog Mapping - In the product catalog page, by default the site’s default catalog will browse and search the products. If the agent chooses a different catalog for the site, the currently selected catalog is used for browse and product searches. The mapping is cleared when the agent switches from the current sharing group to another sharing group.

CSREnvironmentTools

Class atg.commerce.csr.environment.CSREnvironmentTools

Component /atg/commerce/custsvc/environment/CSREnvironmentTools

This component provides the core API for applying changes to the CSC environment objects. It also provides the API for accessing the CSC managed environment objects.

The CSRENvironmentTools component also contains the doSitesShare method, which checks to see if the current site and the desired new site share the same site group. If both sites share the same site group, the method returns true.

CSREnvironmentMonitor

Class atg.commerce.csr.environment.CSREnvironmentMonitor

Component /atg/commerce/custsvc/environment/CSREnvironmentMonitor

This component detects changes, generates warnings and applies changes for CSC managed objects.

The CSREnviornmentMonitor component contains the following methods:

getUsersCatalog() calls the core ATG Commerce API to find the right catalog

getUsersPriceList() calls the core ATG Commerce API to find the right price list

getUsersSalePriceList() calls the core ATG Commerce API to find the right sales pricelist

generateDependentDetailsForActiveSiteChange() will change the order, catalog, pricelist and sale price list if the site is changed.

Page 133: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 2 5

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ generatesiteChangeForOrderChange() generates the site change for the order

change. If the order contains the submitted state, the submitted site is loaded as the current site.

CSREnvironmentConstants

Class atg.commerce.csr.environment.CSREnvironmentConstants

This static class exposes the environment change keys and their input parameters defined by CSC. orderId is an example of an input parameter name required to execute the changeOrder change.

EnvironmentChangeFormHandler, ChangeOrder

Class atg.svc.agent.environment.EnvironmentChangeFormHandler

atg.commerce.csr.environment.ChangeOrder

Component /atg/commerce/custsvc/environment/ChangeCatalogAndPriceList

/atg/commerce/custsvc/environment/ChangeOrder

/atg/commerce/custsvc/environment/CreateNewOrder

These components are used to perform CSC environment changes from UI gestures.

The existing EnvironmentChangeFormHandler is used to change a site. The following is the sample form for changing sites

<svc-ui: frameworkUrl var="errorURL" panelStacks=""/>

<svc-ui: frameworkUrl var="successfulSiteChangeURL"

panelStacks="globalPanels,cmcShoppingCartPS" tab="commerceTab"/>

<%/*form used to change a site */%>

<dsp: form style="display: none" id="atg_commerce_csr_loadExistingSiteForm"

formid="atg_commerce_csr_loadExistingSiteForm">

<dsp: input type="hidden" name="errorURL" value="${errorURL}"

bean="/atg/svc/agent/environment/ChangeSiteFormHandler.errorURL" />

<dsp: input type="hidden" name="successURL" value="${successfulSiteChangeURL}"

bean="/atg/svc/agent/environment/ChangeSiteFormHandler.successURL" />

<dsp: input type="hidden" name="siteId" bean="/atg/svc/agent/environment/

ChangeSiteFormHandler.inputParameters.siteId" value=""/>

<dsp: input type="hidden" priority="-10"

bean="/atg/svc/agent/environment/ChangeSiteFormHandler.changeEnvironment"

value=""/>

</dsp: form>

The following is the ChangeSiteFormHandler.properties configuration for changing sites:

Page 134: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 2 6

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ/atg/svc/agent/environment/ChangeSiteFormHandler.properties

$class=atg.svc.agent.environment.EnvironmentChangeFormHandler

$scope=request

environmentTools=/atg/svc/agent/environment/EnvironmentTools

transactionManager=/atg/dynamo/transaction/TransactionManager

messageTools=/atg/web/messaging/MessageTools

confirmURL=include/environment/confirm.jsp

confirmPromptURL=include/environment/changePrompt.jsp

environmentChangeKey=changeSite

environmentChangeState=/atg/svc/agent/environment/EnvironmentChangeState

doWarnings=true

doTicketDispositionPrompt=true

applicationName^=/atg/svc/agent/environment/

EnvironmentTools.agentApplicationName

ticketingTools=/atg/svc/agent/ticketing/TicketingTools

EnvironmentTools

When you are creating a multiple site environment, changing one environment object may affect another environment object. For example, if you change an order, it may change the site, price list, sale price list, user, ticket or other environment-managed objects.

In a multisite setting, environment management recognizes Site support and manages site related effects. Because basic Site Environment management support is added to Service Center, CSC related functions like pricing model holder initialization, site dependent changes or order dependent changes are supported using the /atg/svc/agent/environment/EnvironmentTools API.

The atg.svc.agent.environment.EnvironmentTools API is configured as follows:

/atg/svc/agent/environment/EnvironmentTools.java

public void addChangeSiteDetail(String pNewSiteId,

EnvironmentChangeState

pEnvironmentChangeState) throws EnvironmentChangeDetailConflict,

EnvironmentException {}

public Site getCurrentSite() throws EnvironmentException {}

public void setCurrentSite(Site pSite) throws EnvironmentException {}

The following methods are used to get or set site information:

addChangeSiteDetail - This method adds site change details.

getCurrentSite - This method obtains the current site from the CurrentSiteHolder

setCurrentSite - This method sets the current site in the CurrentSiteHolder

The ServiceEnvironmentMonitor API also sets site information:

/atg/svc/agent/environment/ServiceEnvironmentMontior.java

Page 135: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 2 7

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ/atg/svc/agent/environment/ServiceEnvironmentMonitor.java

protected void

generateInitialChangesForChangeSite(EnvironmentChangeState

pEnvironmentChangeState) throws EnvironmentException {}

public void revertSiteChangeDetail(EnvironmentChangeDetail

pEnvironmentChangeDetail,EnvironmentChangeState

pEnvironmentChangeState) {}

public void applySiteChangeDetail(EnvironmentChangeDetail

pEnvironmentChangeDetail, EnvironmentChangeState

pEnvironmentChangeState)throws EnvironmentException {}

The ServiceEnvironmentMonitor uses the following methods:

generateInitialChangesForChangeSite - generates initial changes for the change site.

applySiteChangeDetail – This method applies the site change information in the CurrentSiteHolder

revertSiteChangeDetail – This method reverts site details to the old site details that are set in the CurrentSiteHolder

Environment Management and Site Context

Sites are defined with a Site ID. Environment management monitors the site environment using the CurrentSiteHolder object. Whenever the site is changed, the CurrentSiteHolder is updated with the current site.

For each request siteContext is set using the CurrentSiteContextRuleFilter component in atg.multisite.SiteContextPipelineServlet. If CurrentSiteContextRuleFilter returns a siteId, then the siteId is set as the site context for the entire request. The CurrentSiteContextRuleFilter gets the current site from the CurrentSiteHolder.

If the CurrentSiteHolder.currentSite is empty, then the site context is not set. If the site context is not set, then environment management picks the catalog and price list based on the current user. If the site context is set, then environment management picks the catalog and price list based on the current site and user.

Configuring Ticketing CSC works with ATG Ticketing. The following section provides information on configuring a ticketing environment specific to CSC.

Configuring Ticket Disposition

CSC includes one ticket disposition monitor, /atg/commerce/custsvc/ ticketing/CSRTicketDispositionMonitor, which it adds to the ticketing manager’s ticketDispositionMonitors property. This ticketing monitor’s shouldDiscard() and

Page 136: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 2 8

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μshouldDiscardImmediately() methods both return false if a ticket contains any of the activity types listed in the monitor’s nonDiscardableActivityTypes property.

This property is an array of activity type names. By default, nonDiscardableActivityTypes is set to a list of all ATG Commerce activity types, which means that CSRTicketDispositionMonitor will not allow a ticket to be discarded if there are any Commerce activities associated with the ticket. You can change this behavior by setting the value of this property to a different list of activity types. For additional information on ticketing, refer to the ATG Service Installation and Configuration Guide.

Configuring Specific Ticket Activities

Because many of the actions taken by an agent in CSC are captured in the agent audit log, as well as ticket activities, CSC provides a convenient way of creating a ticket activity from an AgentEvent.

The process mirrors that of recording an audit event whereby an AgentEvent is routed to a recorder component, which saves the information in the repository. The recorders are mapped by the activity type. CSC provides classes for the most common cases of creating activities from the events.

The following steps outline what is needed to record an AgentEvent as a ticket activity. This assumes that the AgentEvent and audit log repository definitions are already in place. Refer to Configuring Audit Logging.

1. Define the new activity type in the TicketingRepository. You can define the ticket activity much the same as the audit log definition for the same type. However, the ticket activity definition can be defined as needed to meet your requirements. However, the only source for the ticket activity information is the AgentEvent. For additional information, refer to the Defining New Ticket Activity Types section in the ATG Service Installation and Configuration Guide.

2. Create the recorder components. The recorder component generates a ticket activity from an AgentEvent. CSC provides two classes for the most common cases, the atg.commerce.csr.ticketing.TicketingActivityRecorder class and the TicketingPropertyUpdateRecorder class.

The TicketingActivityRecorder class is the base class for a recorder and supports the following features:

Automatic creation of the ticket activity repository item based on the type contained in the AgentEvent

The ability to configure a list of event properties that map to ticket activity properties. The recorder automatically sets the values in the activity from those in the AgentEvent

Automatic addition of the activity to the ticket ID referenced in the AgentEvent

Automatic association of the order with the ticket. (Note that this only occurs when the AgentEvent contains an orderId property)

The ability to configure if the order related ticket activity should be added when the order is in a transient state

Automatic saving of the ticket after adding the activity

Page 137: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 2 9

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μThe TicketingPropertyUpdateRecorder class is an extension of TicketingActivityRecorder that supports recording an AgentEvent that contains a List or PropertyUpdates. For example:

/myapp/recorders/LoyaltyPointRecorder

class=atg.commerce.csr.ticketing.TicketingActivityRecorder

applicationName=MyApplicationName

internalProfileRepository=/atg/userprofiling/InternalProfileRepository

orderRepository=/atg/commerce/order/OrderRepository

profileRepository=/atg/userprofiling/ProfileAdapterRepository

ticketingManager=/atg/ticketing/TicketingManager

customProperties=\

pointsRedeemed=pointsRedeemed,\

orderId=orderId

CSRAgentTools=/atg/commerce/custsvc/util/CSRAgentTools

ordersPropertyName=orders

saveTransientOrderActivities=false

3. Register the recorder component by activity type. Map the new recorder component by its activity type so an AgentEvent of the same type will be routed to it for processing. For example:

/atg/commerce/custsvc/ticketing/TicketingEventListener.properties#13

$$Change: 447205 $

eventTypeToRecorderMap+=\

RedeemedLoyaltyPoints=/myapp/recorders/LoyaltyPointRecorder

Configuring Audit Logging CSC uses audit logging to record actions performed by CSC agents in the agent audit repository.

Audit log records are saved in a standard GSA repository /atg/agent/logging/AuditRepository. The audit log repository items provide an audit trail of actions perform by the agent.

Although audit log repository items can be added, update, or removed using the standard GSA repository API, a series of components and classes are available to standardize the process of adding new items to the repository.

Note: There is no public API, other than direct GSA access, to update or remove audit log repository items.

Page 138: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 3 0

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μViewing Audit Logs

CSC uses a system called audit logging to record actions performed by agents. Each type of action has a corresponding repository item type. These repository item types are used to log agent activity in the agent audit repository.

You can use the ACC to view these repository items:

1. Select the Content task area from the main ACC menu.

2. Select AuditAgentRepository from the submenu.

The system displays the following screen:

3. From the Items of Type drop-down list, select the type of item to view, and then click List.

If you select the first entry in the drop-down list, Agent Audit Record, the system displays all of the items in the repository, regardless of type. If you select any other entry, the system displays only the items of the specified type.

4. In the left pane, click the item to view.

The system displays the log information in the right pane. For example:

Page 139: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 3 1

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ

Adding a New Agent Audit Log Record

The following steps occur when creating an audit log record:

1. Generate an atg.agent.events.AgentEvent event object that contains all the relevant data to be recorded. The AgentEvent identifies the item-descriptor type of audit record and has properties containing relevant information for the log.

2. Fire the AgentEvent object through the AgentMessageSource.sendAgentEventMessage API. AgentMessageSource is defined as the message source for all AgentEvent events in Dynamo Messaging.

3. The AgentAuditLogger component is defined as a message sink in Dynamo Messaging and receives the AgentEvent and queues it for distribution to the appropriate AgentAuditRecorder instance.

4. AuditLogRecorder receives the AgentEvent from the AgentAuditLogger and creates the appropriate RepositoryItem sub-type of the agent_audit item-descriptor, as defined in the AgentEvent's type property. The AuditLogRecorder then, sets the item’s properties from the AgentEvent data, and adds it to the AuditRepository.

When creating new audit log records, you must extend the AgentEvent class to pass your new event properties. You should then extend the agent_audit item-descriptor with a new sub-type to store your properties. Finally, you should extend the AgentAuditRecorder.populateCustomProperties() method to copy your custom AgentEvent's properties to your agent_event RepositoryItem sub-type.

Creating a New Agent Audit Log Record

The process outlined below uses creating a loyalty point redemption event as an example.

1. Add a new AgentAudit event subclass for the new audit record.

This may not be necessary if the AgentAudit class has all the necessary properties. In this case, you only need to set the proper type of the event. Every event must extend AgentEvent. The following is an example of a RedeemedLoyaltyPointsEvent:

Page 140: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 3 2

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μpackage atg.commerce.csr.events;

import atg.agent.events.AgentEvent;

public class RedeemedLoyaltyPointsEvent extends AgentEvent {

public static final String CLASS_VERSION = "$Id: $$Change: $";

private static final long serialVersionUID = -5747213631038504108L;

int mPointsRedeemed;

public void setPointsRedeemed(int pPointsRedeemed) {

mPointsRedeemed = pPointsRedeemed;

}

public int getPointsRedeemed() {

return mPointsRedeemed;

}

2. Add the new audit log repository item definition for the new type.

Add an item descriptor to the audit repository for the new agent audit in the/atg/agent/logging/auditrepository.properties file. Add an option to auditType property of the agent_audit item descriptor. For example:

//Add the item descriptor

<item-descriptor name="RedeemedLoyaltyPoints" super-type="agent_audit"

sub-type-value="RedeemedLoyaltyPoints">

<table name="csr_loyalty" id-column-name="id">

<property name="pointsRedeemed" data-type="int" column-

name="points_redeemed" display-name-resource="pointsRedeemed"/>

<property name="orderId" data-type="string" column-name="order_id"

display-name-resource="orderId"/>

</table>

</item-descriptor>

//Add the auditType

<option value="RedeemedLoyaltyPoints" code="1020"/>

3. Create an AgentAuditLogger component using one of the base classes provided or an extension. This component will receive the AgentAudit events of the new type. For example:

/atg/commerce/custsvc/logging/RedeemedLoyaltyPointsEventRecorder

$class=atg.agent.logging.ConfigurableAgentAuditRecorder

customProperties=\

pointsRedeemed=pointsRedeemed,\

orderId=orderId

ConfigurableAgentAuditRecorder provides a convenient way of defining a recorder where the properties of the even map directly to the properties on the audit log repository item.

4. Configure the AgentAuditLogger with the new AgentAuditRecorder component mapped to the appropriate audit type. Add an entry into the eventTypeToRecorderMap property of the /atg/agent/logging/

Page 141: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 3 3

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μAgentAuditLogger.properties component to provide information on the new event recorder. For example,

eventTypeToListenerMap+=RedeemedLoyaltyPoints=/atg/commerce/custsvc/

logging/RedeemedLoyaltyPointsEventRecorder

5. Create an instance of the AgentAudit object and send it using the AgentMessagesource.sendAgentEventMessage API.

private void sendRedeemedLoyaltyPointsEvent

(

String pAgentId,

String pCustomerId,

String pOrderId,

int pPointsRedeemed,

String pTicketId

)

{

RedeemedLoyaltyPointsEvent redeemedLoyaltyPointsEvent = null;

redeemedLoyaltyPointsEvent =

getAgentMessagingTools().createRedeemedLoyaltyPointsEvent();

redeemedLoyaltyPointsEvent.setActivityType

CSRAgentMessagingTools.REDEEMED_LOYALTY_POINTS_TYPE);

redeemedLoyaltyPointsEvent.setPointsRedemeed (pPointsRedeemed);

getAgentMessagingTools().getAgentMessageSource().sendAgentEventMessage

(redeemedLoyaltyPointsEvent, null,

"myApp.events.RedeemedLoyaltyPoint");

return;

}

Disabling Audit Logging Events

To reduce the amount of data stored, you may want the audit logging system to record only certain activities and not others.

You can disable logging of an individual activity type by adding it to the disabledTypes property of the /atg/agent/logging/AgentAuditLogger component. This property is an array of the names of the activity types for which recording is disabled. For example, if you want to disable the recording of profile view events and order view events, you could set this property to ProfileViewed, ViewOrder.

If you want to disable audit logging entirely, set the logEvents property of AgentAuditLogger to false. The following is a list of the eventTypeToListenerMap properties:

Event Type Recorder

ActivateScheduledOrder /atg/commerce/custsvc/logging/

ScheduledOrderEventRecorder

Page 142: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 3 4

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μEvent Type Recorder

AddOrderFixedAmountAdjustment /atg/commerce/custsvc/logging/

OrderManualAdjustmentRecorder

AddPaymentGroup /atg/commerce/custsvc/logging/

PaymentGroupEventRecorder

AddShippingGroup /atg/commerce/custsvc/logging/

ShippingGroupEventRecorder

ApproveOrder /atg/commerce/custsvc/logging/

OrderEventRecorder

CancelOrder /atg/commerce/custsvc/logging/

OrderEventRecorder

ClaimItem /atg/commerce/custsvc/logging/

ClaimItemRecorder

CreateGiftlist /atg/commerce/custsvc/logging/

GiftlistEventRecorder

CreateOrder /atg/commerce/custsvc/logging/

OrderEventRecorder

CreateOrderComment /atg/commerce/custsvc/logging/

CreateOrderCommentRecorder

DeactivateScheduledOrder /atg/commerce/custsvc/logging/

ScheduledOrderEventRecorder

EditPaymentGroup /atg/commerce/custsvc/logging/

PaymentGroupEventRecorder

EditShippingGroup /atg/commerce/custsvc/logging/

ShippingGroupEventRecorder

ExchangeOrder /atg/commerce/custsvc/logging/

ReturnOrderRecorder

GiftItemAddedToGiftlist /atg/commerce/custsvc/logging/

GiftitemEventRecorder

GiftItemQuantityChanged /atg/commerce/custsvc/logging/

GiftitemEventRecorder

GiftItemRemovedFromGiftList /atg/commerce/custsvc/logging/

GiftitemEventRecorder

GrantAppeasement /atg/commerce/custsvc/logging/

GrantAppeasementRecorder

GrantPromotionEvent /atg/commerce/custsvc/logging/

GrantPromotionEventRecorder

Page 143: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 3 5

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μEvent Type Recorder

IgnorePromotionEvent /atg/commerce/custsvc/logging/

IgnorePromotionEventRecorder

ItemAddedToOrder /atg/commerce/custsvc/logging/

CommerceItemEventRecorder

ItemQuantityChanged /atg/commerce/custsvc/logging/

CommerceItemEventRecorder

ItemRemovedFromOrder /atg/commerce/custsvc/logging/

CommerceItemEventRecorder

ModifyGiftlist /atg/commerce/custsvc/logging/

GiftlistEventRecorder

OrderApprovalAddedEvent /atg/commerce/custsvc/logging/

OrderApprovalRecorder

OrderApprovalApprovedEvent /atg/commerce/custsvc/logging/

OrderApprovalRecorder

OrderApprovalRejectedEvent /atg/commerce/custsvc/logging/

OrderApprovalRecorder

PriceOverride /atg/commerce/custsvc/logging/

PriceOverrideRecorder

PriceReturnItem /atg/commerce/custsvc/logging/

PriceReturnItemRecorder

ReceiveReturnItem /atg/commerce/custsvc/logging/

ReceiveReturnItemRecorder

RejectOrder /atg/commerce/custsvc/logging/

OrderEventRecorder

RemoveOrderFixedAmountAdjustment /atg/commerce/custsvc/logging/

OrderManualAdjustmentRecorder

RemovePaymentGroup /atg/commerce/custsvc/logging/

PaymentGroupEventRecorder

RemoveShippingGroup /atg/commerce/custsvc/logging/

ShippingGroupEventRecorder

ReturnOrder /atg/commerce/custsvc/logging/

ReturnOrderRecorder

SaveOrder /atg/commerce/custsvc/logging/

OrderEventRecorder

SplitCostCenter /atg/commerce/custsvc/logging/

SplitCostCenterRecorder

Page 144: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 3 6

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μEvent Type Recorder

SplitShippingGroup /atg/commerce/custsvc/logging/

SplitShippingGroupRecorder

SubmitOrder /atg/commerce/custsvc/logging/

OrderEventRecorder

UpdateScheduledOrder /atg/commerce/custsvc/logging/

ScheduledOrderEventRecorder

ViewCreditCard /atg/commerce/custsvc/logging/

ViewCreditCardRecorder

ViewOrder /atg/commerce/custsvc/logging/

OrderEventRecorder

ViewOrderCostCenters /atg/commerce/custsvc/logging/

OrderEventRecorder

ViewOrderPayment /atg/commerce/custsvc/logging/

OrderEventRecorder

ViewOrderPromotions /atg/commerce/custsvc/logging/

OrderEventRecorder

ViewOrderReturns /atg/commerce/custsvc/logging/

OrderEventRecorder

ViewOrderShipping /atg/commerce/custsvc/logging/

OrderEventRecorder

Using Window Scoped Failover With window scoped failover, upon server failure, an agent working on CSC remains logged in with the current order, ticket, and profile information displayed in the global context area. The agent sees no change because of the failover.

Properties of window scoped components can be targeted for window backup by adding them to the windowBackupPropertyList property of the /atg/dynamo/servlet/pipeline/ WindowScopeManager component. Upon session failover, the configured property values will be restored. These component property values must implement Serializable to be properly backed up.

The following components are failed over by CSC by default, in addition to the components that are failed over by ATG Service:

/atg/commerce/custsvc/order/ShoppingCart.current

/atg/commerce/custsvc/order/ShoppingCart.restorableOrders

Page 145: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 3 7

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ /atg/commerce/custsvc/order/ShoppingCart.cloneEditState

/atg/commerce/custsvc/order/ShoppingCart.loadTime

/atg/commerce/custsvc/order/ShoppingCart.returnRequest

/atg/commerce/custsvc/order/ViewOrderHolder.current

/atg/commerce/custsvc/order/ViewOrderHolder.restorableOrders

/atg/commerce/custsvc/order/ConfirmationInfo.order

/atg/commerce/custsvc/order/ConfirmationInfo.profile

/atg/commerce/custsvc/order/ConfirmationInfo.toEmailAddress

/atg/commerce/custsvc/order/ConfirmationInfo.templateName

/atg/commerce/custsvc/order/ConfirmationInfo.

autoConfirmationEmailAddress

/atg/commerce/custsvc/order/ConfirmationInfo.extraData

/atg/commerce/custsvc/returns/ReturnsDataHolder.returnRequestID

/atg/commerce/custsvc/environment/CurrentPriceListHolder

/atg/commerce/custsvc/environment/CurrentCatalogHolder

/atg/commerce/custsvc/profile/AddressHolder.addresses

/atg/svc/agent/environment/CurrentSiteHolder.currentSite

The following are also window scoped:

/atg/commerce/order/purchase/PaymentGroupContainerService

/atg/commerce/order/purchase/ShippingGroupContainerService

Adding Additional Components

Note: Making modifications to the existing window scoped and session scoped properties files may cause failover to not work as expected.

Add failover components for any customized code that you have written by modifying the WindowScopeManager.properties file in your custom module to add your customized components into the windowBackupPropertyList+=/new/custom/component.properties list.

Configuring Catalog and Price Lists CSC contains two global environment objects used by the application to manage catalogs and orders: current catalog and current price list. The current settings of these objects can be viewed and changed in the Commerce tab submenu.

The current catalog and price list used are specified in the agent’s profile. The catalog and price list are initialized using information from the current customer. When the agent logs in, the current catalog and

Page 146: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 3 8

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μprice list are initialized based on the CSRConfigurator.defaultCatalogId and PriceListManager.defaultPriceList settings. However, when the agent selects a new customer, the current catalog and price list settings automatically adjust to whatever has been assigned to the customer.

Using the Current Catalog

The current catalog determines which catalog is used by the agent when browsing and searching the catalog. If using a multisite environment, the catalogs are site aware.

The value of the current catalog can be set by the following actions:

When the agent first logs in, a new, transient profile is automatically loaded as the active customer. The current catalog is set from the new profile’s assigned catalog. If the profile does not have an assigned catalog, the current catalog is set based on the CSRConfigurator defaultCatalogId property.

When the agent selects a customer from the profile repository to be the active customer, the current catalog is set based on the selected profile’s assigned catalog.

If multisite has been enabled, when an agent selects a site, the default catalog associated with that site will become the current catalog.

The agent can manually select a different catalog using the UI. Once an agent has explicitly selected a catalog, that catalog remains active even if a new customer with a different assigned catalog is selected from the repository. Starting a new call will reset the current catalog and remove the agent’s explicitly selected catalog.

Using the Current Price List

The current price list is only used when the price lists are employed. It determines which price list is used for catalog and order pricing operations. It is also used to determine the pricing locale.

The CSRConfigurtor has a property called usingPriceLists, which must be set to true when the application is using price lists.

The values of the current price list can be set by the following actions:

When the agent first logs in, a new, transient profile is automatically loaded as the active customer. The current price list is set from the new profile’s assigned price list. If the profile doesn’t have an assigned price list, the current price list is set based on the PriceListManager defaultPriceList.

When the agent selects a customer from the profile repository to be the active customer, the current price list is set based on the selected profile’s assigned price list.

When the agent selects an order from the repository to be the active order, the current price list is set based on the first commerce item in the order with a price list assigned. A commerce item’s price info contains a reference to the price list used to the price it.

If multisite is enabled, when the agent selects a site, the price list will change to the price list for that site.

Page 147: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 3 9

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ The agent can manually select a different price list using the UI. Once an agent has

explicitly selected a price list, that price list remains active even if a new customer with a different assigned price list is selected from the repository. Starting a new call will also reset the current price list and remove the agent’s explicitly selected price list.

CSREnvironmentTools

Class atg.commerce.csr.environment.CSREnvironmentTools

Component /atg/commerce/custsvc/environment/CSREnvironmentTools

This component contains the API for gaining access to the current catalog and current price list

CSRAgentTools

Class atg.commerce.csr.util.CSRAgentTools

Component /atg/commerce/custsvc/util/CSRAgentTools

This component contains the API for generating a parameter map for pricing operations that contains the active price list.

ChangeCatalogAndPricelist

Class atg.svc.agent.environment.EnvironmentChangeFormHandler

Component /atg/commerce/custsvc/environment/ChangeCatalogAndPricelist

This form handler component is used to manually change the catalog and price list through the UI.

Defining the Default Catalog

The catalog displayed to the user is derived from the catalog assigned in the profile. If there is no catalog assigned, the defaultCatalogId property of the /atg/commerce/custsvc/util/CSRConfigurator component specifies the catalog to use for anonymous shoppers.

Defining the Default Price List

If your site uses price lists, you must configure the following:

The /atg/commerce/custsvc/util/CSRConfigurator component property usingPriceLists must be set to true. This enables the use of price lists.

Page 148: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 4 0

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ Each customer must be assigned a price list. The defaultPriceListId property of

the /atg/commerce/pricing/pricelists/PriceListManager component specifies the price list to use for anonymous shoppers.

Setting the Pricing Locale

The active customer pricing locale drives the currency and currency codes of prices used in CSC. The active pricing locale may be customized based on the supported currencies of the store.

Class atg.commerce.csr.util.CSRAgentTools

Component /atg/commerce/custsvc/util/CSRAgentTools

The getActiveCustomerPricingLocale() method provides access to the pricing locale and will return the price list locale (if one is specified and price lists are being used). If the price list locale is unavailable, the locale stored in the customer profile will be used. Failing that, if /atg/commerce/custsvc/util/ CSRAgentTools.useRequestLocale=true, the current request locale will be used. If all of these attributes are unavailable, the value of the /atg/commerce/pricing/PricingTools.defaultLocale will be used.

Quick Access Catalogs and Price Lists

Quick access catalogs and price lists are available as sub navigational menus from the catalog and price list menus, allowing quick access the most commonly used catalogs and price lists.

Quick access catalogs and price lists are configured by creating SiteOption items in the /atg/svc/option/OptionRepository and specifying the catalog or price list IDs of the catalogs or price lists that should appear in the quick-access menus. The defaultValue property specifies a list of catalog or price list IDs for the catalogs or price lists to display.

The following is an example of a quick-access catalog site:

<add-item item-descriptor="SiteOption" id="QuickAccessCatalogs">

<set-property name="name" value="QuickAccessCatalogs"/>

<set-property name="accessRight" value="serviceAdminDefaultRight"/>

<set-property name="multiValued" value="true"/>

<set-property name="dataType" value="String"/>

<set-property name="defaultValue" value="catalog10002,masterCatalog"/>

</add-item>

The following is an example of a quick-access price list site:

<add-item item-descriptor="SiteOption" id="QuickAccessPriceLists">

<set-property name="name" value="QuickAccessPriceLists"/>

Page 149: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 4 1

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ <set-property name="accessRight" value="serviceAdminDefaultRight"/>

<set-property name="multiValued" value="true"/>

<set-property name="dataType" value="String"/>

<set-property name="defaultValue" value="listPrices,plist20003,salePrices"/>

</add-item>

Pricing Overview The following section outlines how pricing is performed in CSC and describes the components and API that can be used or modified to change pricing behavior.

Loading Orders and Pricing

CSC prices all modifiable orders when they are first loaded into the current global context, or selected by the agent. The CSREnvironmentMonitor component is responsible for pricing an order that has been selected in the current global context. The entire order is priced using PricingConstants.OP_REPRICE_ORDER_TOTAL as the pricing operation. This is not configurable.

Only the orders that are modifiable are priced when they are selected the global context. You can configure which orders can be modified by CSC based on the state of the order. CSRAgentTools contains API and configurable properties for determining which orders are considered modifiable by state.

The configurable properties in /atg/commerce/custsvc/util/CSRAgentTools are:

#both nonModifiableOrderStates and nonModifiablePaymentGroupStates are

used to determine a non-modifiable order.

nonModifiableOrderStates=REMOVED,\

QUOTED,\

NO_PENDING_ACTION,\

PENDING_REMOVE,\

PENDING_CUSTOMER_RETURN

nonModifiablePaymentGroupStates^=\

/atg/commerce/order/PaymentGroupManager.nonModifiablePaymentGroupStates

Modifiable Order API

The following API determines if an order is modifiable by comparing the order’s current state to the configured values. This API can be extended to perform more robust logic that cannot be determined by state alone:

CSRAgentTools.isOrderModifiable(Order pOrder)

Page 150: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 4 2

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μPrice Lists and Pricing

When configured to use price lists, CSC provides two global context price lists: one for list prices and another for sales prices. CSC takes advantage of a core commerce feature that allows the price lists to be passed into the pricing engine through the extra parameter map to override the default behavior that determines which price list to use. The following core ATG Commerce PricingTools API is used for pricing orders. Note the Map parameter that is included on the API:

public OrderPriceInfo priceOrderTotal(Order pOrder,

PricingModelHolder pPricingModels,

Locale pLocale,

RepositoryItem pProfile,

Map pExtraParameters)

The CSRAgentTools API generates a map that contains the IDs of the current global context price list selections. This API is used by CSC to generate the extra parameter map for pricing operations. CSC has also extended createRepriceParameterMap of all the PurchaseProcessFormHandlers to call this API:

public Map addPriceListParameter(Map pExtraParameters)

The CSRAgentTools API is used for pricing an order that will call addPriceListParameter as part of the process:

public void repriceOrder(String pRepricingOperation, Order pOrder,

PricingModelHolder pUserPricingModels,

Locale pLocale, RepositoryItem pCustomerProfile,

RepositoryItem pAgentProfile,Map pExtraParameters,

PipelineErrorHandler pErrorHandler)

When loading an order into the global context, CSC attempt to extract the correct price lists from the order itself. If the price lists can be determined from the order, they will load into the global context at the same time as the order.

CSREnvironmentTools contains the API for accessing the global context price list selections, setting new global context price list selections and extracting a price list from an order:

public RepositoryItem getCurrentPriceList()

public RepositoryItem getCurrentSalePriceList()

public void setCurrentPriceList(RepositoryItem pPriceList)

public void setCurrentSalePriceList(RepositoryItem pPriceList)

public RepositoryItem getListPriceListFromOrder(Order pOrder)

public RepositoryItem getSaleListPriceListFromOrder(Order pOrder)

Original versus Current Pricing

CSC uses an item’s original price instead of the current day price for the following situations:

Page 151: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 4 3

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ When modifying a previously submitted order – Allowing the product or SKU prices to

remain consistent with the prices that were applied when the order was originally submitted. Original pricing is applied only towards items that were in the original order. Any new products or SKUs that are added to the order will be added using the current day pricing.

When pricing items in an exchange order – Allowing the product or SKU prices in the exchange order to remain consistent with the prices that were applied to the original order. As with previously submitted orders, the original pricing is applied only towards items that were in the original order. Any new products or SKUs that are added to the exchange will be priced using the current day pricing.

CSC uses an ATG Commerce feature that allows an override or alternative price source object to be used within the pricing operations. The ItemPriceSource object allows you to provide pricing information based upon a specific Product/SKU combination. The override is then used in place of the default current day pricing.

This ATG Commerce feature also provides the ability to generate a set of ItemPriceSource objects from the pricing information stored for the items within an order. CSC uses this ability to generate the source objects for pricing previously submitted orders and exchange orders by generating the source objects from the submitted order and the original purchase order.

ItemPriceSourceHandler Interface

The ItemPriceSourceHandler interface defines the API for generating ItemPriceSource objects from previously priced items and consuming an ItemPriceSource objects during a pricing operation. For example:

public interface ItemPriceSourceHandler

{

//this method will be called when generating ItemPriceSources from previously

//priced items in an Order. A true return value will indicate the handler

//modified the ItemPriceSource.

public boolean populateItemPriceSource(ItemPriceSource pPriceSource, Order

pOrder,CommerceItenm pCommerceItem, CommerceItem pParentCommerceItem);

//this method will be called by the individual calculators during a pricing

//operation to get the matching ItemPriceSource for the item.

public ItemPriceSource getItemPriceSource(ItemPriceInfo pPriceQuote,

CommerceItem pItem, RepositoryItem pPricingModel, Locale pLocale,

RepositoryItem pProfile, Map pExtraParameters);

//this method will be called by the individual calculators during a pricing

//operation to determine if the matching ItemPriceSource should be consumed by

//the calculator. A false return means the calculator should bypass its normal

//processing and immediately return.

Page 152: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 4 4

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ public boolean shouldConsumeSource(ItemPriceSource pItemPriceSource);

}

ItemPriceSourceHandler Implementing Calculators

The following ItemPriceCalculators and ItemSchemePriceCalculators implement the ItemPriceSourceHandler interface:

Standard ItemPriceCalculators

/atg/commerce/pricing/calculators/ItemListPriceCalculator

/atg/commerce/pricing/calculators/ItemSalePriceCalculator

/atg/commerce/pricing/calculators/ConfigurableItemPriceCalculator

Price list ItemPriceCalculators

/atg/commerce/pricing/calculators/ItemPriceListCalculator

/atg/commerce/pricing/calculators/ItemPriceListSaleCalculator

/atg/commerce/pricing/calculators/

ConfigurableItemPriceListCalculator

/atg/commerce/pricing/calculators/

ConfigurableItemPriceListSaleCalculator

Scheme calculators

/atg/commerce/pricing/calculators/PriceListsListCalculator

/atg/commerce/pricing/calculators/PriceListsBulkCalculator

/atg/commerce/pricing/calculators/PriceListsTieredCalculator

/atg/commerce/pricing/calculators/SalePriceListsListCalculator

/atg/commerce/pricing/calculators/SalePriceListsBulkCalculator

/atg/commerce/pricing/calculators/SalePriceListsTieredCalculator

Generating ItemPriceSources from ItemPriceInfos

PricingTools provides the API for generating ItemPriceSources from an order. It instantiates an ItemPriceSource object for each CommerceItem and SubSkuItem in the order, as well as calling each ItemPriceSourceHandler to populate the calculator specific values of the ItemPriceSource.

Each calculator provides a PricingAdjustment that details how the item price was adjusted by the calculator. These objects can be used to determine the original cost basis used by the calculator. Each PricingAdjustment created by a calculator contains a description specific to the calculator and each ItemPriceSourceHandler extracts their PricingAdjustment(s) from the ItemPriceInfo by matching the description.

For example, the standard list price calculator adds an adjustment:

Page 153: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 4 5

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μPricingAdjustment adjustment =

new PricingAdjustment(Constants.LIST_PRICE_ADJUSTMENT_DESCRIPTION,

null,

getPricingTools().round(adjustAmount),

quantity);

The Constants.LIST_PRICE_ADJUSTMENT_DESCRIPTION is a key to a resourced description in the atg.commerce.pricing.resources file that is unique to the calculator.

In the implementation of populateItemPriceSource, the calculator looks for an adjustment with the same resourced description:

public boolean populateItemPriceSource(pItemPriceSource, pOrder, pCommerceItem,

pParentItem pItemPriceInfo)

{

for each pItemPriceInfo PriceAdjustment

{

if(adjustment.getAdjustmentDescription.equals(Constants.LIST_PRICE_ADJUSTMENT_

DESCRIPTION))

{

double list = round(adjustment.getAmount() / adjustment.getQuantity());

pItemPriceSource.setListPrice(list);

return true;

}

}

}

Price List-Based ItemPriceSourceHandlers

Item calculators that delegate to scheme calculators for pricing also delegate to the scheme calculators when generating an ItemPriceSource.

The ItemPriceCalculator implementation of populateItemPriceSource iterates over each of its configured scheme calculators. Each scheme calculator that implements the ItemPriceSourceHandler interface is called through its populateItemPriceSource interface. The ItemPriceSource pricescheme property is set by the main calculator to the scheme that returns true from populateItemPriceSource.

The following describes how each scheme handlers uses the PricingAdjustments to determine its original cost basis and populate the ItemPriceSource.

List Price Scheme

The ItemPriceSourceHandler for the ListPrice scheme sets the ItemPriceSource list price-based on the single PricingAdjustment.

Bulk Price Scheme

Page 154: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 4 6

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μVolume-based schemes use a list of volume levels as their cost basis. Each level defines a unit cost for a quantity. The ItemPriceSourceHandler determines the volume levels from the single PricingAdjustment added by the ItemBulkPriceCalculator. The generated list of volume levels contains only one entry.

For example, if the PricingAdjustment has amount=100, quantity=2, only one pricing level will be created:

Qty Price

1 50 Quantity = 1 (First level is always set to one) Price = PricingAdjustment.amount / PricingAdjustment.quantity

When performing bulk pricing, the calculator only adds one pricing adjustment to the item, so the system can recreate only one level of the scheme from the adjustments. For example, if the levels were defined as:

Qty Price

1 50

3 40

6 30

If the item quantity is 3, the original item would be priced at $120 or 3 at 40. So CSC generates a level of 1 at 40 and cannot calculate the 1 at 50 or 6 at 30 levels.

This may cause several issues to occur. For example, if the order is modified from a quantity of 3 to a quantity of 10, the additional 7 items are set at 40. Additionally, if the order is modified to a quantity of 1, the item is then priced at 40, not 50, since the system does not know the original first level.

This situation can also occur in returns. If the customer returns 2 of the original 3 items, CSC cannot calculate the proper $10 adjustment for the 1 remaining item. As such, the net result is an $80 refund instead of a $70 refund, and the customer will receive the 1 item at $40 instead of $50.

Tiered Price Scheme

The ItemPriceSourceHandler for this volume-based scheme generates a list of volume levels using the PricingAdjustments added by the ItemTieredPriceCalculator.

For example, if the original pricing levels are defined as:

Qty Price

Page 155: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 4 7

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ1 50

3 40

6 30

The PricingAdjustments for an item quantity of three (3) would be generated as:

Qty Adjustment

2 100

1 40

The ItemPriceSources list of volume levels contains one entry for each PricingAdjustment found:

Qty Price

1 50 Quantity = 1 (First level is always set to one) Price = PricingAdjustment.amount / PricingAdjustment.quantity Thus, Price = 100 / 2

3 40 Quantity = Previous PricingAdjustment.quantity + Previous map entry quantity Thus, Quantity = 2 + 1 Price = PricingAdjustment.amount / PricingAdjustment.quantity Thus, Price = 40 / 1

The original pricing adjustments for tiered pricing may only be sufficient to generate a partial list of volume levels. The volume levels cannot be reconstructed up to the level covered by the item quantity originally priced. For example, if the levels were defined: 1 at 50, 3 at 40, 6 at 30 and the item quantity is 3, CSC can only calculate the levels to be 1 at 50 and 3 at 40. The last level, 6 at 30, cannot be determined from the available data stored in the item’s PricingAdjustments.

When modifying the same order with quantity 3 to a total quantity of 10, the shopper will not receive the $30 unit price for the last 4 items. The system will set the new 7 items at the $40 unit price.

In the case of an exchange, if you exchange 1 unit for 8 more units of the same item, the net result is the exchange order will identify the new 7 items at the $40 unit price.

Generating Volume Price Levels

Volume-based ItemPriceSourceHandlers that generate a list of volume levels create new transient priceLevel repository items for each level it calculates from the PricingAdjustments. Creating

Page 156: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 4 8

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μrepository items enables the substitution of the ItemPriceSource list of levels with the list normally attached to the price repository item.

The repository IDs for transient items are generated by an instance of the TransientIdGenerator, which is dynamically created through a property of the volume-based ItemPriceSourceHandlers.

Sales Price Handlers

Sale price versions of the handlers calculate the original sale prices from the order and ItemPriceSource. The ItemPriceSourceHandlers that generate sale price information require two sources of information to calculate the original sale price:

Their PricingAdjustment(s), which detail the sale calculator original adjustments to the list price

The ItemPricingOveride that contains the list price value

When determining the sales price, the SKU-based sale price handler refers to the ItemPriceSource list price and PricingAdjustment amount.

For example, calculating an original item (qty1) with a list price of $20 and a sale price of $15 would be calculated when the SKU-based sale price handler executes, setting the ItemPriceSource list price is to 20. The PricingAdjustment contains an amount = (5.00), quantity 1. These two values are used to calculate a sale price of $15.

(ItemPriceSource List Price + (PricingAdjustment.amount /

PricingAdjustment.quantity)) = Sales Price

(20 + ((5.00) / 1)) = 15

Note that a list price is not a requirement for calculating sale prices. In the following example, the PricingAdjustment contains amount =15, resulting in the following calculation:

(ItemPriceSource List Price + (PricingAdjustment.amount /

PricingAdjustment.quantity)) = Sales Price

(0 + (15 / 1)) = 15

Note: Price list-based sales price handlers use the same logic as the SKU-based version.

Price List-Based Volume Sale Price Handlers

To generate the sale price volume levels, the list price volume levels and the PricingAdjustment(s) are used to calculate the appropriate values.

For example, if the original tier levels are defined:

List Price Sales Price

Qty Price Qty Price

Page 157: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 4 9

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μList Price Sales Price

Qty Price Qty Price

1 50 1 45

3 40 3 35

6 30 6 25

The PricingAdjustments for an item quantity of three (3) would be generated as:

List Price Sales Price

Qty Adjustment Qty Adjustment

2 100 2 (10)

1 40 1 (5)

Sales volume levels would be generated as:

Qty Price

1 45 Quantity = 1 (First level is always set to one) Price = (List PricingAdjustment.amount / PricingAdjustment.quantity) + (Sale PricingAdjustment.amount / PricingAdjustment.quantity)

Thus, Price = (100 / 2) + (-10 / 2) = 45

3 35 Quantity = Previous PricingAdjustment.quantity + Previous map entry quantity. Thus, Quantity = 2 + 1 Price = (List PricingAdjustment.amount / PricingAdjustment.quantity) + (Sale PricingAdjustment.amount / PricingAdjustment.quantity)

Thus, Price = (40 / 1) + (-5 / 1) = 35

It is possible that sales price levels that do not match the list price levels. For example, if the following prices were defined:

List Price Sales Price

Qty Price Qty Price

Page 158: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 5 0

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μList Price Sales Price

Qty Price Qty Price

1 50 1 25

3 40 6 20

6 30

The PricingAdjustments for an item quantity of six (6) would be generated as:

List Price Sales Price

Qty Adjustment Qty Adjustment

2 100 2 (50)

3 120 3 (45)

1 30 1 (10)

And the resulting sales price would be calculated to:

Qty Price

1 25

3 25

6 40

ItemPriceSource Integration

The ItemPriceSource is integrated with the pricing operation by passing a list of source objects into the pricing operation through the extra parameters map using a publicly defined key in atg.commerce.pricing.PricingConstants.

Using the list of source objects, the ItemPricingEngine generates a map in the extraParameters that maps each commerce item in the order to its matching ItemPriceSource. This mapping operation occurs at the start of every pricing operation.

PricingTools provides the generateItemPricingSourceMap API for this mapping operation. Each item to be priced is matched to an ItemPriceSource object using the isItemMatch interface of ItemPriceSource. If a match is found, the ItemPriceSource currency code is verified to ensure that it

Page 159: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 5 1

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μmatches the currency of the current pricing operation. If both conditions are met, the item is then mapped to the source object.

To map ItemPricingSources to CommerceItems the algorithm that matches a CommerceItem to an ItemPriceSource is part of the ItemPriceSource API. The isItemMatch compares the productId, skuId, parentSkuId and commerceItemClassType properties of the CommerceItem to that in the ItemPriceSource. All values must match exactly for a successful comparison.

The resulting ItemPriceSourcesMap is stored in the extra parameters map using a key that is declared in atg.commerce.pricing.PricingConstants. Each calculator determines if there is a matching ItemPriceSource for an item by performing a lookup in the ItemPriceSourcesMap using the CommerceItemId as the key.

The ItemPriceSourceHandler interface defines the getItemPriceSource method that provides a matching ItemPriceSource object to the calculator during a pricing operation. A null return value means there is no ItemPriceSource and the calculator should continue to price the item normally. If an ItemPriceSource is returned, the calculator determines if it contains the necessary information for the calculator to price the item.

Each handler implements the shouldConsumeSource method that determines if an ItemPriceSource contains the necessary information to price the item. For example, the list price calculator needs a non-null value returned by the ItemPriceSource’s getListPrice method. If that value is null, the calculator cannot consume the ItemPriceSource and will return false from the shouldConsumeSource method.

If shouldConsumeSource returns false, the calculator bypasses its normal processing completely and returns immediately. Only the calculators for which the ItemPriceSource provides the required data will consume it during a pricing operation.

Automatic Removal of Items

If CSC is configured to use price lists, it will automatically remove items from the order that cannot be priced by the current global context price list. This avoids pricing errors when the order is first loaded. When loading an order into global context, CSC attempts to determine the correct price lists (list price list and sale price list) to use by extracting them the order being loaded. This helps eliminate the problem of removing items from an order because an incorrect price list is in global context when the order is loaded. CSC automatically changes the global context price list selections to match those found in the order.

Promotions

CSC defines two PricingModelHolders for pricing orders. CSC decides which one to use based on the state of the order and each holder is initialized with promotions differently.

atg/commerce/custsvc/pricing/CustomerPricingModels - this holder is used when pricing incomplete orders. It is initialized with the active customer’s current promotions.

atg/commerce/custsvc/pricing/SubmittedOrderPricingModels - this holder is used when pricing submitted orders. It is initialized with the order’s applied promotions.

Page 160: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 5 2

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μIncomplete Orders or Schedule Order Templates

CSC uses the active customer’s current promotions when pricing is incomplete (e.g. orders not submitted) orders.

Submitted Orders

For orders that have already been submitted to fulfillment, CSC uses the promotions that were originally applied to the order when it was submitted.

Note that this is not the same as the promotions that were available at the time the order was submitted. It only includes the promotions that were applied to the order when it was submitted. For example, if a buy-two-get-one-free promotion was available when the order was submitted but only one was purchased and therefore not applied to the order, that promotion will not be in the SubmittedOrderPricingModels when the order is modified after submission to add the second item.

API for Determining the Correct PricingModelHolder

CSREnvironmentTools contains an API that returns the correct pricing model holder for the order currently loaded into the global context. CSREnvironmentMonitor and all of the CSC extensions to the PurchaseProcessFormHandler call this API to determine the correct pricing model holder for pricing operations.

public PricingModelHolder getCurrentOrderPricingModelHolder

Manual Pricing Adjustments

It is possible to adjust an order total by a fixed amount. Adjustments can either be a fixed increase (debit) or decrease (credit) to the order total. The details of a manual adjustment such as the amount, adjustment type and reason code are permanently stored within the database. For information on the corresponding ATG Commerce API, refer to the ATG Commerce Programming Guide.

All manual adjustments are created as transient repository items. Subsequent processing in the updateOrder pipeline determines if the adjustments is permanently added to the repository based on the following rules.

All adjustments created for submitted orders are unconditionally persisted to the repository. As configured by default, this is the only time ATG Commerce and CSC unconditionally saves adjustments to the repository.

All adjustments created for persistent, incomplete orders are conditionally saved based on configuration. CSC uses a Boolean configuration setting, whose default value is false, that determines if adjustments should be saved immediately for persistent, incomplete orders.

The ATG Commerce updateOrder pipeline contains a processor that saves the manual adjustment items to the repository when appropriate. saveManualAdjustment executes the atg/commerce/order/ processor/SaveManualAdjustments processor with the following two processor configurations:

#

# The processor will save the manual adjustments to the repository for

Page 161: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 5 3

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ# orders in these states, depending on the value of saveIncomplete

# saveForIncompleteOrders

#

incompleteStates^=/atg/commerce/order/OrderLookupService.incompleteStates

#

# The processor will save the manual adjustments to the repository for

# orders in the configured incomplete states if this property is true.

# Otherwise, the manual adjustments are not saved for incomplete orders.

#

saveIncompleteOrderAdjustments=false

Important: Be aware of a condition that may occur when saving incomplete manual adjustments. Manual adjustments are, by default, applied unconditionally. Once added to the order, manual adjustments affect the order’s price despite the contents of the order. This is important if an incomplete order is saved with manual adjustments as subsequent changes to the order at checkout time will not change any adjustments that have been applied. For example, if an agent applies a $20 credit adjustment to an order with $100 merchandise and saves it in an incomplete state, the customer could return and remove $80 worth of merchandise from the order and checkout with a $0 total. As such, the processor is configured by default to not save manual adjustments for incomplete orders.

The OrderAdjustmentCalculator adjusts the order’s subtotal based on the manual adjustments associated with the order. The /atg/commerce/pricing/calculators/ OrderAdjustmentCalculator component contains the following configuration:

$class=atg.commerce.pricing.OrderAdjustmentCalculator

pricingTools=/atg/commerce/pricing/PricingTools

The adjustment calculator is added as a postCalculator in the /atg/commerce/pricing/ OrderPricingEngine. As such, the calculator runs after the pre-calculators and all calculators associated with any promotions for the order. The configuration for the OrderPricingEngine is:

postCalculators+=\

calculators/OrderAdjustmentCalculator

For additional information on pricing and calculators, refer to the Customizing Returns and Exchanges section and the ATG Commerce Programming Guide.

Scheduled Order Templates

CSC always uses the CustomerPricingModels PricingModelHolder for pricing order templates. Scheduled order templates are priced this way to provide the agent with pricing information that reflects the current day pricing. This gives the agent an accurate representation of the order total if an order were to be submitted from the template on that day.

Modifying scheduled order templates also uses clone editing and therefore, pricing changes are not saved to the template unless the post create checkout process is completed for the template.

Page 162: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 5 4

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μScheduled Order Templates are also unique because they are priced before being viewed by an agent. For example, if an agent views the contents of a template in read-only mode before actually selecting the template to work on, the view would reflect current day pricing for the template. However, any pricing changes made for viewing the template are not persisted to the repository; they are only performed to provide the agent with current day pricing in the view.

Customizing Shipping and Payments CSC supports, by default, two shipping group types: Hard Goods and Electronic Shipping. CSC also supports, by default, three payment group types: Gift Certificate, Credit Card and Store Credit Payment Group.

You can customize shipping groups and payment groups to do things such as add custom fields or add support for a new shipping group type. For additional information on working with shipping and payment groups, refer to the ATG Commerce Programming Guide.

Shipping and Payment Group Configuration Overview

Shipping and payment group configuration is defined using the atg.commerce.csr.order. CommerceTypeConfiguration class. The class contains the following:

protected PageFragment mAddPageFragment;

protected PageFragment mEditPageFragment;

protected PageFragment mDisplayPageFragment;

protected PageFragment mImagePageFragment;

protected String mResourceBundle;

protected String mType;

protected String mAddPageFragmentTitleKey;

protected String mEditPageFragmentTitleKey;

protected String mImageHoverTextKey;

The CommerceTypeConfiguration class uses the following properties:

Property Description

AddPageFragment Adds a specific shipping or payment group type.

EditPageFragment Edits a specific shipping or payment group type.

DisplayPageFragment Displays a specific shipping or payment group type.

ImagePageFragment Displays an image used with a specific shipping or payment group type.

ResourceBundle The configuration used to obtain the resourced values.

Page 163: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 5 5

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μProperty Description

Type

The primary key used to identify the shipping or payment group type configuration. The key is used as a map key for the system-generated shipping or payment group configuration map, which locates the configuration type.

AddPageFragmentTitleKey Defines the text used in the AddPageFragment title.

EditPageFragmentTitleKey Defines the text used in the EditPageFragment title.

ImageHoverTextKey Defines the text displayed when a user hovers over the image defined in the ImagePageFragment.

Default Shipping Group Types

ATG provides two default shipping group types: hard goods and electronic goods. Shipping group types are configured using the atg.commerce.csr.order.CommerceTypeConfiguration class. The following information describes how to reconfigure the default shipping group types or to configure new types.

The shipping group configuration files and the shipping group page fragment configuration files are available at the following locations:

File Location

Configuration File <ATG10dir>/CSC10.0.2/DCS-CSR/config/atg/commerce/custsvc/ui/

Page Fragments <ATG10dir>/CSC10.0.2/DCS-CSR/config/atg/commerce/custsvc/ui/

fragments/order/

Display JSPs <ATG10dir>/CSC10.0.2/web-apps/DCS-CSR/include/order/

Add and Edit JSPs <ATG10dir>/CSC10.0.2/web-apps/DCS-CSR/panels/order/shipping/

Display Page Fragments

To change how your shipping groups are displayed, you must modify the displayPageFragment property page fragment file. Each shipping group type defines three display values that appear on various pages. A display value consists of a title and content and is configured in the display page fragment JSP file, where they are identified in the file as value1, value2 and status.

You can customize the default display values for the existing shipping group types. However, if you create new shipping group types, each new shipping group type must have a defined set of display values.

The following display values are configured for the hard good shipping type:

Page 164: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 5 6

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μValue Title Content Example

Value1 Shipping Address [first] [last]

[address 1]

[address 2]

[city], [state] [zip code]

[country]

[phone number]

Bob Smith 119 Grand Street Apt. 1509 Brooklyn, NY 10023 USA 212-555-4321

Value2 Shipping Method [shipping method] Ground

Status Status [shipping group status] Ready to Ship

The following display details are configured for the electronic shipping group type:

Value Title Content Example

Value1 Electronic Address [email address] [email protected]

Value2 Blank [blank] Blank

Status Status [shipping group status] Emailed

Display details are used on the following pages for both shipping group types, unless otherwise indicated:

Display Location Value1 Value2 Status

Shipping Addresses Page Shipping Method Page (hard good only)

X

Order Review Page Return Items Page Confirmation Emails

X X

Order View Page Scheduled Orders Page

X X X

The /atg/commerce/custsvc/ui/HardGoodShippingGroupConfiguration.properties and ElectronicGoodShippingGroupConfiguration.properties files hold all of the properties of the page fragments. The following is an example of the HardGoodShippingGroupConfiguration. properties file:

$class=atg.commerce.csr.order.CommerceTypeConfiguration

Page 165: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 5 7

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μaddPageFragment=/atg/commerce/custsvc/ui/fragments/order/

AddHardgoodShippingGroup

editPageFragment=/atg/commerce/custsvc/ui/fragments/order/

EditHardgoodShippingGroup

displayPageFragment=/atg/commerce/custsvc/ui/fragments/order/

DisplayHardgoodShippingGroup

imagePageFragment=/atg/commerce/custsvc/ui/fragments/order/

HardgoodShippingGroupImage

type=hardgoodShippingGroup

addPageFragmentTitleKey=addHardgoodShippingGroupTitle

editPageFragmentTitleKey=editHardgoodShippingGroupTitle

imageHoverTextKey=hardgoodShippingGroupImageHoverText

resourceBundle=atg.commerce.csr.order.WebAppResources

The DisplayHardgoodShippingGroupConfiguration.properties file identifies the location of your page fragment JSP file and the servletContext. For example:

$class=atg.web.PageFragment

URL=/include/order/displayHardgoodShippingGroup.jsp

servletContext=DCS-CSR

The displayHardgoodShippingGroup.jsp file contains the values for the display details, including the title and the content. You must modify the value1, value2 and status properties with your custom information. The combination of these parameters defines one display value, such as value1:

displayValue - This optional parameter is used to display the value of the desired field

displayHeading - This optional parameter is used to display the heading of the desired field

Example: Shipping Group Display Page Fragment Components

The following is a portion of the default configuration of the displayhardgoodShippingGroup.jsp file. In this example, the displayHeading parameter, which defines the display value1 title, is set to use the Shipping Address header. The displayValue parameter, which defines the display value1 content, is set to use the addressView.jsp fragment:

<c: if test="${propertyName == 'value1'}">

<c: if test="${displayHeading == true}">

<fmt: message key="shipping.address.header"/>

</c: if>

<c: if test="${displayValue == true}">

<dsp: include src="/include/addresses/addressView.jsp"

otherContext="${csrConfigurator.contextRoot}">

<dsp: param name="address" value="${address}"/>

Page 166: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 5 8

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ </dsp: include>

</c: if>

To display your customized shipping group title and content, modify the displayHeading and displayValues accordingly. For example, in the displayElectronicShippingGroup.jsp file, the value1 title has been modified to define the displayHeading as Electronic Address and the displayValue as emailAddress:

<c: if test="${propertyName == 'value1'}">

<c: if test="${displayHeading == true}">

<fmt: message key='shippingSummary.electronicAddress.header'/>

</c: if>

<c: if test="${displayValue == true}">

<li>

<c: out value="${shippingGroup.emailAddress}"/>

</li>

</c: if>

</c: if>

As noted above, the title and content for value1 is shown on the Shipping Addresses, Shipping Method (hard good only), Order Review, Return Items, Order View, Scheduled Orders pages and on confirmation e-mails. You may also modify the value2 property as needed. Note that electronic shipping groups do not use the value2 property by default, so it is left blank. You may add the displayHeading and displayvalues to the property as required.

Other components that can be customized within the display page fragment include the status property. This property is used to identify the status of the group object and displayed only on the Order View and the Scheduled Order pages. The default title for both the hard good and electronic shipping group is Status, and the content defaults to shippingGroup.stateAsString. Modify the heading of the display value to point to your customized information as needed:

<c: if test="${propertyName == 'status'}">

<c: if test="${displayHeading == true}">

<fmt: message key='shippingSummary.shippingStatus.header'/>

</c: if>

<c: if test="${displayValue == true}">

<dsp: droplet name="ShippingGroupStateDescriptions">

<dsp: param name="state" value="${shippingGroup.stateAsString}"/>

<dsp: param name="elementName" value="stateDescription"/>

<dsp: oparam name="output">

<dsp: droplet name="IsHighlightedState">

<dsp: param name="obj" value="${shippingGroup}"/>

<dsp: oparam name="true">

<span class="atg_commerce_csr_dataHighlight"><dsp: valueof

param="stateDescription"></dsp: valueof></span>

</dsp: oparam>

<dsp: oparam name="false">

Page 167: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 5 9

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ <dsp: valueof param="stateDescription"></dsp: valueof>

</dsp: oparam>

</dsp: droplet>

</dsp: oparam>

</dsp: droplet>

</c: if>

</c: if>

The selectOptionText property is used to identify the information that is presented in the address drop down on the Ship to Multiple Addresses and Split Quantity pages. By setting the displayValue, you configure what address information is presented in the drop down. For example, the default configuration for the hard good shipping group contains the following:

<c: if test="${propertyName == 'selectOptionText'}">

<c: if test="${displayValue == true}">

${fn: escapeXml(address.address1)}${!empty address.address2 ? ' ' : ''

}${!empty address.address2 ? fn: escapeXml(address.address2) : '' }

</c: if>

</c: if>

The electronic shipping group selectOptionText property has been modified to include the following:

<c: if test="${propertyName == 'selectOptionText'}">

<c: if test="${displayValue == true}">

${fn: escapeXml (shippingGroup.emailAddress)}

</c: if>

</c: if>

Modify the display value with your customized page fragment.

Customizing a Shipping Group Type

For additional information on creating customized Shipping Groups, refer to the Working with Purchase Process Objects chapter of the ATG Commerce Programming Guide.

1. Refer to the Order Tools section of the ATG Commerce Programming Guide to create a new shipping group type. This includes defining the type-to-class name mapping for ShippingGroup objects.

2. Refer to the Create a Shipping Group section of the ATG Commerce Programming Guide to create the shipping group.

Note: If you do not want to initialize the custom shipping group types using the ShippinGroupDroplet, continue on to step 6.

3. Write a new ShippingGroupInitializer implementation. The initializeShippingGroups() method should gather the user’s ShippingGroups by type and add them to the ShippingGroupMapContainer referenced by the ShippingGroupFormHandler.

Page 168: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 6 0

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ4. Open your custom application and modify ShippingGroupDroplet.properties

shippingGroupInitializers parameter by adding your new shipping group type. For example:

/atg/commerce/custsvc/order/ShippingGroupDroplet.properties

## ServiceMap of shippingGroupTypes to ShippingGroupInitializer

Nucleus components

shippingGroupInitializers+=\

newShippingGroup=/atg/commerce/custsvc/order/NewShippingGroupInitializer

5. Update the /atg/commerce/custsvc/util/CSRConfigurator.properties file shippingGroupTypesToBeInitialized property and shippingGroupTypeConfigurations property to include your new shipping group type.

This configuration initializes shipping group types in the ShippingGroupDroplet.

6. Initialize your new shipping group type by adding your new shipping group type to the shippingGroupTypesToBeInitialized property. For example:

/atg/commerce/custsvc/util/CSRConfigurator.properties

## Shipping group fragment settings

shippingGroupTypesToBeInitialized= newShippingGroup

shippingGroupTypeConfigurations+=\

/atg/commerce/custsvc/ui/NewShipingGroupConfiguration

7. Add the CommerceTypeConfiguration component to the shippingGroupTypeConfigurations property for any new supported shipping group type.

Default Payment Group Types

Payment group type configuration is defined using the atg.commerce.csr.order. PaymentGroupTypeConfiguration class. The class contains the following:

atg.commerce.csr.order.PaymentGroupTypeConfiguration extends

atg.commerce.csr.order.CommerceTypeConfiguration

protected PageFragment mEditRefundMethodPageFragment;

protected PageFragment mDisplayRefundMethodPageFragment;

mEditRefundMethodPageFragmentTitleKey;

The PaymentGroupTypeConfiguration class configures the payment group and refund methods. The base class properties configure the payment group. The refund methods are used for the returns and exchange pages.

The following payment group types are provided in these locations:

Page 169: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 6 1

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μFile Location

Configuration File <ATG10dir>/CSC10.0.2/DCS-CSR/config/atg/commerce/custsvc/ui/

Page Fragments <ATG10dir>/CSC10.0.2/DCS-CSR/config/atg/commerce/custsvc/ui/

fragments/order/

Display JSPs <ATG10dir>/CSC10.0.2/web-apps/DCS-CSR/include/order/

Add and Edit JSPs <ATG10dir>/CSC10.0.2/web-apps/DCS-CSR/panels/order/billing/

There are three default payment group types, including Credit Card, Store Credit and Gift Certificate. To make customizations, you can modify the page fragments and override the component or page fragment properties. Payment group information is displayed on a number of pages, including the billing, order view, e-mail and refund method pages. Payment group information is displayed using the PaymengGroupTypeConfiguration.displayPageFragment and PaymentGroupTypeConfiguration.displayRefundMethodPageFragment property values.

The following table provides display information on Credit Card type payment groups:

Value Title Content Example

Value1 Type [credit card type] – [last four

digits of card]

Visa - 2112

Value2 Expiration Date [card expiration year] / [card

expiration year]

11/12

Value3 Billing Address [first] [last]

[address 1]

[address 2]

[city], [state] [zip code]

[country]

[phone number]

Bob Smith 119 Grand Street Apt. 1509 Brooklyn, NY 10023 USA 212-555-4321

Status Status [payment group status] Authorization succeeded

The following table provides display information on Store Credit type payment groups:

Value Title Content Example

Value1 Type Store Credit – Store Credit

Number

Store Credit – 1c1123

Value2 Amt. Remaining [store credit remaining] 15.32

Page 170: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 6 2

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μValue Title Content Example

Value3 Blank [blank] blank

Status Status [payment group status] Debited

The following table provides display information on Gift Certificate type payment groups:

Value Title Content Example

Value1 Type Gift Certificate – Gift

Certificate Number

Gift Certificate – 1g4332

Value2 Amt. Remaining [amount remaining] 15.32

Value3 Blank [blank] blank

Status Status [payment group status] Debited

The display values are used in the following locations:

Display Pages Value1 Value2 Value3 Status

Billing Order Review Refund Type Confirmation Emails

X X X

Order View Scheduled Orders Refund Review

X X X X

The /atg/commerce/custsvc/ui/CreditCardConfiguration.properties, StoreCreditConfiguration.properties and GiftCertificateConfiguration.properties files hold all of the properties of the page fragments. The configuration file contains the page fragment location.

The following examples use the Credit Card payment group; however, all three payment group types have corresponding files.

The following is an example of the CreditCardConfiguration.properties file:

$class=atg.commerce.csr.order.PaymentGroupTypeConfiguration

addPageFragment=/atg/commerce/custsvc/ui/fragments/order/AddCreditCard

Page 171: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 6 3

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μeditPageFragment=/atg/commerce/custsvc/ui/fragments/order/EditCreditCard

displayPageFragment=/atg/commerce/custsvc/ui/fragments/order/

DisplayCreditCard

type=creditCard

addPageFragmentTitleKey=addCreditCardTitle

editPageFragmentTitleKey=editCreditCardTitle

resourceBundle=atg.commerce.csr.order.WebAppResources

editRefundMethodPageFragment=/atg/commerce/custsvc/ui/fragments/order/

EditCreditCardRefundMethod

displayRefundMethodPageFragment=/atg/commerce/custsvc/ui/fragments/order/

DisplayCreditCardRefundMethod

editRefundMethodPageFragmentTitleKey=editCreditCardRefundMethodTitle

The CreditCardConfiguration.properties file identifies the location of the page fragment, which in turn, defines your page fragment JSP file and the servletContext. For example:

$class=atg.web.PageFragment

URL=/include/order/displayCreditCard.jsp

servletContext=DCS-CSR

The displayCreditCard.jsp file contains the values for the display details, including the title and the content. You must modify the default value1, value2, value3 and status properties with your custom information. The combination of these parameters defines one display value, such as value1:

displayValue - This optional parameter is used to display the value of the desired field

displayHeading - This optional parameter is used to display the heading of the desired field

Example: Payment Group Display Page Fragment Components

The following is a portion of the default configuration of the displayCreditCard.jsp file. In this example, the displayHeading parameter, which defines the display value1 title, is set to use the Billing Summary header. The displayValue parameter, which defines the display value1 content, is set to display the credit card information:

<c: if test="${propertyName == 'value1'}">

<c: if test="${displayHeading == true}">

<fmt: message key='billingSummary.commerceItem.header.type'/>

</c: if>

<c: if test="${displayValue == true}">

<csr: displayCreditCardType creditCard="${paymentGroup}"/>

</c: if>

</c: if>

Page 172: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 6 4

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μTo display your customized payment group title and content, modify the displayHeading and displayValues accordingly. For example, in the GiftCertificate.jsp file, the value1 title has been modified to use the same displayHeading but the displayValue has been modified to use the newOrderBilling gift certificate value:

<c: if test="${propertyName == 'value1'}">

<c: if test="${displayHeading == true}">

<fmt: message key='billingSummary.commerceItem.header.type'/>

</c: if>

<c: if test="${displayValue == true}">

<fmt: message

key="newOrderBilling.displayPaymentMethods.giftCertificate"/>

<c: if test="${!empty paymentGroup && !empty

paymentGroup.giftCertificateNumber }">

<fmt: message key="common.hyphen"/>

&nbsp;

<c: out value="${paymentGroup.giftCertificateNumber}"/>

</c: if>

</c: if>

</c: if>

As noted above, the title and content for value1 is shown on the Billing, Order Review, Refund Type, Order View, Scheduled Orders and Refund Review pages and on confirmation e-mails. You may also modify the value2 and value3 property as needed. Note that Store Credit and Gift Certificate payment groups do not use the value3 property by default, so it is left blank. You may add the displayHeading and displayvalues to the property as required.

Other components that can be customized within the display page fragment include the status property. This property is used to identify the status of the group object and is displayed only on the Order View, Scheduled Orders and Refund Review pages. The default title for all payment groups is Status. Modify the display value to point to your customized information as needed. The following is an example of the displayCreditCard.jsp status:

<c: if test="${propertyName == 'status'}">

<c: if test="${displayHeading == true}">

<fmt: message key='billingSummary.commerceItem.header.state/>

</c: if>

<c: if test="${displayValue == true}">

<dsp: droplet name="PaymentGroupStateDescriptions">

<dsp: param name="state" value="${paymentGroup.stateAsString}"/>

<dsp: param name="elementName" value="stateDescription"/>

<dsp: oparam name="output">

<dsp: droplet name="IsHighlightedState">

<dsp: param name="obj" value="${paymentGroup}"/>

<dsp: oparam name="true">

<span class="atg_commerce_csr_dataHighlight"><dsp: valueof

param="stateDescription"></dsp: valueof></span>

Page 173: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 6 5

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ </dsp: oparam>

<dsp: oparam name="false">

<dsp: valueof param="stateDescription"></dsp: valueof>

</dsp: oparam>

</dsp: droplet>

</dsp: oparam>

</dsp: droplet>

</c: if>

</c: if>

Customizing a Custom Payment Group Type

For additional information on creating customized Payment Groups, refer to the Working with Purchase Process Objects chapter of the ATG Commerce Programming Guide.

1. Refer to the Order Tools section of the ATG Commerce Programming Guide to create a new payment group type. This includes defining the type-to-class name mapping for PaymentGroup objects.

2. Refer to the Extending the Payment Process to Support a New Payment Method section of the ATG Commerce Programming Guide to create the payment group.

Note: If you do not want to initialize the customer payment group type using the PaymentGroupDroplet, continue to Step 6.

3. Write a new PaymentGroupInitializer implementation. The initializePaymentGroups() method should gather the user’s PaymentGroups by type and add them to the PaymentGroupMapContainer referenced by the PaymentGroupFormHandler.

4. Within your custom application, create a new PaymentGroupInitializer implementation and add it to the ServiceMap in the PaymentGroupDroplet.properties file paymentGroupInitializers property. For example:

/atg/commerce/custsvc/order/PaymentGroupDroplet.properties

## ServiceMap of paymentGroupTypes to PaymentGroupInitializer

Nucleus components

paymentGroupInitializers+=\

newPayment=/atg/commerce/custsvc/order/NewPaymentInitializer

5. Update the /atg/commerce/custsvc/util/CSRConfigurator.properties file paymentGroupTypesToBeInitialized and paymentGroupTypesConfigurations properties to include your new payment group type.

This configuration initializes payment group types in the PaymentGroupDroplet. By default, this property initializes the creditCard and storeCredit types. To initialize a new payment group type, add your new payment group type to the paymentGroupTypesToBeInitialized property. For example:

/atg/commerce/custsvc/util/CSRConfigurator.properties

Page 174: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 6 6

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ## Payment group fragment settings

paymentGroupTypesToBeInitialized=creditCard,storeCredit,newPayment

paymentGroupTypeConfigurations+=\

/atg/commerce/custsvc/ui/NewPaymentGroupConfiguration

6. Add the payment group type configuration to the CSRConfigurator:

atg.commerce.csr.util.CSRConfigurator

protected String mPaymentGroupTypesToBeInitialized;

protected CommerceTypeConfiguration[] mPaymentGroupTypeConfigurations;

protected Map mPaymentGroupTypeConfigurationsAsMap = null;

The following parameters are identified:

type – This property is the primary key used to identify the payment group type configuration. This property value should match the key defined in OrderTools.paymentTypeClassMap

paymentGroupTypeConfigurationsAsMap – This property is automatically generated based on the paymentGroupTypeConfigurations property values

PaymentGroupTypeConfiguration.type – This property is used as the key for the map and the value is the PaymentGroupTypeConfiguration componenet itself

Limiting Amounts for Payment Groups

When working on the Billing page an agent can enter any amount for a payment group. If the payment group is associated with a claimable item, the agent will not be allowed to enter more than the remaining or maximum -allowed amount.

You can limit the amount of your customized payment group types by extending the CSRPaymentGroupRemainingAmount droplet to set the payment group maximum-allowed and remaining amount limits.

The CSRPaymentGroupRemainingAmount droplet returns both the remaining and maximum-allowed amounts for the payment group. This droplet sets a maximum -allowed amount limitation in the Billing page and displays the remaining amount of the payment group on the Billing, Order View and Order Review pages.

This droplet takes in payment group and order as input parameters. The parameters for the PaymentGroupRemainingAmount droplet are:

paymentGroup – (Required) This parameter obtains the remaining and max allowed amount.

order – (Optional) This parameter is added for custom extensions that may need to work with the order.

remainingAmount - The remaining amount is calculated for the payment group and returned in this parameter. The remaining amount is only calculated for store credit and gift certificates. This parameter returns the PaymentGroup remaining amount that is backed by the claimable item.

Page 175: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 6 7

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ maxAllowedAmount – This parameter calculates and returns the maximum-allowed

amount for the payment group. This parameter is used only in the billing page.

You can calculate the remaining or maximum-allowed amounts for any custom payment groups by extending the getRemainingAmount() and getMaxAllowedAmount() methods within the droplet.

Copying Payment Group Types

When an agent starts the exchange process an exchange order is created. Relevant payment groups must be copied from the original order to the exchange order. The following payment groups are copied from the original order:

Credit Card – copied by default from the original to the exchange order

Store Credit – copied if there a remaining amount

Gift Certificate – copied if there is a remaining amount

To copy additional payment group types, add the payment group type to the PaymentGroupCopyManager.properties file.

/atg/commerce/custsvc/returns/PaymentGroupCopyManager.properties

## ServiceMap of paymentGroupTypes to Copier Nucleus components

copiers+=\newPaymentGroupType=Component to copy new payment group

Note: The newPaymentGroupType should be one of the supported payment group types, outlined in the atg/commerce/order/OrderTools.paymentTypeClassMap file.

Shipping and Payment Group Form Handlers

This section discusses some of the classes in CSC that you may want to extend. You can find additional information about these classes in the ATG API Reference for Commerce Service Center.

CSRShippingGroupFormHandler

Class atg.commerce.csr.order.CSRShippingGroupFormHandler

Component /atg/commerce/custsvc/order/ShippingGroupFormHandler

The CSRShippingGroupFormHandler class is a form handler that manages single and multiple shipping stages of the checkout process. The CSRShippingGroupFormHandler extends core-commerce atg.commerce.order.purchase.ShippingGroupFormHandler and additionally provides the capability to add shipping related audit-logging events.

CSRPaymentGroupFormHandler

Class atg.commerce.csr.order.CSRPaymentGroupFormHandler

Page 176: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 6 8

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μComponent /atg/commerce/custsvc/order/PaymentGroupFormHandler

The CSRPaymentGroupFormHandler class is a form handler that manages billing stage of the checkout process. The CSRPaymentGroupFormHandler extends core-commerce atg.commerce.order. purchase.PaymentGroupFormHandler and additionally provides the capability to claim Store Credit, Gift Certificate and optionally coupon. By default, the allowCouponClaim flag is set to false.

Configuring Shipping Addresses

You must configure shipping addresses for the following types of addresses:

Returns

Electronic

Configuring Return Shipping Addresses

To configure the shipping address for returns, perform the following steps:

1. Create a JSP file that contains your shipping address. For example:

<ul class="atg_commerce_csr_simpleList">

<li><strong>Ship return items to: </strong></li>

<li>My Company</li>

<li>Attn: Returns</li>

<li>100 Main Street</li>

<li>My City, My State</li>

<li>My Zip</li>

</ul>

2. Open the atg/commerce/custsvc/ui/renderers/ ReturnShippingAddressRenderer.properties file and provide the location of the new JSP file and the contextRoot variable. For example:

# This is the default renderer for the returns line item page, default

# renderers will all have their id property set to "default". This

# property is primarily useful in targeting rules.

id=default

# The JSP that renders the returns line item

url=/panels/order/returns/NewreturnShippingAddress.jsp

contextRoot=/NewDCS-CSR

3. Save the ReturnShippingAddressRenderer.properties file.

For additional information on working with renderers, refer to the Configuring Pages with Nucleus Components section.

Page 177: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 6 9

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μConfiguring Address Books

CSC allows you to configure components of the address book.

AddressBook Class Information

The AddressBook class, which provides the majority of the client API for address management, contains the following item types:

Item Type Description

User Profile The user profile for which addresses are being managed.

AddressMetaInfo Map A container of all addresses for the current user profile. This is a map of repository ID to AddressMetaInfo instances, an AddressMetaInfo instance represents each unique address repository item associated with the user’s profile. This list is generated by gathering addresses from all configured AddressReferenceManager components, it is not directly configured.

AddressReferenceManager

Items

An array of AddressReferenceManager implementations that are responsible for managing one or more address properties associated with the user’s profile. Each Dynamo module will add one or more instances of this type to manage addresses that the module defines.

AddressValidator Items An array of AddressValidator implementations responsible for validating the data of individual addresses.

AddressValidationListener

Instances

A list of AddressValidationListener implementations that are notified when one or more AddressValidator instances reject a given address as invalid. The AddressBookFormHandler implements AddressValidationListener in order to forward address validation errors to the user.

AddressChangeListener

Instances

Lists of AddressChangeListener implementations that are notified at various points in the lifecycle of address repository items such as add, update, and delete.

AddressNicknameGenerator

Instance

A component that provides default address nicknames (e.g. “Home”, “Work”, “Mom & Dad”) names for profile addresses for profile property types that support this value (maps.)

The AddressBookFormHandler class, which provides a user interface support for managing profile addresses, contains the following item types:

Page 178: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 7 0

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μItem Type Description

User Profile The user profile for which addresses are being managed.

AddressBook The AddressBook provides the container of profile addresses, as well as the API for managing those addresses.

The AddressMetaInfo class, are created by the AddressBook and AddressReferenceManager components. These objects provide information on each distinct address item that is associated with the profile:

Object Type Description

Address Repository Item The repository item for the address

atg.core.util.Address The instance that references the core address API.

Address Reference Information Information about the address’s ability to accept a nickname, the validity of the address, if the address is blank or exclusively referenced by a property, or if the address may be deleted.

AddressReferenceManager

The AddressBook is configured with instances of AddressReferenceManager. Components manage at least one profile address property and implement the following interface methods:

void populateAddressBook( AddressBook );

This method adds an AddressMetaInfo to the AddressBook for each address managed by the AddressReferenceManager.

void postPopulateAddressBook( AddressBook );

This method is called by the AddressBook after all AddressReferenceManager instances have executed their populateAddressBook methods. It also gives the AddressReferenceManager a chance to review and perhaps modify AddressMetaInfo instances created by other AddressReferenceManager instances before those addresses are displayed.

The AddressReferenceManager classes allow you to use extended syntax for the configuration of profile address properties. This extended syntax allows you to configure address properties that are not direct properties of the user profile.

Managing Credit Card Address Properties Examples

For example, in a B2C configuration, an AddressReferenceManager component that is configured to manage credit card address properties (an AddressCollectionReferenceManager) might be configured as follows:

Page 179: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 7 1

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μaddressProperties=\

defaultCreditCard.billingAddress,\

creditCards.billingAddress

In the example above, creditCards is a collection (map) property containing credit cards, where each credit card in the collection refers to a billingAddress address property. This configuration syntax uses the billingAddress property from all credit cards in the creditCards map collection. The defaultCreditCard property is a scalar credit card property. Both the defaultCreditCard and creditCards properties are properties of the user profile.

The same AddressReferenceManager could be reconfigured to manage credit card addresses by altering the configuration. In the following example, the myDefaultPaymentType and defaultPaymentType properties are scalars, and the myPaymentTypes and paymentTypes properties are collection properties:

addressProperties=\

myDefaultPaymentType.billingAddress,\

myPaymentTypes.billingAddress,\

defaultPaymentType.billingAddress,\

paymentTypes.billingAddress

Managing Default Shipping Addresses Example

The following is an example configuration of an AddressReferenceManager that manages the default shipping address using the DefaultShippingAddressReferenceManager.properties file:

$class=atg.userprofiling.address.DefaultAddressReferenceManager

$scope=request

# The name of the property in the profile that this manager manages

propertyName=shippingAddress

# Values added to defaultInfoMap for the property managed by this manager

defaultAddressOptions=\

# The customEditorContext is useful only if the include file is contained in a

# different web application

customEditorContext=/ExternalWebAppContext,\

defaultSymbolRenderer=/include/addresses/defaultSymbol.jsp,\

symbolResource=address.default.shipping.symbol,\

symbolMouseoverResource=address.default.shipping.mouseover

# Additional values added to defaultInfoMap of all addresses

defaultAddressEditorOptions=\

# The customEditorContext is useful only if the include file is contained in a

Page 180: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 7 2

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ # different web application

customEditorContext=/ExternallWebAppContext,\

customEditorPage=/include/addresses/defaultFlagEditor.jsp,\

resourceMessageKey=address.makeDefaultShippingAddress

# Place to put old default shipping addresses when a new one is added

orphanedAddressSinks=MiscellaneousAddressReferenceManager

Managing Bill Addresses of Credit Cards Example

The following is an example configuration of an AddressReferenceManager that manages the billing addresses of credit cards associated with the user profile using the CreditCardAddressReferenceManager.properties file:

$class=atg.userprofiling.address.AddressCollectionReferenceManager

$scope=request

managerName=creditCards

# Disallow deletion of addresses associated with credit cards. Addresses can still

# be edited or replaced with other addresses.

deletable=false

# Properties on Profile that this manager manages. Note that

# defaultCreditCard.billingAddress is a single value, while

# creditCards.billingAddress is a collection of each address associated with the

# profile's credit cards.

addressProperties=\

defaultCreditCard.billingAddress,\

creditCards.billingAddress

Managing Duplicate Addresses Example

The following is an example configuration of an AddressReferenceManager that manages the consolidation of duplicate addresses and creation of secondary addresses in the user profile using the MiscellaneousAddressReferenceManager.properties file:

$class=atg.userprofiling.address.AddressCollectionReferenceManager

$scope=request

managerName=miscellaneous

# If consolidateSimilarAddresses is true, then addresses that are similar (all

# fields match) are combined into a single address.

consolidateSimilarAddresses=true

# All non-default, non-credit card addresses. The secondaryAddresses property is

Page 181: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 7 3

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ# of type map, the map key is the address nickname.

addressProperties=\

homeAddress,\

secondaryAddresses[]

Enabling and Disabling Address Copies

When an address is updated, the system can be configured to make a copy of the address and store it in a defined location. CSC uses cascade-delete to indicate if the property should be copied. For example, if the defaultAddress property is set to cascade-delete=true in the profile properties file, whenever another address is identified as the default, CSC will copy the existing default address into a predefined collection before setting the new address as the default. To disable the automatic copying of addresses, set cascade-delete to false.

CSC also allows you to identify an address as requiring exclusive access. Using the AddressCollectionReferenceManager, you can set the exclusiveReferenceProperties to indicate which properties require an exclusive reference to an address. This disables the sharing of addresses between properties. For example, to indicate that the secondaryAddresses cannot be the same as the creditCardAddresses, you would set the following:

AddressCollectionReferenceManger.properties:

# properties of the Profile

exclusiveReferenceProperties=creditCards.address,secondaryAddresses

To indicate that all properties require an exclusive reference, you can configure the following:

AddressCollectionReferenceManger.properties:

# properties of the Profile

exclusiveReferenceProperties=*

To indicate that single-value addresses require exclusive references, use the DefaultAddressReferenceManager to set the exclusiveReference property to true.

Modifying Submitted Orders CSC allows the modification of submitted orders that have not been fulfilled, as well as returns and exchanges to orders that have been fulfilled.

To identify what orders can be returned, edit the modifiable and returnable-order states:

1. Configure which order states are not modifiable using the following component:

# /atg/commerce/custsvc/order/OrderIsModifiable

nonModifiableOrderStates=REMOVED,

Page 182: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 7 4

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ QUOTED,

NO_PENDING_ACTION,

PENDING_REMOVE,

PENDING_CUSTOMER_RETURN

nonModifiablePaymentGroupStates=REMOVED,

SETTLED

2. Configure which order states are returnable using the following component:

# /atg/commerce/custsvc/order/OrderIsReturnable

shippingGroupShippedStates=NO_PENDING_ACTION

When an agent modifies an order, the order’s state determines how the edit process is handled. CSC can stage changes to an order and then apply them all in a single commit action.

The process of modifying submitted orders uses a cloning technique where the order is cloned into a duplicate order. After the order is cloned, all modifications are applied to the clone order and then reconciled with the original order in a single commit transaction.

The cloning technique is performed on selected orders based on their state. The isCloneEditState(Order) API determines if a particular order qualifies for this process. This API, by default, returns a result based on the clonedEditOrderState configured in CSRAgentTools. The configured states include: SUBMITTED, PROCESSING, PENDING_MERCHANT_ACTION and TEMPLATE.

Additional states can be added by modifying the configuration of CSRAgentTools clone edit order states or by extending the isCloneEditState API.

When the order has been cloned for modification, the application is in clone edit mode. When an agent is working on a clone order there will be no indication in the UI. The UI will always show the original order ID. The isCloneEditMode() API in the CSROrderHolder determines when this mode is active. The getOriginalOrder() API is used for returning the original order ID when required.

Cloning Pipelines

The entire cloning process is facilitated by a pair of pipelines or chains. One chain prepares the order for editing by creating the clone copy. Another chain reconciles the changes with the original order when everything is committed by the agent.

These two chains are executed based on the state of the order. For example, different chains could be defined for handling orders in different states. CSC provides one set of chains for handling all orders is a submitted state as defined by the submitted order states configured in CSRAgentTools. These two chains can be modified using standard configuration override techniques.

The CloneEditManager component contains the configuration for mapping order states to the chain names using properties named initializeEditChains and reconcileOrderChains.

The following describes each link in the two chains.

Page 183: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 7 5

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μChain: initSubmittedOrderEdit - executed at the start of the edit process

Link Processor Component Description

cloneOrderForEdit /atg/commerce/custsvc/

order/edit/processor/

CloneOrderForEdit

Performs the cloning of the order at the repository level and creates the ATG Commerce objects from the newly created order item by calling loadOrder.

validateCloneForEdit /atg/commerce/custsvc/

order/edit/processor/

ValidateCloneFor

Edit

Validates the clone order after it has been created.

initializeCloneEditState /atg/commerce/custsvc/

order/edit/processor/

InitializeClone

EditState

Initializes a state object based on the two orders, which is used to later reconcile the changes back to the original order.

Chain: reconcileSubmittedOrder - execute to reconcile the changes with the original order

initializeReconcilitation /atg/commerce/custsvc/order/

edit/processor/

InitializeReconciliation

Prepares the state object for reconciliation.

applyChanges /atg/commerce/custsvc/order/

edit/processor/ApplyChanges

Copies the changes to the original order based on the contents of the clone order and information stored in the clone edit state object created in the initialization pipeline.

executeValidate

OriginalOrder

/atg/commerce/order/processor

/ExecuteValidateFor

CheckoutChain

Executes the core commerce process that validates the original order for checkout.

removeEmptyShippingGroups

FromOriginal

/atg/commerce/order/processor

/RemoveEmptyShippingGroups

Executes the core commerce process that removes empty shipping groups from the original order.

removeEmptyPaymentGroups

FromOriginal

/atg/commerce/order/processor

/RemoveEmptyPaymentGroups

Executes the core commerce process that removes empty payment groups from the original order.

Page 184: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 7 6

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μcreateImplicitRelationships

ForOriginal

/atg/commerce/order/processor

/CreateImplicitRelationships

Executes the core commerce process that creates implied relationships between commerce objects in the original order.

setPaymentGroupAmounts

OnOriginal

/atg/commerce/order/processor

/SetPaymentGroupAmount

Executes the core commerce process sets the amount of the payment groups based on relationship in the original order.

authorizePaymentGroups /atg/commerce/custsvc/order/

edit/processor/

AuthorizePaymentGroups

Executes a process that adjusts for the authorized amounts of the payment groups in the original. (e.g. new payment groups are authorized and changed payment groups have their authorized amounts adjusted.

updateOriginalOrder /atg/commerce/order/processor

/UpdateOrder

Calls updateOrder on the original order.

reconcileGiftlistRepository /atg/commerce/custsvc/order/

edit/processor/

ReconcileGiftListRepository

Reconciles gift list quantities for changes made to the original order.

consumePromotions /atg/commerce/custsvc/order/

edit/processor/

ConsumePromotions

Consumes coupon promotions that may have been claimed and used during the edit process.

sendCouponPromotion

UsedMessages

/atg/commerce/custsvc/order/

edit/processor/SendCoupon

PromotionUsedMessages

Sends the core commerce PromotionUsed JMS event for each consumed promotion identified by the previous processor.

sendFulfillment

Notifications

/atg/commerce/custsvc/order/

edit/processor/Send

FulfillmentNotifications

Sends fulfillment JMS events for each change applied to the original order.

Page 185: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 7 7

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μsendAgentEvents /atg/commerce/custsvc/order/

edit/processor/

SendAgentEvents

Sends agent audit events for each change made to the original order.

Submitted Orders and Clone Editing

When an agent selects an order that is considered modifiable, CSC will make a copy of that order when it is considered to be in a clone edit state.

Because the order is copied into a transient state for the edit process, the changes applied by initial pricing operation on the order are not immediately saved to the repository. They are only saved if the agent completes the post-submit checkout of the order.

Cloning Core Classes

The following describes a few of the core classes and components that implement the clone edit feature and are the likely places for applications to apply overrides and extensions:

CloneEditManager

This class provides some of the core configurations to the feature. It provides the API for executing the pipeline chains and performing call backs to the CloneEditHandlers throughout the entire process.

Classes atg.commerce.order.edit.CloneEditManager

Subclass atg.commerce.csr.order.edit.CSRCloneEditManager

Component /atg/commerce/custsvc/order/edit/CSRCloneEditManager

Configuration cloneEditHandlers provide a list of CloneEditHandler components intializeEditChains is a map of pipeline chains used in the initialization process. Keyed by order state. reconcileOrderChains is a map of pipeline chains used in the initialization process. Keyed by order state.

CloneEditHandler

This abstract class is used for creating application classes that participate in the entire process through a callback interface. Components of this type are configured in the CloneEditManager and are executed at various points in the initialization and reconciliation processes.

Classes atg.commerce.order.edit.CloneEditHandler

Page 186: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 7 8

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μSubclass atg.commerce.csr.order.edit.CollectionEditHandler,

CommerceItemEditHandler, PaymentGroupEditHandler, ShippingGroupEditHandler, ManualAdjustmentEditHandler, RelationshipEditHandler, HandlingInstructionEditHandler, AgentCommerceEditHandler, MarkerEditHandler, OrderPropertyEditHandler

Component /atg/commerce/custsvc/order/edit/OrderPropertyHandler

/atg/commerce/custsvc/order/edit/CommerceItemHandler

/atg/commerce/custsvc/order/edit/ShippingGroupHandler

/atg/commerce/custsvc/order/edit/HandlingInstructionHandler

/atg/commerce/custsvc/order/edit/PaymentGroupHandler

/atg/commerce/custsvc/order/edit/RelationshipHandler

/atg/commerce/custsvc/order/edit/ManualAdjustmentHandler

/atg/commerce/custsvc/order/edit/AgentCommentHandler

/atg/commerce/custsvc/order/edit/MarkerHandler

CloneEditState

This class defines the state object used by the clone edit process. It provides access to the original and clone orders and API for adding and retrieving state information. It is created and returned by the initialization process and is required as input to the reconciliation process.

Classes atg.commerce.order.edit.CloneEditState

CSC stores this object in the window scoped CSROrderHolder, which can be accessed using the getCloneEditState API.

CSROrderHolder

This class defines the shopping cart used by an agent to modifying customer orders. It provides an API for determining when the application is in clone edit mode, storing the clone edit state object and for masking the current working order id with the original order id. The loadOrder(Order) API initiates the clone edit process for a given order and stores the clone edit state object.

Classes atg.commerce.csr.order.CSROrderHolder

Components /atg/commerce/custsvc/order/ShoppingCart

CSRAgentTools

This class provides the more generic API used by the application. This includes the configuration for submitted order states and the API for determining if an order should used the cloning feature.

Page 187: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 7 9

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ

Classes atg.commerce.csr.util.CSRAgentTools

Components /atg/commerce/custsvc/util/CSRAgentTools

CSRCommitOrderFormHandler

This form handler class provides the handlers for triggering the reconciliation process.

Classes atg.commerce.csr.order.CSRCommitOrderFormHandler

Components /atg/commerce/custsvc/order/CSRCommitOrderFormHandler

Extending Core ATG Commerce Objects for Cloning

You may extend core ATG Commerce objects, for example: Order, ShippingGroup, PaymentGroup, Relationship. A site might have extended OrderImpl into MyStoreOrderImpl to add new properties, or added a new type of payment group called MyStoresPaymentMethod. The configuration of the clone editing components may need adjusting or, in some cases, class extensions may be necessary.

It may be necessary to change the cloning process when an application has added new properties to the core ATG Commerce objects. Under normal circumstances all repository items referenced by the cloned item are also cloned into new transient repository items. This is known as the deep clone. An application may want new properties cloned or may want to eliminate certain properties from the cloning process.

The cloning feature allows you to configure the cloning process to exclude certain properties in the deep clone process in the atg/commerce/custsvc/order/edit/processor/CloneOrderForEdit component. The excludedOrderProperties component maps order repository item types to a list of properties that should be excluded from the deep cloning process. The following is the default configuration that disables the repository cloning for properties of two types in the order repository:

excludedOrderProperties=

itemPriceInfo=priceList,

pricingAdjustment=pricingModel

An application can also introduce a custom CloneEditHandler to perform special handling on their application specific properties. For example, an application may want to exclude custom property from the deep clone and handle the cloning process another way. The CloneEditHandler callback interface is executed after the repository cloning process is completed and provides an opportunity for applications to execute post cloning logic.

If an application has extended the core ATG Commerce objects, the new types must be identified to the clone editing feature. During the reconciliation phase, cloned object properties are copied to their original order counterpart. You must map which properties should be copied based on the type of object. The following is an example of the configuration for the OrderImpl object type.

Page 188: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 8 0

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μComponent: atg/commerce/custsvc/order/edit/OrderPropertyHandler

propertiesToCopyOnUpdate=\atg.commerce.order.OrderImpl=description,,state,

,stateDetail,,taxPriceInfo,,priceInfo,,specialInstructions

To add MyStoreOrderImpl:

propertiesToCopyOnUpdate+=\myapp.commerce.order.MyAppOrderImpl=

myCustomProperty

Note: Only the extended properties of the class must be defined for each class extension.

The same type of configuration change is needed for extensions to the CommerceItem, ShippingGroup, PaymentGroup and Relationship objects. See CommerceItemHandler, ShippingGroupHandler, PaymentGroupHandler and RelationshipHandler respectively.

Handling and Fulfillment

If a site uses the ATG Fulfillment module, when an order is originally submitted, the order and some of its contained objects will change state once the notification is received by the fulfillment subsystem.

Note: If is recommended running the ATG Fulfillment instances on both the Agent and Production clusters.

Object State after submit State after received by fulfillment

Order Submitted to

Fulfillment

Processing

ShippingGroup Initial Pending shipment

ShippingGroupRelationship Initial Pending delivery

A pipeline is executed to reconcile the changes with the original order. At the end of this chain there is a link that triggers the fulfillment notification messages. This process creates and sends the fulfillment Modification objects for changes made to the original order.

When the submitted order is modified by the Agent in the UI, new shipping groups and relationships may be created as a result. In this case, the new shipping groups and shipping group relationships will be saved in their Initial state. An application must extend the reconciliation process to perform any state modifications to these objects (e.g. to mark them in their pending shipment and pending delivery states). This could be accomplished by either extending the reconciliation pipeline chain or responding the modification fulfillment events generated by the process.

For additional information on handling and fulfillment, refer to the ATG Commerce Programming Guide.

Page 189: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 8 1

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μFulfillment Notification for Order Modifications

CSC sends standard fulfillment notification messages for all changes made to the order. They are sent out in the form of the following ATG Commerce objects:

atg.commerce.fulfillment.PaymentGroupUpdate

atg.commerce.fulfillment.ShippingGroupUpdate

atg.commerce.fulfillment.GenericAdd

atg.commerce.fulfillment.GenericRemove

CSC uses the ATG Commerce OrderFulfillmentTools API to create these objects. For example, when a new payment group is added, CSC calls the following OrderFulfillmentTools API to generate the modification object.

createGenericAddValueToValueModification(Modification.TARGET_PAYMENT_

GROUP, pPaymentGroup, Modification.TARGET_ORDER, pOrder);

For new commerce items, shipping groups and payment groups CSC sends GenericAdd messages. For updated commerce items, shipping groups and payment groups, CSC sends GenericUpdate, ShippingGroupUpdate and PaymentGroupUpdate objects respectively. ATG Commerce items are the only objects for which CSC sends GenericRemove events. For updates made to other Order properties, CSC generates GenericUpdate events.

All the events are generated by the clone edit handlers during the reconciliation process that occurs when an agent commits his updates from the order review page.

Customizing Order Fulfillment

CSC emits fulfillment ModifyOrderNotification events for the changes made to the order. Each event has an array of Modification objects attach that provide detail about the changes. The reconciliation pipeline triggers the creation of these objects:

<pipelinelink name="sendFulfillmentNotifications"

transaction="TX_MANDATORY">

<processor jndi="/atg/commerce/custsvc/order/edit/processor/

SendFulfillmentNotifications"/>

<transition returnvalue="1" link="sendAgentEvents"/>

</pipelinelink>

OrderFulfillmentTools contains API for generating ModifyOrderNotification and Modification objects. The CSC CloneEditHandlers use this API to generate the Modification objects based on the changes they manage on the order.

For example, when a payment group is added to the order, the payment group edit handler might generate a Modification object like this:

Modification mod =

fullfillmentTools.createGenericAddValueToValueModification

(Modification.TARGET_PAYMENT_GROUP,pPaymentGroup,Modification.

TARGET_ORDER,pOrder);

Page 190: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 8 2

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μThe modification would be attached to a ModifyOrderNotification event, along with all the other Modification objects, and then sent.

ModifyOrderNotification msg = new ModifyOrderNotification();

msg.setOrderId(order.getId());

msg.setModifications(pArrayOfModifications);

sendCommerceMessage(msg);

Customizing Refund Methods You can add support for new refund methods by performing the following steps:

1. Extend the atg.commerce.csr.returns.RefundMethod class, which holds your custom refund method information. To create a limit of the refund amount for the custom refund method type, you must extend the getMaximumRefundAmount() method. This method is used in the refundType page. The maximum refund amount disables a user’s ability to enter a higher refund amount. If you do not implement the method, no refund amount limit is set.

2. Extend the refundMethod repository item descriptor, which is defined in the /atg/commerce/custsvc/CsrRepository.xml file. Extend the refundMethod item descriptor to save custom refund method information in your database.

3. Extend the ReturnManager.buildRefundMethodList() method, which builds the list of RefundMethod objects from the original order’s payment groups. This list is stored in the returnRequest.getRefundMethodList(). It generates a RefundMethod for each credit card that has any debited amount that has not yet been credited. If there is still a refund left over, the method allocates the remainder to the generated store credit refund method. You must extend this method to add custom RefundMethod objects but ensure that you do not allocate money across RefundMethods.

4. Extend the ReturnTools.createRefundMethodItem() method, which creates a refund method item for each refund method listed within the returnRequest.getRefundMethodList() method. After creating a refund method item, the method copies property values from the refund method to the refund item and then adds the item to the repository. You must extend this method to add the custom refund method to the repository. By default, this method handles the credit card and store credit refund methods.

5. Extend the ReturnManager.issueAlternateCreditType() method, which performs the crediting against the refundMethod for all refund types that are not recognized by the issueCredits() method. You extend the ReturnManager. issueLaternateCreditType() method to credit the custom refund type. The issueCredits() method handles credit card and store credit refund methods.

6. Extend the ReturnTools.getRefundMethod() method, which generates a ReturnMethod object from the refundmethod repository item when the return request is reloaded. You extend this method to generate a custom RefundMethod

Page 191: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 8 3

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μobject whose properties are set from the repository item. By default, this method handles credit card and store credit refund methods.

7. Add a display page fragment for the custom refund method. The refundType page displays the refund methods from the returnRequest.getRefundMethodList() method. You must add a display page fragment for the custom refund method. Update the payment group type configuration file by updating the custom payment group displayRefundMethodPageFragment property value. This property identifies a page fragment that specifies the location of a JSP fragment. The JSP fragment displays your custom refund method type. The display fragment is used in the refund type and the return confirmation pages.

Customizing Returns and Exchanges The following sections provide information on the returns and exchange processes and calculators that can be used for customization.

Returns and Exchanges Overview

Refunds and replacement item prices are calculated as though all of the items, including replacement items, were purchased together in a single order.

For example, if a customer purchases two cameras, one memory card and one travel bag, and decides to return one of the cameras, the refund is calculated as though one camera, one memory card and one travel bag were originally purchased. Should the customer want to exchange the memory card for a lens, the lens exchange is calculated as though one camera, one lens and one travel bag were originally purchased, resulting in an original and an exchange order.

Return requests are derived from an originating order. The returnRequests use the original purchase order to query the return request repository for related returns. Related return requests can be traced directly to the original purchase order through either the order or the replacement order properties. For information on extending returnRequest objects, refer to the Extending Return Request Objects section.

Up to three orders are used for calculating the correct refund amount and exchange item prices. A Return Adjusted Order and a Return Calculation Order are generated for all returns. A Promotions Evaluation Order is generated when performing an exchange. Collectively, these orders are known as the working order:

Return Adjusted Orders - Contains the items from the originating order and replacement items from any replacement orders. In creating the RAO the origination items and shipping group IDs are mapped to the RAO item and shipping group IDs. This order is available in the ReturnRequest through the getReturnAdjustedOrder().

Return Calculation Orders - A clone of the RAO that is adjusted for the items being returned in the current return request. Each item that is returned has a quantity adjustment in this order. The price change between the RCO and RAO is used to calculate the suggested refund amount. This order is regenerated each time new

Page 192: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 8 4

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μreturn items are selected by an agent. This order is available in the ReturnRequest through the getReturnCalculationOrder().

The Promotion Evaluation Order - Created only for exchanges, the PEO is created by cloning the RAO. It determines how the original promotions affect the cost of the exchange items and changes in cost for the other items not being returned. This order is in the ReturnRequest through the getPromotionsEvaluationOrder().

Returns and Exchanges Pipelines

The following atg/commerce/commercepipeline.xml purchase process pipelines are used by CSC:

Pipeline Chain Description

createReturnAdjustedOrder This chain is executed by the CloneEditManager to create the RAO.

createReturnCalcuationOrder This chain is executed by the CloneEditManager to create the RCO.

createPromotionEvaluationOrder This chain is executed by the CloneEditManager to create the PEO.

For additional information on the CloneEditManager, refer to the Cloning Core Classes section.

Calculating Suggested and Actual Refund Amounts

Suggested refund amounts are based on a collection of cost adjustment objects where adding or removing cost adjustment objects factor into the refund value.

Suggested refund amounts are itemized in the ReturnItem and ReturnRequest objects:

Suggested Value Comments

Return Item Suggested Refund Sum of the ItemCostAdjustment amount, the Order Discount Share and the Manual Adjustment Share.

Return Item Suggested Shipping Refund Share Sum of the ItemCostAdjustment Shipping Share.

Return Item Suggested Tax Refund Share Sum of the ItemCostAdjustment Tax Share.

Return Request Total Suggested Tax Refund Aggregate total of Suggested Tax Refund for ReturnItems.

Return Request Total Suggested Shipping Refund Aggregate total of Suggested Shipping Refund for ReturnItems.

Page 193: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 8 5

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ

Actual refund amounts, which are initially set when the suggested values are calculated, are itemized as:

Actual value Comments

Return Item Actual Refund Initialized from suggested value. Can be modified by the agent.

Return Item Actual Shipping Refund Share API calculated value based on the ReturnRequest Actual Total Shipping.

Return Item Actual Tax Refund Share API calculated value based on the ReturnRequest Actual Total Tax.

Return Request Total Actual Tax Refund Initialized from Suggested Total Tax.

Return Request Total Actual Shipping Refund Initialized from the Suggested Total Shipping. Can be modified by the agent.

Return Request Total Other Refund Placeholder for agent adjustments to the Refund Value. Can be modified by the agent.

Return Request Total Return Fee API generated value.

Return Request Total Item Refund The value is created dynamically and is the sum of ReturnItem Actual Refunds.

Total Refund Subtotal The value is created dynamically and is the sum of ReturnRequest Total Item Refund + Total Tax + Total Shipping + Other

Total Refund Amount The value is created dynamically and is the sum of Total Refund Subtotal minus Total Return Fee

ItemCostAdjustments

ItemCostAdjustments are an integral part of the return process as they capture changes in cost for both returned and non-returned items. Non-return items are any item/shipping group relationship combinations that do not have any portion being returned in the current request.

When you work with return items, the sum of the ItemCostAdjustments sets the refund properties on the return item. Once the return request is saved, the ItemCostAdjustment for that return item is discarded.

When you work with non-return items, the ItemCostAdjustments are used to offset the calculations for the total refund value in the return request. Unlike the ItemCostAdjusments for return items, ItemCostAdjustments for non-return items are saved, along with the return request, to the repository.

Page 194: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 8 6

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μThere can be multiple ItemCostAdjustments per item. Whenever additional ItemCostAdjustments are generated, for either returned or non-returned items, the refund value for the return will be automatically adjusted.

The following is an example of ItemCostAdjustments:

public class ItemCostAdjustment

{

String mItemId – The original commerce item id for the adjustment

String mShippingGroupId – The original shipping group for the adjustment

double mAmount – the delta amount

double mOrderDiscoutnShare – the order discount share delta

double mManualAdjustmentShare – the manual adjustment share delta

double mTaxShare – the tax share delta

double mShippingShare – the shipping share delta

}

The ItemCostAdjustments item-descriptor name is configured in the /atg/commerce/custsvc/ returns/ReturnTools file using the itemCostAdjustmentDescriptorName property. For example:

public void setItemCostAdjustmentDescriptorName(String

pItemCostAdjustmentDescriptorName) {

mItemCostAdjustmentDescriptorName = pItemCostAdjustmentDescriptorName;

An API is available for ItemCostAdjustment objects and repository items. Refer to the API JavaDoc for additional information.

ReturnTools ItemCostAdjustment Creation

ReturnTools provides the following methods to generate a new ItemCostAdjustment object from the given ItemCostAdjustment repository item:

protected ItemCostAdjustment createItemCostAdjustment()

protected ItemCostAdjustment createItemCostAdjustment

(RepositoryItem pItemCostAdjustmentItem) throws RepositoryException protected ItemCostAdjustment

createItemCostAdjustmentFromItem(RepositoryItem

pItemCostAdjustmentItem) throws RepositoryException protected void setBasePropertiesOfItemCostAdjustment(ItemCostAdjustment

pItemCostAdjustment,RepositoryItem pItemCostAdjustmentItem)

protected void saveItemCostAdjustments(ReturnRequest pReturnRequest

MutableRepositoryItem pReturnRequestItem) throws RepositoryException protected void loadItemCostAdjustments(ReturnRequest pReturnRequest,

RepositoryItem pReturnRequestItem) throws RepositoryException

Page 195: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 8 7

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μReturnManagerItemCostAdjustment Creation

ReturnManager contains the following method that generates the ItemCostAdjustments for the return:

protected void generateItemCostAdjustments(ReturnRequest pReturnRequest)

throws ReturnException

The following methods create the ItemCostAdustments based on the pricing deltas between the RAO and the RCO:

protected Collection generateReturnCalculationAdjustments(ReturnRequest

pReturnRequest) throws ReturnException protected Collection generateOrderComparisonAdjustments(ReturnRequest

pReturnRequest, Order pOrder, Order pCorrespondingOrder,Map

pItemToCorrespondingItemMap,Map

pShippingGroupToCorrespondingShippingGroupMap) throws ReturnException

The following methods identify the need for Promotion and Shipping adjustments:

protected Collection generatePromotionEvaluationAdjustments(ReturnRequest

pReturnRequest) throws ReturnException protected Collection generateShippingRefundAdjustments(ReturnRequest

pReturnRequest) throws ReturnException

ReturnItem ItemCostAdjustment Creation

ReturnItem contains the following methods that add a new ItemCostAdjustment to the return:

public void addItemCostAdjustment(ItemCostAdjustment pItemCostAdjustment)

public void addItemCostAdjustments(Collection pItemCostAdjustments)

public void clearItemCostAdjustments()

public Collection getItemCostAdjustments()

ReturnRequest ItemCostAdjustment Creation

ReturnRequest contains the following methods that return the collection of ItemCostAdjustment objects:

public void addNonReturnItemCostAdjustment(ItemCostAdjustment

pItemCostAdjustment)

public void addNonReturnItemCostAdjustments(Collection

pItemCostAdjustments)

public void clearNonReturnItemCostAdjustments()

public Collection getNonReturnItemCostAdjustments()

Order Comparisons

The ItemCostAdjustment for order comparisons:

Are generated by comparing an order (FromOrder) to its clone counterpart order (ToOrder). The comparison API is given the maps of FromItem to ToItem and

Page 196: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 8 8

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μFromShippingGroup to ToShippingGroup that were created when the clone was made.

Iterate over the shipping group relationships in the FromOrder and compare its pricing value to the corresponding relationship in the ToOrder. The pricing value of each relationship is limited by the range specified in the relationship.

The FromRelationship and ToRelationship obtain the collection of DetailedItemPriceInfos for the range, and then aggregate the amount, order discount share, manual adjustment share and tax from the details. For ToItems or ToRelationships that no longer exist because of items being returned, the aggregate value is zero (0).

Capture the deltas in amount, order discount share, manual adjustment share and tax in an ItemCostAdjustment

Extending Return Request Objects

ReturnRequests represent Shipping Groups as a ReturnShippingGroup and ATG Commerce Items as a ReturnItem. The return refund amount is distributed from RefundMethods

If you extend a repository item object, you may need to extend these return objects, as well as the load and save methods.

You can modify the following methods to load and save return objects in ReturnRequest:

atg.commerce.csr.returns.ReturnRequest.loadReturnRequest - (Repository Item) This method loads information from the Return Request repository item to the instance.

atg.commerce.csr.returns.ReturnRequest.saveReturnRequest - (Mutable Repository Item) This method is saves information from the Return Request instance to the repository item.

You can modify the following methods to load and save return objects in ReturnItem:

atg.commerce.csr.returns.ReturnItem.loadReturnItem - (Repository Item) This method loads information from the Return Item repository item to the instance.

atg.commerce.csr.returns.ReturnItem.saveReturnItem - (Mutable Repository Item) This method saves information from the Return Item instance to the repository item.

You can modify the following methods to load and save return objects in RefundMethod:

atg.commerce.csr.returns.RefundMethod.loadRefundMethod - (Repository Item, Order) This method loads information from the refund method repository item to the instance.

atg.commerce.csr.returns.RefundMethod.saveRefundMethod - (Mutable Repository Item) This method saves information from the refund method instance to the repository item.

Page 197: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 8 9

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μCreating a Return Request Instance

A returnRequest can be based upon the returnRequestClass property values listed in /atg/commerce/custsvc/returns/ReturnTools.properties file. The default for the returnRequestClass property is:

returnRequestClass=atg.commerce.csr.returns.ReturnRequest

Use the atg.commerce.scr.returns.ReturnTools.createReturnRequestInstance(0rder) method to create the instance.

Creating a Return Shipping Group Instance

The /atg.commercecsr.returns.ReturnTools.createReturnShippingGroupInstance (ShippingGroup) method creates a return shipping group instance based on the returnShippingTypeClassMap property value. If a shipping group type is configured with a ReturnShippingGroup class, a return shipping group instance is created. If not, a default value instance is created. This method calls the ReturnShippingGroup(ShippingGroup) constructor to load return items.

The default configuration for the returnShippingTypeClassMap property is:

/atg/commerce/custsvc/returns/ReturnTools.properties

returnShippingTypeClassMap=\

default=atg.commerce.csr.returns.ReturnShippingGroup,\

hardgoodShippingGroup=atg.commerce.csr.returns.ReturnShippingGroup

Creating a Return Item Instance

The /atg.commerce.csr.returns.ReturnTools.createReturnItemInstance(CommerceItem) method creates a return item instance based on the returnItemTypeClassMap property value. If a commerce item type is configured with a return item class, a return item instance is created. This method calls the ReturnItem(CommerceItem) constructor and sets the commerce item property.

The default configuration for the returnItemTypeClassMap property is:

/atg/commerce/custsvc/returns/ReturnTools.properties

returnItemTypeClassMap=\

default=atg.commerce.csr.returns.ReturnItem

Creating a Refund Method Instance

The /atg.commerce.csr.returns.ReturnTools.createRefundMethodInstance(String) method creates a refund method instance based on the refundMethodTypeClassMap property value. If the given type is configured with a refund method class, a refund method instance is created. The payment group class type is used to create refund method instances.

The default configuration for refundMethodTypeClassMap property is:

/atg/commerce/custsvc/returns/ReturnTools.properties

refundMethodTypeClassMap=\

Page 198: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 9 0

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ default=atg.commerce.csr.returns.RefundMethod,\

creditCard=atg.commerce.csr.returns.CreditCardRefundMethod,\

storeCredit=atg.commerce.csr.returns.StoreCreditRefundMethod

Creating Item Descriptor Mapping

The beanNameToItemDescriptorMap property creates a repository item based on the return-related class. If a class is not configured the item will not be saved in the repository.

The default configuration for the beanNameToItemDescriptorMap property is:

/atg/commerce/custsvc/returns/ReturnTools.properties

beanNameToItemDescriptorMap=\

atg.commerce.csr.returns.ReturnRequest=returnRequest,\

atg.commerce.csr.returns.ReturnItem=returnItem,\

atg.commerce.csr.returns.RefundMethod=refundMethod,\

atg.commerce.csr.returns.CreditCardRefundMethod=creditCard,\

atg.commerce.csr.returns.StoreCreditRefundMethod=storeCredit

Extending Amount Distribution Methods

The atg.commerce.csr.returns.ReturnManager.buildRefundMethodList(Order, ReturnRequest,double,double) builds the refund methods from an order and allocates the refund amount. The refund methods are generated using the generateRefundMethodsForReturn (ReturnRequest) method.

The total refund amount is distributed as follows:

1. The buildRefundMethodList method uses the store credit amount and the total refund amount to determine what should be allocated to a store credit refund method. The getRefundAmountRemaningRefundMethod returns the store credit refund method.

2. The remaining refund amount from the total refund amount is distributed across other refund methods, using the allocateRefundAmountForReturn method.

3. If there is still a remaining refund amount to be allocated, it is added to the getRefundAmountRemaningRefundMethod.

For example, you can extend the getRefundAmountRemaningRefundMethod to return any of the supported refund method type, if the buildRefundMethodList method receives a zero store credit amount.

Configuring Default Return Fees

You can set a default return fee that is applied to all returns. This flat rate fee, which is not set by default, is configured in the ReturnManager. The value applied here is returned as the default return fee:

double getDefaultReturnFee()

setDefaultReturnFee(double pDefaultReturnFee)

Page 199: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 9 1

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μThe value entered as the default return fee is applied towards the refund. You can also create a dynamic return fee that is based upon the value of the return. To generate a dynamic return fee value, extend the following:

protected double calculateReturnFee(ReturnRequest pReturnRequest)

Note that only the default return fee will be used by the system unless you have extended the above method.

Identifying Returnable Orders and Items

Before an item or an order can be returned, all items within the order must have been shipped. Additionally, at least one item in the order must be designated as returnable before the order can be returned. All items within a return are checked to ascertain if they are returnable. The order is also verified to ensure that all items have been fulfilled before the return process can continue.

If all items within the order have been returned, the Return link is removed from the UI, and no returns may be processed against the order.

For orders, the following API determines if the Return or Exchange Items link is displayed on the order view page. For an order to be marked as returnable all items must be fulfilled and the order must contain at least one item that is marked returnable.

public boolean isReturnable(Order pOrder)

The following API determines if the Return link is displayed in the Purchase Item History panel. It is also called for each item to determine if an order is returnable. An item is only returnable if its quantity is greater than 0. Whenever an item is returned, the quantity of the item in the order is decremented.

public boolean isItemReturnable(CommerceItem pCommmerceItem)

public boolean isItemReturnable(RepositoryItem pCommmerceItem)

Note: The link will only be displayed if both the item and order are returnable.

Customizing Shipping Refund Calculations

Shipping refunds, which are based on the cost of shipping the return items, are calculated differently than other refund calculations. The shipping refund value is based on the original cost for shipping the return items. This value is not adjusted for changes in promotion values or the selected exchange items.

The Shipping Refund calculation, by default, distributes shipping costs evenly among all items within a shipping group. ATG Commerce does not store a default value for shipping at the item level; however, if you have extended core ATG Commerce to calculate shipping based on item specific values, you can incorporate that extension into the shipping share map calculation.

The shipping refund calculation API is accessible in ReturnManager. Refer to the API documentation for additional information:

Page 200: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 9 2

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μprotected void calculateShippingCostShare(ReturnRequest pReturnRequest)

protected Map calculateShippingCostShareMap(ReturnRequest pReturnRequest,

Order pOrder) throws ReturnException

protected double calculateShippingShareForRelationship(ReturnRequest

pReturnRequest, ShippingGroupCommerceItemRelationship

pShippingGroupCommerceItemRelationship, Map pRelsAlreadyCalculated)

The ShippingCostMap is extended in ReturnRequest:

public Map getShippingCostMap()

public void setShippingCostMap(Map pShippingCostMap)

The shipping share value is calculated for each ShippingGroupCommerceItemRelationship in the Original Purchase Order. The relationshipId is mapped to the shared amount and is used to calculate shipping refund value for each returned item.

ItemPriceSource Objects

The ReturnRequest provides access to the ItemPriceSource objects that are generated for the return. These objects are generated from the pricing information on the original order and any replacement orders. The ItemPriceSource objects are then passed to all pricing operations run against the working and exchange orders. As such, any additional ItemPriceSource objects that have been added to the ReturnRequest would automatically be used in all pricing operations. The ReturnRequest contains the following methods that allow you to add ItemPriceSource objects:

public List getItemPriceSources()

public void setItemPriceSources(List pItemPriceSources)

ReturnManager uses the following method to generate ItemPriceSources:

protected void generateItemPriceSources(ReturnRequest pReturnRequest)

Note: If you are using other sources of legacy pricing, it is best to integrate them into the ItemPriceSource method.

For additional original pricing information, refer to the Original versus Current Pricing section.

Accessing Working Orders

Working orders can be modified using the following API in ReturnManager:

protected Order createReturnAdjustedOrder(ReturnRequest pReturnRequest)

throws ReturnException

protected Order createReturnCalculationOrder(ReturnRequest pReturnRequest)

throws ReturnException

protected Order createPromotionEvaluationOrder(ReturnRequest

pReturnRequest)throws ReturnException

The following properties configure the associated pipeline:

Page 201: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 9 3

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ createPromotionEvaluationOrderPipeline - Configures the pipeline used to

generate the promotion evaluation order

createReturnCalculationOrderPipeline - Configures the pipeline used to generate the return calculation order

createReturnAdjustedOrderPipeline - Configures the pipeline used to generate the return adjusted order

Use the following API in ReturnRequest to access working orders:

public Order getReturnAdjustedOrder()

public void setReturnAdjustedOrder(Order pReturnAdjustedOrder)

public Order getReturnCalculationOrder()

public void setReturnCalculationOrder(Order pReturnCalculationOrder)

public Order getPromotionEvaluationOrder()

public void setPromotionEvaluationOrder(Order pPromotionEvaluationOrder)

For additional information, refer to the JavaDoc documentation.

Pricing Exchange Orders

CSC uses four calculators for pricing exchange orders. There are two item pricing post calculators in /atg/commerce/custsvc/pricing/calculators:

ExchangePromotionEvaluationUpdateCalculator - This calculator executes the process that updates the Promotion Evaluation Order (PEO). This process copies the exchange items into the PEO and then re-prices the PEO. This results in exchange item pricing in accordance to other items still owned by the customer and any item promotions that may apply

ExchangeItemAdjustmentCalculator - This calculator copies pricing information for each exchange item from the PEO to the exchange order

There are two order pricing post calculators in /atg/commerce/custsvc/pricing/calculators:

ExchangeOrderAdjustmentCalculator - This calculator applies order promotions to the exchange order that are applied to the PEO. The promotion adjustment value is based on the order discount share value applied to the exchange items

ExchangeOrderDiscountCalculator - This calculator applies manual adjustments that are applied to the PEO to the exchange order . The manual adjustment value is based on the manual adjustment share value applied to the exchange items

The ReturnManagercontains the following exchange order calculator API. For additional information, refer to the JavaDoc documentation:

public void calculateExchangeOrderPromotionDiscountValues(ReturnRequest

pReturnRequest) throws ReturnException

public void calculateExchangeManualAdjustmentDiscountValues(ReturnRequest

pReturnRequest) throws ReturnException

Page 202: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 9 4

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μThe ReturnRequest contains the following exchange order API:

public Map getExchangeOrderPromotionValue()

public void setExchangeOrderPromotionValue(Map

pExchangeOrderPromotionValue)

public Map getExchangeManualAdjustmentValue()

public void setExchangeManualAdjustmentValue(Map

pExchangeManualAdjustmentValue)

Tiered Pricing and Exchanges

When you work with exchanges, tiered pricing produces the correct results, but exhibits the following behavior as a result of how the cost of exchange items is determined.

For example, in an order with a quantity of 7 items within the same tier levels, the original item would be priced at 2 at50, 3 at 40, 2 at 30. In an exchange of 1 for 1, the expected refund would be $30 and the exchange order item would be $30, with a net no charge. However, because of the methodology used in pricing the exchange items in the promotion evaluation order, the exchange order item is priced at 50, and the refund is calculated at $50. This results in the expected net no charge for the 1 item in the exchange order. Additionally, if exchange order quantity increases to 2, the total would be $100 and the refund would be $70, with an expected net change of $30 for the additional item.

For additional information on pricing calculators, refer to the Pricing Overview section.

Applying Promotions to Exchange Orders

No new promotions will be applied to an exchange order. New promotions include all promotions available to the shopper for their next new order checkout. Promotions that were applied to the original purchase can still be applied to the exchange order. For example, a promotion that is “buy X and get Y free” will still be applied if Y is exchanged for another Y.

However, once a promotion no longer applies to the order it cannot be applied on subsequent exchanges. For example, a promotion that is “buy X and get Y free” will not be applied if Y is exchanged for Z, and then Z is exchanged for Y. The system calculates and saves the changes in the promotion value within the ReturnRequest. This value is also saved in the repository with the return request item.

Applying Item Level Promotions

The ItemPricingEngine configuration contains the ExchangeItemAdjustmentCalculator item pricing calculator. This calculator adjusts the ItemPriceInfo of an item in the Exchange Order based on pricing of the corresponding item in the PEO and copies that information from the PEO to the ItemPriceInfo created for the exchange item. This includes the amount, all PricingAdjustments and DetailedItemPricingInfos. This prices the item in the Exchange Order with the exact pricing it received in the PEO, including any item level promotions that may have been applied.

The ExchangeItemAdjustmentCalculator, an extension of ItemPriceCalculator, uses the priceItem method only when an exchange item is being priced.

Page 203: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 9 5

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μCalculating Order Promotion and Manual Adjustment Values

To apply value of order promotions and manual adjustments, CSC calculates the value of each order promotion and manual adjustment of the replacement items in the PEO to produce value maps. The value maps connect an order promotion ID or manual adjustment ID to its value applied to the replacement items in the PEO.

An order promotion’s value is calculated using the ratio of the total replacement item amount to the PEO’s raw subtotal. The promotion’s total discount value in the PEO is then multiplied by the calculated ratio to determine the value of the promotion applied to the replacement items. The values are obtained as follows:

Value Description

totalOrderDiscountsOn

ReplacementItems

Is the sum of order discount share on all exchange items in PEO

orderPromotionTotalDiscount Is the sum of all PricingAdjustments that reference the promotion

totalExchangeItemAmount Equals the total amount of the exchange item only

double totalDiscountRatio Equals the totalExchangeItemAmount divided by peoOrder.getPriceInfo().getRawSubtotal()

double promotionDiscountValue Equals the totalOrderDiscountsOnReplacementItems times the totalDisountRatio

A manual adjustment’s value is calculated using the ratio of the total replacement item amount to the order raw subtotal. The manual adjustment total value is then multiplied by the calculated ratio to determine the value of the manual adjustment applied to the replacement items.

Value Description

totalAdjustmentsOnReplacement

Items

Is the sum of manual adjustment share on all exchange items in PEO

adjustmentTotalValue Is the sum of PricingAdjustments that reference the manual adjustment

totalExchangeItemAmount Equals the total amount of the exchange items only

double totalAdjustmentRatio Equals the totalExchangeItemAmount divided by the peoOrder.getPriceInfo().getRawSubtotal()

double adjustmentValue Equals the adjustmentTotalValue times the totalAdjustmentRatio

Page 204: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 9 6

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μIf manual adjustments are applied to the PEO, they are applied to the exchange order by the OrderPricingEngine’s post calculator OrderAdjustmentCalculator. This calculator implements priceOrder to trigger the calculation or the manual adjustment value map when pricing an Exchange Order, then determines if manual adjustments should be applied to the exchange order. If necessary, the calculator overrides the adjustOrderSubTotal to adjust the order subtotal based on the pre-calculated value of each manual adjustment.

Agent Price Overrides

Exchange Order price overrides are copied from the Exchange Order into the PEO because they affect how promotions are applied within the PEO. Overrides in the Exchange Order are applied to the items prior to executing the promotion evaluation process. When exchange items and shipping groups are copied to the PEO, if the Exchange Order item is marked as final by the agent, it will also be marked as final in the PEO with the same amount, preserving the final price for the PEO pricing operation.

Customizing Scheduled Orders Once you have enabled your site to use scheduled orders as outlined in Enabling and Disabling Scheduled Orders, the following customizations can be made. For additional information on customization of scheduled orders, refer to the ATG Commerce Programming Guide.

The CSRScheduledOrderFormHandler creates two variables, the CalendarSchedule variable used for specific days, and the PeriodicSchedule that is used for interval schedules. Additionally, the CSRScheduledOrderFormHandleris responsible for creating and updating the scheduled order repository item based on the input provided from the agent.

In addition to these two schedule types, CSC provides an additional N number of intervals option used with PeriodicSchedule that an agent can use to limit the number of scheduled intervals. This schedule option automatically calculates the schedule’s end date by calculating the schedule’s nextRunTime n number of times starting from the specified start time.

Note: The number of intervals is used only to calculate the end date and will not be available when a schedule is viewed or updated.

CSRScheduledOrderFormHandler contains the following configurable values for controlling the default selections on the schedule creation form.

Property Description

defaultScheduleType Identifies the default schedule type. Possible values are Calendar or Interval

defaultDaysOption Controls which CalendarSchedule day selection is the default. Possible values are allDays, selectedDays, or selectedDates

Page 205: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 9 7

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μProperty Description

defaultMonthsOption Controls which CalendarSchedule month selection is the default. Possible values are allMonths or selectedMonths

defaultEndDateOption Controls which Schedule end date option is the default. Possible values are none, endBy or endAfterOccurrences

defaultOccurrencesOption Controls which CalendarSchedule occurrences option is the default. Possible values are allOcurrences or selectedOccurrences

defaultInterval Controls the default interval for an PeriodicSchedule

defaultIntervalOption Controls the default interval option for PeriodicSchedules. Possible values are days or weeks

Displaying Scheduling Information

CSC provides an extension to the core ATG Commerce CSRScheduledOrderInfo ScheduledOrderInfo servlet bean that provides additional output parameters that describe the contents of the schedule. Refer to the ATG Commerce Programming Guide for information on ScheduledOrderInfo.

CSCScheduledOrderInfo has the following additional output parameters:

readableDays

readableDates

readableHours

readableMinutes

readableMonths

readableOccurrences

readableMonths

Scheduled Order Components

The following components are used for scheduled orders:

Class Description

Component: /atg/commerce/custsvc/order/scheduled/CSRScheduledOrderTools

atg.commerce.csr.order.scheduled.

CSRScheduledOrderTools Contains various helper APIs

Component: /atg/commerce/custsvc/order/scheduled/CSRScheduledOrderFormHandler

Page 206: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 9 8

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μClass Description

atg.commerce.csr.order.scheduled.

CSRScheduledOrderFormHandler

Form handler used to create and update schedules

Component: /atg/commerce/custsvc/order/scheduled/DuplicateAndSubmit

atg.commerce.csr.order.scheduled.

DuplicateAndSubmit

Form handler used by the Submit Now feature

Component: /atg/commerce/custsvc/order/scheduled/IsScheduledOrder

atg.commerce.csr.order.scheduled.

IsScheduledOrder

Servlet bean used to determine if an order is a scheduled order template

Component: /atg/commerce/custsvc/order/scheduled/ScheduledOrderTableFormHandler

atg.commerce.csr.order.scheduled.

ScheduledOrderTableFormHandler

Form handler used to generate the content displayed in the customer’s scheduled orders panel

Component: /atg/commerce/custsvc/order/scheduled/SchedulesTableFormHandler

atg.commerce.csr.order.scheduled.

SchedulesTableFormHandler

Form handler used to generate the content displayed in the scheduled order view’s schedules panel

Component: /atg/commerce/custsvc/order/scheduled/SubmittedOrdersTableFormHandler

atg.commerce.csr.order.scheduled.

SubmittedOrdersTableFormHandler

Form handler used to generate the content displayed in the scheduled order view’s submitted orders panel

Component: /atg/commerce/custsvc/order/scheduled/ActivateSchedule

atg.commerce.csr.order.scheduled.

LoadAndExecuteAction

Form handler used to active a schedule from the schedule order view

Component: /atg/commerce/custsvc/order/scheduled/DeactivateSchedule

atg.commerce.csr.order.scheduled.

LoadAndExecuteAction

Form handler used to deactivate a schedule from the schedule order view

Scheduled Orders Pipeline Additions

The following are additions to the commercepipeline.xml that defines various purchase process pipelines used by CSC.

Page 207: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

1 9 9

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μPipeline Chain Description

initScheduledOrderEdit This chain is executed by the CloneEditManager to prepare for updating a previously created scheduled order template.

reconcileScheduledOrder This chain is executed by the CloneEditManager to reconcile changes made to a previously created scheduled order template.

processTemplateOrder This chain is executed by the CSRCommitOrderFormHandler when the Schedule option is used at the end of new order checkout. It validates that a new order is ready to be saved as a scheduled order template.

Using Scenarios You can use scenarios to configure actions that are taken when internal users perform various tasks. Scenarios are also used to configure events that are available to external users, such as cross-sells or promotions. For general information on creating and working with scenarios, refer to the ATG Personalization Guide for Business Users. For information on scenarios used with ATG Commerce, refer to the Using Commerce Elements in Scenarios chapter of the ATG Commerce Guide to Setting Up a Store.

Configuring Scenario Events

When you use the ACC scenario editor on an ATG instance running CSC, the scenarios you create are internal scenarios they respond to actions performed by internal users such as agents, not external users such as customers.

CSC includes a number of scenario events that can be triggered by agent activities. You can incorporate these events in internal scenarios that you create.

The following table lists the scenario events included with CSC:

Event display name Triggered when . . .

Agent adds item to order Agent adds an item to an order

Agent adds payment group Agent adds a payment group to an order

Agent adds shipping group Agent adds a shipping group to an order

Agent cancels order Agent cancels an order

Agent changes item quantity Agent changes an item’s quantity

Agent claims item Agent claims a coupon, gift certificate, or store credit

Agent create order Agent creates a new order

Page 208: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 0 0

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μEvent display name Triggered when . . .

Agent creates an order comment Agent creates a new order comment

Agent edits payment group Agent edits a payment group

Agent edits shipping group Agent edits a shipping group

Agent exchanges order Agent exchanges an order

Agent issues store credit Agent issues a store credit to a customer

Agent overrides a price Agent overrides the price of a shipping group or commerce item

Agent receives a return item Agent receives an item that has been returned

Agent removes item from order Agent removes an item from an order

Agent returns order Agent returns an order

Agent splits a shipping group Agent splits a shipping group’s commerce items between shipping groups

Agent submits order Agent submits an order

Agent views credit card Agent views a credit card

Agent views order Agent views an order

Agent views order payment Agent views an order’s payment information

Agent views order returns Agent views order return information

Working with Scenario Managers

Scenarios are managed and run by the Scenario Manager services, ScenarioManager and InternalScenarioManager. Depending on the subject of the scenario, the agent or the customer, you must know which Scenario Manager to run.

ScenarioManager and InternalScenarioManager

Just as you need to be aware of whether your slots and scenarios are displaying content targeted to the agent or the customer they are helping, you need to be aware of where those scenarios need to be created. In a production environment, ATG applications run on an internal server cluster and your external website runs on an external server cluster. Each instance in the internal cluster uses two separate scenario managers: the standard scenario manager, ScenarioManager, which handles scenarios in which the main subject of the scenario is the customer and the internal scenario manager, InternalScenarioManager, which handles scenarios in which the main subject of the scenario is the agent. Each instance of the external cluster only has a standard scenario manager in which you create scenarios where the main subject of the scenario is the customer. When you author a scenario that populates a slot, the scenario must be created in the appropriate cluster (internal or external) depending on its use.

Page 209: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 0 1

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ Scenarios in which the customer is the subject of the scenario belong in the standard

scenario manager. These scenarios should be created in the external cluster. (Examples include when the customer’s profile drives the scenario, or the customer’s behavior on the external website drives the scenario)

Scenarios in which the agent is the subject of the scenario belong in the internal scenario manager. These scenarios should be created in the internal cluster. (Examples include when the agent’s profile drives the scenario, or if actions the agent takes in Service Center drives the scenario.)

This means that you will have to create one set of scenarios for delivering content in which the agent is the subject of the scenario (in the InternalScenarioManager service) and one set of scenarios for delivering content in which the customer is the subject of the scenario (in the ScenarioManager service).

As with any environment in which you are using ATG scenarios, one of the scenario instances in each cluster will have to be configured as the Scenario Editor Server. Internal scenarios are created and updated while pointing to the Scenario Editor Server designated for the internal cluster. External scenarios are created and updated while pointing to the Scenario Editor Server designated for the external cluster.

Scenario Managers in a Development Environment

If you are working in a development environment where the external and internal environments are running on the same machine, you will need to point your ACC to either the standard Scenario Manager or the InternalScenarioManager service. The ACC can only display one of these at a time; it is configured to show the Standard ScenarioManager by default. You must manually configure the ACC to point to the InternalScenarioManager to create scenarios for the internal environment. See Configuring the ACC to Point to the InternalScenarioManager for instructions on how to do this.

Updating Scenarios in a Development Environment

Page 210: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 0 2

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μScenario Managers in a Production Environment

If you have a production environment running, you will have two clusters: one for your internal applications (such as the ATG application) and one for your external sites (such as your external Website). In this situation, the ACC in the internal cluster can still point to both the InternalScenarioManager and the standard ScenarioManager. However, the external cluster, which uses only the standard ScenarioManager, should be used to create or update scenarios in which the customer is the main subject.

The ScenarioManager on the external cluster shares the same database as the ScenarioManager on the internal cluster. This enables you to create your customer-subject scenarios in just one place. The scenarios created in the ScenarioManager on the external cluster will not show up automatically in the ScenarioManager for the internal cluster. You must update the scenarios across the clusters.

Updating Scenarios Across Clusters

If you create or update any of the scenarios running on the ScenarioManager in the external cluster, you will need to manually update the ScenarioManager in the internal cluster. This update ensures that the two ScenarioManagers are not out of sync.

To make this update you will need to go to the ATG Dynamo Server Admin console and navigate to the ProcessUpdateService component and invoke the updateAllProcesses method. This will update all scenarios in all instances of the ScenarioManager in the internal cluster.

The path to the ProcessUpdateService component is:

<ATG10dir>/nucleus/atg/svc/scenario/ProcessUpdateService/

If you are running in a development environment and/or are not using an external website, you do not need to worry about using the ProcessUpdateService to communicate scenario changes across clusters.

Page 211: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 0 3

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ

Updating Scenarios in a Production Environment

Configuring the ACC to Point to the InternalScenarioManager

In a development environment you must configure the ACC to point to the InternalScenarioManager. To do this you need to specifically include the DSS.InternalUser.ACC module when creating the ATG Service environment.

Configuring Process Editor Servers The agent-facing server is configured with two Scenario Manager Configuration files, where you specify the location of the Process Editor Server and any global servers:

/atg/scenario/scenarioManager.xml – configuration for external users

/atg/scenario/internalScenarioManager.xml – configuration for internal users

Configuring the Customer-Facing Scenario Manager

The management server is aware of scenarios only for external users (users of the customer-facing website). You configure the scenarioManager.xml file to have one Process Editor Server, which is an Service Center instance:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<process-manager-configuration>

<process-editor-server>

<server-name>ATG CSC_Host: 8851</server-name>

Page 212: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 0 4

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ </process-editor-server>

</process-manager-configuration>

Configuring the Agent-Facing Scenario Managers

The agent-facing server is aware of scenarios for both internal users and external users. You must configure the agent-facing server as follows:

internalScenarioManager.xml – include the Service Center server as a Process Editor Server, so that you can create and edit scenarios for internal users:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<process-manager-configuration>

<process-editor-server>

<server-name>ATG CSC_Host: 8851</server-name>

</process-editor-server>

</process-manager-configuration>

scenarioManager.xml – include the ATG Self Service management server as a Process Editor Server, so that you can create and edit scenarios for external users:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<process-manager-configuration>

<process-editor-server>

<server-name>ATG Customer-facing_Host: 8851</server-name>

</process-editor-server>

</process-manager-configuration>

Modifying Keyboard Shortcuts CSC allows you to modify the keyboard shortcuts that are used throughout the application and Service Center.

To modify the shortcuts, you must modify the following files:

Agent/script/keyboardShortcutsService.js

Agent/script/keyboardTopicsService.js

DCS-CSR/script/keyboardShortcutsCSC.js

DCS-CSR/script/keyboardTopicsCSC.js

The keyboardShortcuts files are used to map keyboard shortcuts to published topics. The keyboardTopics files are used to execute these topics and perform the specific functions.

The following is an example of a keyboard shortcut definition for the shortcut key ALT+6:

Page 213: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 0 5

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μatg.keyboard.registerShortcut(

"ALT+6", {

shortcut: "ALT + 6",

name: getResource("keyboard.service.customersTab.name"),

description: getResource("keyboard.service.customersTab.description"),

area: getResource("keyboard.area.workspace"),

topic: "CustomersTab",

notify: true

});

Where:

shortcut is the shortcut key that is shown in the help window

name is the localized display name, shown in the help window

description is the localized description, shown in the help window

area is the localized functional area, shown in the help window

topic is the name of the topic that is fired when this shortcut is pressed

action is the optional JavaScript function that is called when the shortcut is pressed (used when a topic is not available)

notify is an attribute that determines whether the small popup window in the bottom right of the screen is shown for the particular topic

Defining Global Keyboard Shortcuts

There are attributes that may be defined on a global basis for keyboard navigation. The Agent/src/ web-apps/Agent/script/keyboardNavigation.js file is the main keyboard navigation file. In it, you can set the following variables:

var _showNotificationWindow = true;

var _highlightAndFadePanels = true;

var _highlightAndFadeNodes = true;

_showNotificationWindow determines whether the small notification window that pops up in the bottom right part of the screen is shown when a shortcut is pressed. Each shortcut has an attribute called notify that specifies the use of the notification window on a shortcut-by-shortcut basis. However, the use of the notification window may be disabled if the _showNotificationWindow is set to false.

_highlightAndFadePanels provides a visual highlight as users jump from one panel to the next using the panel shortcuts (CTRL+, CTRL+. ALT+, ALT+.). When this attribute is set to false, the panel highlighting will not occur.

_highlightAndFadePanels provides a visual highlight as users tab throughout the Service Center. When this attribute is set to false, the screen elements will not be highlighted.

Page 214: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 0 6

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μATG Commerce Service Center Reporting Framework

The reporting framework used by CSC is similar to the framework used by ATG Commerce. CSC gathers log files that contains order and agent information and loads it into the warehouse. For information on setting up and configuring the ATG Commerce reporting framework, refer to the Preparing to Use Commerce Reporting section in the ATG Commerce Programming Guide.

Data Collection Overview

As with all reporting, CSC reporting data collection starts with the firing of a log-worthy event. The EventListener listens for the events, gets the appropriate object and passes it to the LogEntryQueueSink. The EventListener Nucleus component is configured with the property dataListeners=LogEntryQueueSink.

The LogEntryQueueSink property is a DataCollectorQueue type property and ensures the correct timing of writing to the log files. The LogEntryQueueSink component is configured with the property dataListeners=LogEntryGenerator to ensure that message will be passed on to the LogEntryGenerator.

The LogEntryGenerator property is used to generate a LogEntry object. This object is passed to the LogEntryLogger that has been configured with the parameters dataListeners=LogEntryFileLogger. The LogEntryLogger component of the RotationAwareFormattingFileLogger class logs items to the named file, and then rotates the log file based on a schedule and data threshold. It also contains a formatFields property that is used to indicate properties that should be written to the file.

Returns and Exchanges Data Collection Properties

The returns and exchange data collection process starts with the firing of the return/exchange event. The ReturnFormHandler fires the ReturnOrder event. The ReturnEventListener listens to the events.

The ReturnEventListener file is configured as follows:

$class=atg.commerce.reporting.ReturnEventListener

enabled^=/atg/dynamo/service/DWDataCollectionConfig.enabled

dataListeners=ReturnLogEntryQueueSink

returnOrderJMSType=atg.commerce.csr.ReturnOrder

exchangeOrderJMSType=atg.commerce.csr.ExchangeOrder

The ReturnLogEntryQueueSink listens to messages from event listener and queues the log entries to avoid performance bottleneck. Calls made to this component are queued and then passed to the ReturnLogEntryGenerator. The ReturnLogEntryQueue configuration file is configured as follows:

$class=atg.service.datacollection.DataCollectorQueue

dataListeners=ReturnLogEntryGenerator

The LogEntryQueue passes the data to the ReturnLogEntryGenerator that generates the ReturnLogEntry and passes it to the ReturnLogEntryLogger. The ReturnLogEntryGenerator file is configured as follows:

Page 215: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 0 7

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μ$class=atg.commerce.reporting.ReturnLogEntryGenerator

dataListeners=ReturnFileLogger

enabled^=/atg/dynamo/service/DWDataCollectionConfig.enabled

The ReturnFileLogger component is responsible for writing logs items to the named file, as well as rotating log files based on schedule and data thresholds. The ReturnFileLogger component also has formatFields property that indicates which properties should be written to file. The ReturnFileLoggerLogger configuration file contains the following:

#class

$class=atg.service.datacollection.RotationAwareFormattingFileLogger

# directory and file name of log file

logFileName=csc_return_

# Rotate log files automatically every 1 hour

schedule=every 1 hour

# Or rotate when there are 10,000 records in the file

dataItemThreshold=10000

# The directory to place all the log data files

defaultRoot^=/atg/dynamo/service/DWDataCollectionConfig.defaultRoot

# The centralized Dynamo scheduler

scheduler=/atg/dynamo/service/Scheduler

# Add a timestamp to all the names of the log files

timestampLogFileName=true

# Use this extension after the timestamp

logFileExtension=.data

# Format the time stamp like so (month-day-year_hour-minute-second-

# millisecond)

timestampDateFormat=MM-dd-yyyy_HH-mm-ss-SS

# properties to log (in order)

formatFields=timestampAsDate: MM/dd/yyyy HH: mm: ss,

returnOrder.returnRequestId

enabled^=/atg/dynamo/service/DWDataCollectionConfig.enabled

# Add a Unique ID to all the names of the log files

UIDLogFileName=true

# IdGenerator

idGenerator=/atg/dynamo/service/IdGenerator

# The JMS message type

logRotationMessageType=atg.reporting.ReturnOrder

# The messageSource component to send log rotation message

messageSource=/atg/dynamo/service/LogRotationMessageSource

Returns and exchange log files are written to the /atg/dynamo/service/ DWDataCollectionConfig.defaultRoot directory.

Call Data Collection Properties

CSC can generate calls using the start call function or by using the integrated ATG Click to Call functionality. For information on ATG Click to Call, refer to the Configuring ATG Click to Call section.

Page 216: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 0 8

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μWhen a call is initiated, a unique call ID is generated and assigned for each call. The call ID is used when starting and ending call events. The atg.agent.events.CallEvent event extends the atg.agent.events.AgentEvent event by adding callId, startTime and endTime properties. The startTime and endTime properties are recorded to the database as audit logs, while the callId is added to the audit database record.

The /atg/agent/logging/AgentAuditQueue listens for all agent events and passes the control to the AgentAuditLogger and provides an additional AgentFileLogger listener. This listener writes the data item to the file system. The TypedEventDataListener contains the AgentAuditLogger, the AgentFileLogger and the SelfServiceAuditLogger components.

The CallLogEntry and CallLogEntryGenerator classes provide the ability to add additional data to the log processes.

The CallFileLogger logs the data to the file system and creates an entry for the end call event. This logger will not log an entry for the start call event. When an agent ends a call the end call event is fired. Should an agent forget to end the call, when the window is closed or the CallState component is out of scope, the doStopService method will end the call event.

The CallFileLogger is configured with the following:

#class

$class=atg.service.datacollection.RotationAwareFormattingFileLogger

# directory and file name of log file

logFileName=svc_end_call_

# Rotate log files automatically every 1 hour

schedule=every 1 hour

#Or rotate when there are 10,000 records in the file

dataItemThreshold=10000

# The directory to place all the log data files

defaultRoot^=/atg/dynamo/service/DWDataCollectionConfig.defaultRoot

# The centralized Dynamo scheduler

scheduler=/atg/dynamo/service/Scheduler

# Add a timestamp to all the names of the log files

timestampLogFileName=true

# Use this extension after the timestamp

logFileExtension=.data

# Format the time stamp like so (month-day-year_hour-minute-second-

# millisecond)

timestampDateFormat=MM-dd-yyyy_HH-mm-ss-SS

# properties to log (in order)

formatFields=timestampAsDate: MM/dd/yyyy HH: mm: ss, callId,

startTimeAsDate: MM/dd/yyyy HH: mm: ss, endTimeAsDate: MM/dd/yyyy

HH: mm:ss,customerId, agentId

enabled^=/atg/dynamo/service/DWDataCollectionConfig.enabled

# Add a Unique ID to all the names of the log files

UIDLogFileName=true

# IdGenerator

idGenerator=/atg/dynamo/service/IdGenerator

# The JMS message type

Page 217: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 0 9

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μlogRotationMessageType=atg.reporting.svc.Call

# The messageSource component to send log rotation message

messageSource=/atg/dynamo/service/LogRotationMessageSource

Loader Pipeline Overview

Loading the return item into a transactional fact table is a process that requires a number of stages to obtain and work with the data in different ways. To clarify this process, it is presented as a data flow in which data flows from one processor to the next. Along the way the data is transformed until the final processor records the data into the transactional fact table.

Data loading starts with the implementation of the Loader. The atg.reporting.datawarehouse. loader.Loader.Loader component uses the queueName property to point to a log file. The Loader runs using a scheduler, creates a log file reader for returned items and invokes the processReader method of the PipelineDriver component.

The PipelineDriver reads delimited lines from the log file then parses them and populates a pipeline parameter. The parameter is then sent down a pipeline chain. The atg.reporting.datawarehouse. loader.FilePipelineDriver.PipelineDriver component uses the properties paramPropertyNames and paramClasses properties to specify the names and types of parameters that are read.

The PipelineManager runs the pipeline chain described in the pipeline.xml file. Pipelines consist of several processors. These processors collect data, prepare line items and insert them in into the data warehouse.

Returns and Exchanges Pipeline Processors

The following processors are used in the Submit Return pipeline:

Pipeline Chain Pipeline Link Description

fetchReturn

/atg/reporting/datawarehouse/

processes/custsvc/FetchReturnProcessor

$class=atg.reporting.datawarehouse.

commerce.csr.FetchReturnProcessor

Uses the return ID to look up the return/exchange in the CSR repository.

returnRequestLookup

atg/reporting/datawarehouse/process/

custsvc/ReturnRequestLookupProcessor

$class=atg.reporting.datawarehouse.

process.LookupPipelineProcessor

This processor fetches all return items in the warehouse for the current return ID. If there are return items the parameter map entry is created for the resultPropertyName value.

Page 218: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 1 0

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μPipeline Chain Pipeline Link Description

checkReturnExists

/atg/reporting/datawarehouse/process/

WarehouseItemExistsProcessor

$class=atg.reporting.datawarehouse.

process.WarehouseItemExistsProcessor

This processor allows a switch to be implemented in the pipeline by determining if a warehouse item exists in the properties. If a warehouseItemPropertyName

value exists in the parameter map and the current log record does not need to be processed. If the map entry does not exist the pipeline will process the next link.

createReturnLineItems

/atg/reporting/datawarehouse/process/

custsvc/CreateReturnLineItemsProcessor

$class=atg.reporting.datawarehouse.

commerce.csr.CreateLineItemsProcessor

This processor creates an array or the returned items map.

allocateOtherRefund

/atg/reporting/datawarehouse/process/

custsvc/OtherRefundAllocatorProcessor

.properties

$class=atg.reporting.datawarehouse.

commerce.AmountAllocatorProcessor

This processor gets refund information from returnRequest.

actualOtherRefund and then distributes the refund amount based on return item refund amount or quantity. The ItemRefundLineItemAlocator looks at the return item refund subtotal. If the subtotal is greater than zero, then it distributes the amount based on the item refund amount.

allocateReturnFee

/atg/reporting/datawarehouse/process/

custsvc/ReturnFeeAllocatorProcessor.

properties

$class=atg.reporting.datawarehouse.

commerce.AmountAllocatorProcessor

This processor gets the return fee from returnRequest. returnFee and uses the ItemRefundLineItemAlocator to distribute the return fee across all return items.

Page 219: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 1 1

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μPipeline Chain Pipeline Link Description

calculateTotalAdjustments

/atg/reporting/datawarehouse/process/

custsvc/LineItemTotalAdjustments

Processor

$class=atg.reporting.datawarehouse.

commerce.ComputerLineItemTotal

Processor

This process sums up all adjustments for each returned item, such as shipping share, tax share, and other return fee allocation amounts. The suggested shares are used to calculate the actual share. If the suggested share is zero, the share will be calculated based on the return item’s quantity.

calculateTotal

/atg/reporting/datawarehouse/process/

custsvc/LineItemTotalRefundProcessor

$class=atg.reporting.datawarehouse.

commerce.ComputerLineItemTotal

Processor

This processor sums up all total adjustments and item refund items.

localCurrencyLookup

/atg/reporting/datawarehouse/process/

custsvc/LocalCurrencyLookupProcessor

$class=atg.reporting.datawarehouse.

commerce.CurrencyConverterProcessor

This processor converts local currency to standard currency values.

CurrencyConverter

/atg/reporting/datawarehouse/process/

custsvc/CurrencyConverterProcessor

$class=atg.reporting.datawarehouse.

commerce.CurrencyConverterProcessor

This processor converts shipping, tax and other refunds, the return fee, total adjustments and refunds.

dayLookup

/atg/reporting/datawarehouse/process/

custsvc/DayLookupPipelineProcessor

$class=atg.reporting.datawarehouse.

process.DayLookupProcessor

This processor looks for the ID of the day for a given time stamp. This processor uses the return request createdDate property to return the ID.

timeLookup

/atg/reporting/datawarehouse/process/

custsvc/TimeLookupPipelineProcessor

$class=atg.reporting.datawarehouse.

process.TimeLookupProcessor

This processor looks for the ID of the time for a given time stamp. This processor uses the return request createdDate property to return the ID.

Page 220: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 1 2

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μPipeline Chain Pipeline Link Description

customerLookup

/atg/reporting/datawarehouse/process/

custsvc/CustomerLookupProcessor

$class=atg.reporting.datawarehouse.

process.RepositoryItemLookupProcessor

$scope=global

This processor gets the customer ID from the returnRequest. order.profileId. If the customer is not found in the data warehouse, it will look in the production schema. If found in neither schemas, the processor will return Unspecified.

agentLookup

/atg/reporting/datawarehouse/process/

custsvc/InternalUserLookupProcessor

$class=atg.reporting.datawarehouse.

process.InternalUserLookupProcessor

$scope=global

This processor gets the agent ID from the returnRequest. agent.repositoryId. If the agent is not found in the data warehouse, it will look in the production schema. If found in neither schemas, the processor will return Unspecified.

returnSalesChannelLookup

/atg/reporting/datawarehouse/process/

custsvc/ReturnSalesChannelLookup

Processor

$class=atg.reporting.datawarehouse.

process.EnumeratedPropertyLookup

Processor

This processor looks up the return channel ID in the data warehouse.

runReturnLineItemPipelineChain

/atg/reporting/datawarehouse/process/

custsvc/ReturnItemPipelineProcessor

This processor runs the return item pipeline for each element of the LineItems array.

returnItem lookupReturnSku

/atg/reporting/datawarehouse/process/

custsvc/SkuLookupProcessor

$class=atg.reporting.datawarehouse.

process.LookupPipelineProcessor

This processor looks up the SKU ID for each return item in the data warehouse.

lookupReturnProduct

/atg/reporting/datawarehouse/process/

custsvc/ProductLookupProcessor

$class=atg.reporting.datawarehouse.

process.LookupPipelineProcessor

This processor looks up the product ID for each return item in the data warehouse.

Page 221: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 1 3

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μPipeline Chain Pipeline Link Description

lookupReturnReason

/atg/reporting/datawarehouse/process/

custsvc/ReturnReasonLookupProcessor

$class=atg.reporting.datawarehouse.

process.LookupPipelineProcessor

This processor looks up the return reason ID for each return item in the data warehouse.

logReturnItem

/atg/reporting/datawarehouse/process/

custsvc/ReturnItemLoggerProcessor

$class=atg.reporting.datawarehouse.

process.RepositoryLoggerProcessor

This processor creates a repository item for the logged data that is based upon the lookup properties.

Calls Pipeline Processors

The following processors are used in the call pipeline:

Pipeline Chain Pipeline Link Description

calls callLookup

/atg/reporting/datawarehouse/process

/svc/CallLookupProcessor.properties

$class=atg.reporting.datawarehouse.

process.LookupPipelineProcessor

This processor obtains the call item for the call ID. If the call item exists, the parameter map entry is created for the resultPropertyName.

checkCallExists

/atg/reporting/datawarehouse/process/

WarehouseItemExistsProcessor

$class=atg.reporting.datawarehouse.

process.WarehouseItemExistsProcessor

This processor implements a switch in the pipeline by determining if a warehouse item exists in the properties. If a warehouseItemPropertyName

value exists in the parameter map, the current log record does not need to be processed. If the map entry does not exist, the pipeline will process the next link.

customerLookup

/atg/reporting/datawarehouse/process/

custsvc/CustomerLookupProcessor

$class=atg.reporting.datawarehouse.

process.RepositoryItemLookupProcessor

This processor gets the customer ID from the parameter map. If the customer is not found in the data warehouse, it will look in the production schema. If found in neither schemas, the processor

Page 222: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 1 4

7 - P r o g r a m m i n g A T G C o m m e r c e S e r v i c e C e n t e r

μPipeline Chain Pipeline Link Description

$scope=global will return Unspecified.

agentLookup

/atg/reporting/datawarehouse/process/

custsvc/InternalUserLookupProcessor

$class=atg.reporting.datawarehouse.

process.InternalUserLookupProcessor

$scope=global

This processor gets the agent ID from the parameter map. If the agent is not found in the data warehouse, it will look in the production schema. If found in neither schemas, the processor will return Unspecified.

dayLookup

/atg/reporting/datawarehouse/process/

custsvc/DayLookupPipelineProcessor

$class=atg.reporting.datawarehouse.

process.DayLookupProcessor

This processor looks for the start time timestamp from the parameter map as well as the lookup for the day of the time stamp.

timeLookup

/atg/reporting/datawarehouse/process/

custsvc/TimeLookupPipelineProcessor

$class=atg.reporting.datawarehouse.

process.TimeLookupProcessor

This processor looks for the start time timestamp from the parameter map as well as the lookup for the time of the time stamp.

enddayLookup

/atg/reporting/datawarehouse/process/

custsvc/DayLookupPipelineProcessor

$class=atg.reporting.datawarehouse.

process.DayLookupProcessor

This processor looks for the end time timestamp from the parameter map as well as the lookup for the end day of the time stamp.

endtimeLookup

/atg/reporting/datawarehouse/process/

custsvc/TimeLookupPipelineProcessor

$class=atg.reporting.datawarehouse.

process.TimeLookupProcessor

This processor looks for the end time timestamp from the parameter map as well as the lookup for the end time of the time stamp.

totalTime This processor calculates the total amount of call time in seconds.

callLogger

$class=atg.reporting.datawarehouse.

process.RepositoryLoggerProcessor

This processor creates a repository item for the logged data based on the lookup properties.

Page 223: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 1 5

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μAppendix A: ATG Commerce Service Center Database Tables

This appendix describes the database tables used by CSC.

ATG Commerce Service Center Core Tables CSC uses the following database tables to store customer service information. These tables are installed by the <ATG10dir>/CSC10.0.2/DCS- CSR/sql/install/db_components/database-vendor/DCS-CSR_ddl.sql script.

The csr_order_cmts table is used by the ATG Commerce order repository. The Nucleus component for this repository is /atg/commerce/order/OrderRepository. The rest of the tables described in this section are used by the CSC returns and exchanges repository (/atg/commerce/custsvc/CsrRepository).

csr_order_cmts

This table stores agent comments associated with orders.

Column Data Type Constraint

comment_id varchar(40) not null

(primary key) The unique ID associated with the comment.

order_id varchar(40) not null

(primary key) The ID of the order the comment is associated with. References dcspp_order (order_id).

agent_id varchar(40) null

The profile ID of the agent who submitted the comment.

comment_data varchar(254) not null

The text of the comment.

Page 224: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 1 6

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μColumn Data Type Constraint

creation_date timestamp null

The date and time when the comment was submitted.

version integer not null

The GSA version of the repository item.

csr_exch

This table stores information about order exchanges and returns.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the return.

order_id varchar(40) not null

The ID of the order the return is associated with. References dcspp_order (order_id).

created_date timestamp not null

The date and time the return was submitted.

status varchar(40) not null

The current status of the return. Possible values: pending_customer_action, partial_return, full_return, complete.

rma varchar(40) null

The RMA number associated with the return. (This value is the same as the ID of the return.)

repl_order_id varchar(40) null

The ID of the order containing the replacement items for the return.

bal_pmt_id varchar(40) null

The ID of the balance payment for the return.

sugg_tax_refund double precision not null

The suggested tax refund calculated by return processing.

Page 225: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 1 7

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μColumn Data Type Constraint

actl_tax_refund double precision not null

The actual tax refund given by the agent.

sugg_ship_refund double precision not null

The suggested shipping refund calculated by return processing.

actl_ship_refund double precision not null

The actual shipping refund given by the agent.

other_refund double precision not null

Other refund types.

sc_recipient varchar(40) null

The profile ID of the customer receiving any store credits associated with this return.

proc_immed tinyint not null check (proc_immed in (0,1))

Boolean indicating whether the return should be processed immediately (i.e., before the return shipment is received).

processed tinyint not null check (processed in (0,1))

Boolean indicating whether the return has been processed.

origin_of_return integer null

The numeric code for the origin of the return.

agent_id varchar(40) null

The unique ID of the agent.

csr_exch_cmts

This table stores agent comments associated with exchanges or returns.

Column Data Type Constraint

comment_id varchar(40) not null

(primary key) The unique ID of this comment.

Page 226: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 1 8

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μColumn Data Type Constraint

return_id varchar(40) not null

(primary key) The ID of the return the comment is associated with. References csr_exch (id).

agent_id varchar(40) null

The profile ID of the agent who submitted the comment.

comment_data varchar(254) not null

The text of the comment.

creation_date timestamp null

The date and time when the comment was submitted.

version integer not null

The GSA version number of the repository item.

csr_exch_reasons

This table stores the return reason codes available to agents.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the return reason.

description varchar(254) not null

The description of the return reason.

csr_exch_item_disp

This table stores the returned item dispositions available to agents.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the disposition.

description varchar(254) not null

Page 227: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 1 9

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μColumn Data Type Constraint

The description of the disposition.

upd_inventory tinyint not null check (upd_inventory in (0,1))

Boolean indicating whether the inventory should be updated when an item is returned with this disposition.

csr_return_fee

This table stores the processing fees associated with returns or exchanges.

Column Data Type Constraint

exchange_id varchar(40) not null

(primary key) The unique ID of the return or exchange. References csr_exch (id).

return_fee double precision not null

The amount of the return fee.

csr_exch_item

This table stores information about items that have been marked for return or exchange.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the item being returned.

commerce_item_id varchar(40) not null

The ID in the order repository of the commerce item being returned.

shipping_group_id varchar(40) not null

The ID in the order repository of the shipping group that the item was shipped in. References dcspp_ship_group (shipping_group_id).

quantity_to_return numeric(19,0) not null

The quantity of the item being returned.

Page 228: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 2 0

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μColumn Data Type Constraint

quantity_to_repl numeric(19,0) not null

The quantity of the item to replace.

reason varchar(40) not null

The ID of the return reason code for the item. References csr_exch_reasons (id).

ret_shipment_req tinyint not null check (ret_shipment_req in (0,1)

Boolean indicating whether return shipment of the item is required before processing the refund or exchange.

bonus_refund tinyint not null check (bonus_refund in (0,1))

Boolean indicating whether any bonus refund is associated with this item.

quantity_received numeric(19,0) not null

The quantity of the item that has been received through return shipment.

disposition varchar(40) null

The ID of the disposition code for the item. References csr_exch_item_disp (id).

refund_amount double precision not null

The amount to be refunded for this item.

status varchar(40) not null

The return status of the item. Possible values: return_not_required, awaiting_return, partial_return, returned.

exch_ref varchar(40) not null

The ID of the return that the item is associated with.

sugg_ship_refund double-precision not null

Suggested shipping refund amount.

actl_ship_refund double-precision not null

The actual shipping refund amount.

sugg_tax_refund double-precision not null

Page 229: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 2 1

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μColumn Data Type Constraint

Suggested tax refund amount.

actl_tax_refund double-precision not null

The actual tax refund amount.

csr_exch_repl_item

This table stores information about a replacement items in an exchange.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the replacement item.

sku_id varchar(40) not null

The SKU number of the replacement item.

quantity numeric(19,0) not null

The quantity of the replacement item.

csr_exch_repl_itms

This table associates exchanged items with their replacement items.

Column Data Type Constraint

exchange_item_id varchar(40) not null

(primary key) The ID of the exchanged item. References csr_exch_item (id).

repl_item_id varchar(40) not null

(primary key) The ID of the replacement item. References csr_exch_repl_item (id).

csr_exch_items

This table associates returned items with their returns.

Page 230: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 2 2

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μColumn Data Type Constraint

exchange_id varchar(40) not null

(primary key) The ID of the return. References csr_exch (id).

exchange_item_id varchar(40) not null

(primary key) The ID of the replacement item. References csr_exch_item (id).

csr_exch_method

This table stores information about the refund associated with a return.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the refund.

type integer not null

The type of refund. 1=credit card; 2=store credit.

amount double precision null

The amount of the refund.

csr_exch_methods

This table associates refunds with their returns.

Column Data Type Constraint

exchange_id varchar(40) not null

(primary key) The ID of the return. References csr_exch (id).

exchange_method_id varchar(40) not null

(primary key) The ID of the refund. References csr_exch_method (id).

csr_exch_ipromos

This table stores information about the item promotion IDs used to determine refund values.

Page 231: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 2 3

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μColumn Data Type Constraint

exchange_id varchar(40) not null

(primary key) The unique ID of the exchange.

promotion varchar(40) not null

The name of the promotion.

csr_exch_opromos

This table stores information about the order promotion IDs used to determine refund values.

Column Data Type Constraint

exchange_id varchar(40) not null

(primary key) The unique ID of the exchange.

promotion varchar(40) not null

The name of the promotion.

csr_cc_exch_method

This table stores information about credits applied to credit cards.

Column Data Type Constraint

exchange_method_id varchar(40) not null

(primary key) The ID of the refund. References csr_exch_method (id).

payment_group_id varchar(40) not null

The ID of the payment group the refund is being credited to.

csr_sc_exch_method

This table stores information specific to store credits.

Column Data Type Constraint

exchange_method_id varchar(40) not null

Page 232: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 2 4

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μ(primary key) The ID of the refund. References csr_exch_method (id).

fixed_amount tinyint null check (fixed_amount in (0,1))

The amount of the store credit.

bonus_credit tinyint null check (bonus_credit in (0,1))

Boolean indicating whether a bonus was added to the store credit.

payment_group_id varchar(40) null

This field is not used.

sc_id varchar(40) null

The unique ID of the store credit.

csr_promo_adjust

This table stores information about the change in promotion values for a return.

Column Data Type Constraint

exchange_id varchar(40) not null

(primary key) The unique ID of the exchange.

promo_id varchar(40) not null

The name of the promotion.

value_adjust double-precision null

The value of the change

csr_nonreturn_adj

This table stores information specific to non-Return Item Adjustments.

Column Data Type Constraint

exchange_id varchar(40) not null

(primary key) The ID of the exchange.

ica_id varchar(40) not null

Page 233: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 2 5

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μ(primary key) The Item Cost Adjustment ID.

csr_item_adj

This table stores information specific to item adjustments.

Column Data Type Constraint

ica_id varchar(40) not null

(primary key) The ID of the Item Cost Adjustment.

commerce_item_id varchar(40) not null

The ID of the commerce item.

shipping_group_id varchar(40) not null

The ID of the shipping group.

quantity_adj numeric null

The quantity of adjusted items

amount_adj double-precision null

The amount of the adjusted item.

ods_adj double-precision null

The amount of the order discount share adjustment.

mas_adj double-precision null

The amount of the manual adjustment share adjustment.

tax_adj double-precision null

The tax adjustment.

shipping_adj double-precision null

The shipping adjustment.

ATG Commerce Service Center Order Approval Tables CSC uses the following database tables to store order approval information.

Page 234: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 2 6

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μThese tables are installed by the <ATG10dir>/CSC10.0.2/DCS-CSR/sql/install/db_components/ database-vendor/DCS-CSR_approvals_ddl.sql script.

csr_approval

This table stores information about the approval process.

Column Data Type Constraint

approval_id varchar(40) not null

(primary key) The unique ID of the approval.

ticket_id varchar(40) not null

The ID of the ticket.

agent_id varchar(40) not null

The ID of the agent.

approver_id varchar(40) not null

The unique ID of the approver.

type varchar(40) not null

The type of approval.

approval_state varchar(40) not null

The state of the approval

site_id varchar(40) not null

The unique ID of the site.

csr_order_approval

This table stores information specific to an order approval.

Column Data Type Constraint

approval_id varchar(40) not null

(primary key) The ID of the approval.

order_id varchar(40) not null

The ID of the order.

Page 235: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 2 7

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μ

ATG Commerce Service Center Profile Tables CSC uses the following database tables to store agent approval information.

These tables are installed by the <ATG10dir>/CSC10.0.2/DCS-CSR/sql/install/ db_components/database-vendor/DCS-CSR_profile_ddl.sql script.

csr_agent_app_limit

This table stores the approval limits for agents.

Column Data Type Constraint

agent_id varchar(40) not null

The ID of the agent.

currency varchar(3) not null

The ID of the order.

app_limit numeric(19) null

(primary key) The limit that an agent can approve.

ATG Commerce Service Center Logging Tables CSC uses the following database tables to store audit logging information.

These tables are installed by the <ATG10dir>/CSC10.0.2/DCS-CSR/sql/install/ db_components/database-vendor/DCS-CSR_logging_ddl.sql script.

The tables described in this section are all used by the agent audit repository. The Nucleus component for this repository is /atg/agent/logging/AuditRepository.

csr_grant_appease

This table stores log records about the granting of appeasements (store credits).

Page 236: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 2 8

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μColumn Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the log record.

appeasement_id varchar(40) null

The ID of the store credit.

amount double precision null

The amount of the store credit.

csr_price_override

This table stores log records of manual price overrides.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the log record.

order_id varchar(40) null

The ID of the order containing the price override.

component_id varchar(40) null

The ID of the order component (item or shipping group) whose price was overridden.

component_type varchar(40) null

The type of the order component whose price was overridden. Possible values: commerceItem, shippingGroup.

old_price double precision null

The previous price of the item or shipping group.

new_price double precision null

The new price of the item or shipping group.

csr_order_event

This table stores log records about orders that have been modified.

Page 237: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 2 9

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μColumn Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the log record.

order_id varchar(40) null

The ID of the modified order.

amount double precision null

The total cost of the order.

csr_return_order

This table stores log records of returned orders.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the log record.

ret_req_id varchar(40) null

The ID of the return request.

repl_order_id varchar(40) null

The ID of the replacement order (for an exchange).

csr_recv_rtrn_item

This table stores log records of receipt of returned items.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the log record.

item_id varchar(40) null

The commerce item ID of the returned item.

quantity integer null

The quantity of the item that was returned.

Page 238: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 3 0

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μ

csr_claim_item

This table stores log records of the claiming of coupons, gift certificates, and store credits.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the log record.

claimable_id varchar(40) null

The ID of the coupon, gift certificate, or store credit.

claimable_type varchar(40) null

Type of item claimed (coupon, gift certificate, or store credit).

csr_ci_event

This table stores log records about changes to the quantities of items in orders.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the log record.

item_id varchar(40) null

The ID of the commerce item whose quantity was changed.

old_quantity integer null

The previous quantity of the item.

new_quantity integer null

The new quantity of the item.

csr_pg_event

This table stores log records about changes to payment groups in orders.

Page 239: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 3 1

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μColumn Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the log record.

pay_group_id varchar(40) null

The ID of the payment group that was changed.

update_type tinyint not null

The type of update performed. 0=modify; 1=remove; 2=add.

csr_split_sg

This table stores log records about splitting up items in orders among multiple shipping groups.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the log record.

src_ship_group_id varchar(40) null

The shipping group the item was moved from.

dest_ship_group_id varchar(40) null

The shipping group the item was moved to.

commerce_item_id varchar(40) null

The ID of the commerce item that was moved.

quantity integer not null

The quantity of the item that was moved.

csr_split_cc

This table stores log records about splitting up item costs among multiple cost centers.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of this log record.

Page 240: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 3 2

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μColumn Data Type Constraint

src_cost_ctr_id varchar(40) null

The cost center that the item’s costs were moved from.

dest_cost_ctr_id varchar(40) null

The cost center that the item’s costs were moved into.

commerce_ident_id varchar(40) null

The ID of the commerce item whose costs were moved.

quantity integer not null

The quantity of the item whose costs were moved.

csr_sg_event

This table stores log records about changes to shipping groups in orders.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the log record.

ship_group_id varchar(40) null

The ID of the shipping group that was changed.

update_type integer not null

The type of update performed. 0=modify; 1=remove; 2=add.

csr_upd_props

This table stores log records about changes to properties of repository items.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the log record.

audit_id varchar(40) null

Page 241: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 3 3

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μColumn Data Type Constraint

The ID of the log record this change is associated with. (For example, if the change is to a shipping group, this value is the ID of the log record in the csr_sg_event table.)

property_name varchar(40) null

The name of the property that was modified.

old_value varchar(255) null

The previous value of the property.

new_value varchar(255) null

The new value of the property.

version integer not null

The GSA version of the modified property.

csr_order_comment

This table stores log records about order comments submitted by agents.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the log record.

comment_id varchar(40) null

The ID of the comment.

csr_view_card

This table stores log records of agents viewing customers’ credit card information.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the log record.

cc_number varchar(20) null

The credit card number of the card that was viewed.

Page 242: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 3 4

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μ

csr_oma_event

This table stores log records about order adjustments submitted by agents.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the log record.

man_adj_id varchar(40) null

The unique ID of the manual adjustment.

adjustment_type Integer not null

The type of adjustment.

update_type integer null

The type of update performed.

reason one-digit null

The reason for the adjustment

csr_schd_event

This table stores log records of scheduled events.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the log record.

sch_order_id varchar(40) null

The unique ID of the scheduled order.

update_type one-digit not null

The type of update.

Page 243: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 3 5

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μATG Commerce Service Center Ticketing Tables

CSC uses the following database tables to store ticketing information.

These tables are installed by the <ATG10dir>/CSC10.0.2/DCS-CSR/sql/install/db_components/intall/database-vendor/DCS-CSR_ticketing_ddl.sql script.

The tables described in this section are all used by the ticketing repository. The Nucleus component for this repository is /atg/ticketing/TicketingRepository.

csrt_grant_appease

This table stores ticketing records about the granting of appeasements (store credits).

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the record.

appeasement_id varchar(40) null

The ID of the store credit.

amount double precision null

The amount of the store credit.

csrt_price_overrde

This table stores ticketing records of manual price overrides.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the record.

order_id varchar(40) null

The ID of the order containing the price override.

component_id varchar(40) null

The ID of the order component (item or shipping group) whose price was overridden.

component_type varchar(40) null

Page 244: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 3 6

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μColumn Data Type Constraint

The type of the order component whose price was overridden. Possible values: commerceItem, shippingGroup.

old_price double precision null

The calculated price of the item or shipping group.

new_price double precision null

The actual price charged to the customer for the item or shipping group.

csrt_order_event

This table stores ticketing records about orders that have been modified.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the record.

order_id varchar(40) null

The ID of the modified order.

amount double precision null

The total cost of the order.

csrt_return_order

This table stores ticketing records of returned orders.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the record.

ret_req_id varchar(40) null

The ID of the return request.

repl_order_id varchar(40) null

The ID of the replacement order (for an exchange).

Page 245: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 3 7

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μ

csrt_recv_rtrn_itm

This table stores ticketing records of receipt of returned items.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the record.

item_id varchar(40) null

The commerce item ID of the returned item.

quantity integer null

The quantity of the item that was returned.

csrt_claim_item

This table stores ticketing records of the claiming of coupons, gift certificates, and store credits.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the record.

claimable_id varchar(40) null

The ID of the coupon, gift certificate, or store credit.

claimable_type varchar(40) null

Type of item claimed (coupon, gift certificate, or store credit).

csrt_ci_event

This table stores ticketing records about changes to the quantities of items in orders.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the record.

Page 246: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 3 8

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μColumn Data Type Constraint

item_id varchar(40) null

The ID of the commerce item whose quantity was changed.

old_quantity integer null

The previous quantity of the item.

new_quantity integer null

The new quantity of the item.

csrt_pg_event

This table stores ticketing records about changes to payment groups in orders.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the record.

pay_group_id varchar(40) null

The ID of the payment group that was changed.

update_type tinyint not null

The type of update performed. 0=modify; 1=remove; 2=add.

csrt_split_sg

This table stores ticketing records about splitting up items in orders among multiple shipping groups.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the record.

src_ship_group_id varchar(40) null

The shipping group the item was moved from.

dest_ship_group_id varchar(40) null

The shipping group the item was moved to.

Page 247: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 3 9

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μColumn Data Type Constraint

commerce_item_id varchar(40) null

The ID of the commerce item that was moved.

quantity integer not null

The quantity of the item that was moved.

csrt_split_cc

This table stores ticketing records about splitting up item costs among multiple cost centers.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the record.

src_cost_ctr_id varchar(40) null

The cost center that the item’s costs were moved from.

dest_cost_ctr_id varchar(40) null

The cost center that the item’s costs were moved into.

commerce_ident_id varchar(40) null

The ID of the commerce item whose costs were moved.

quantity integer not null

The quantity of the item whose costs were moved.

csrt_sg_event

This table stores ticketing records about changes to shipping groups in orders.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the record.

ship_group_id varchar(40) null

The ID of the shipping group that was changed.

Page 248: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 4 0

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μColumn Data Type Constraint

update_type integer not null

The type of update performed. 0=modify; 1=remove; 2=add.

csrt_order_comment

This table stores ticketing records about order comments submitted by agents.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the record.

comment_id varchar(40) null

The ID of the comment.

csrt_update_org

This table stores ticketing information about changes made to organization profiles.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the record.

updated_item_id varchar(40) Null

The ID of the organization profile that was modified.

csrt_orders

This table associates orders with tickets.

Column Data Type Constraint

order_id varchar(40) not null

(primary key) The ID of the order.

ticket_id varchar(40) not null

Page 249: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 4 1

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μColumn Data Type Constraint

(primary key) The ID of the associated ticket.

csrt_oma_event

This table stores ticketing information about changes made to adjustment updates.

Column Data Type Constraint

id varchar(40) not null

(primary key) The unique ID of the record.

man_adj_id varchar(40) not null

The unique ID of the manual adjustment.

adjustment_type varchar(40) null

The type of adjustment.

update_type integer not null

The type of update.

reason integer not null

The number of the reason for the adjustment

csrt_schd_event

This table associates scheduled events with tickets.

Column Data Type Constraint

id varchar(40) not null

(primary key) The ID of the order.

schd_order_id varchar(40) not null

The ID of the scheduled order.

update_type integer not null

The type of update.

Page 250: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 4 2

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μcsr_appr_event

This table associates approval events with tickets.

Column Data Type Constraint

id varchar(40) not null

(primary key) The ID of the order.

approval_id varchar(40) not null

The ID of the approval.

update_type integer not null

The type of update.

csr_order_appr_event

This table associates order approval events with tickets.

Column Data Type Constraint

id varchar(40) not null

(primary key) The ID of the order.

order_id varchar(40) not null

The ID of the order.

csr_grt_prom_event

This table associates promotion events with tickets.

Column Data Type Constraint

id varchar(40) not null

(primary key) The ID of the order.

promo_id varchar(40) not null

The ID of the promotion.

update_type integer not null

Page 251: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 4 3

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μColumn Data Type Constraint

The type of update.

csr_ign_prom_event

This table associates promotion events with tickets.

Column Data Type Constraint

id varchar(40) not null

(primary key) The ID of the order.

promo_id varchar(40) not null

The ID of the promotion.

order_id varchar(40) not null

The ID of the order.

csr_gl_event

This table associates gift list events with tickets.

Column Data Type Constraint

id varchar(40) not null

(primary key) The ID of the order.

giftlist_id varchar(40) not null

The ID of the gift list.

event_name varchar(40) not null

The name of the event.

csr_gi_event

This table associates updated gift list events with tickets.

Page 252: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 4 4

A p p e n d i x A : A T G C o m m e r c e S e r v i c e C e n t e r D a t a b a s e T a b l e s

μColumn Data Type Constraint

id varchar(40) not null

(primary key) The ID of the order.

catalog_ref_id integer null

The ID of the catalog

old_quantity integer null

The previous quantity of items within the list.

new_quantity integer null

The new quantity of items within the list.

Page 253: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 4 5

A p p e n d i x B : A T G C o m m e r c e S e r v i c e C e n t e r A c c e s s R i g h t s C o m p a r i s o n

μAppendix B: ATG Commerce Service Center Access Rights Comparison

The following table displays the access rights for the CSC roles:

csr

Ticketing

csr

Manager

csr

Order

csr

Profile

cmcAddProductByIdP x x x x

Allowed to Create New Profile x x

cmcApprovals x

cmcBillingP x x x x

commerce-custsvc-adjust-price-

privilege

x

commerce-custsvs-browse-promotions-

privilege

x x

commerce-custsvc-issue-credit-

privilege

x

commerceDesignTab x x x x

commerceTab x x x x

cmcCompleteExchangeP x x x x

cmcCompleteOrderP x x x x

cmcCompleteReturnP x x x x

cmcConfirmExchangeP x x x x

cmcConfirmNewScheduleP x x

cmcConfirmOrderP x x x x

cmcConfirmReturnP x x x x

cmcConfirmOrderP x x x x

Page 254: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 4 6

A p p e n d i x B : A T G C o m m e r c e S e r v i c e C e n t e r A c c e s s R i g h t s C o m p a r i s o n

μ csr

Ticketing

csr

Manager

csr

Order

csr

Profile

cmcConfirmOrderP x x x x

cmcConfirmUpdateScheduleP x x

cmcCrossSellP x x x x

cmcCustomerAccountPanel x x x x

cmcCustomerCreateP x x x x

cmcCustomerInfoP x x x x

CustomerInformationPanel x x x x

CustomerOrderHistoryPanel x x x x

cmcCustomerP x x x x

cmcCustomerResultsP x x x x

CustomerResultsPanel x x x x

cmcCustomerSearchP x x x x

CustomerSearchPanel x x x x

customersTab x x x x

CustomerTicketHistoryPanel x x x x

cmcExchangeSummaryP x x x x

cmcExistingOrdcerP x x x x

cmcExistingSchedulcedOrderP x x x x

cmcGiftlistSearchP x x

cmcGiftlistsViewP x x

cmcGiftlistViewPurchaseModeP x x

GlobalPanel x x x x

HelpfulOpenByIDPanel x x x x

HelpfulRecentTicketsPanel x x x x

HelpfulTicketHistoryPanel x x x x

HelpfulTicketSummary x x x x

cmcMoreCatalogsP x x x x

cmcMorePriceListsP x x x x

Page 255: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 4 7

A p p e n d i x B : A T G C o m m e r c e S e r v i c e C e n t e r A c c e s s R i g h t s C o m p a r i s o n

μ csr

Ticketing

csr

Manager

csr

Order

csr

Profile

cmcMultisiteSelectionPickerP x x x x

cmcOrderHistoryP x x x x

cmcOrderResultsP x x x x

cmcOrderReturnsP x x x x

cmcOrderSearchP x x x x

cmcProductCatalogBrowseP x x x x

cmcProductCatalogSearchP x x x x

cmcProductViewP x x x x

cmcPromotionsP x x x x

cmcPurchasedItemsHistoryP x x x x

cmcPurchaseHistoryP x x x x

cmcRefundTypeP x x x x

cmcRelatedOrdersP x x x x

cmcRelatedTicketsP x x x x

RespondComposeMessagePanel x x

respondTab x x

cmcReturnDetailsP x x x x

cmcReturnItemsP x x x x

cmcReturnsHistoryP x x x x

cmcReturnSummaryP x x x x

cmcScheduleCreateP x x

cmcScheduledOrdersP x x x x

cmcSchedulesP x x x x

cmcScheduleUpdateP x x

cmcShippingAddressP x x x x

cmcShippingMethodP x x x x

cmcShoppingCartP x x x x

cmcSubmittedOrdersP x x x x

Page 256: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 4 8

A p p e n d i x B : A T G C o m m e r c e S e r v i c e C e n t e r A c c e s s R i g h t s C o m p a r i s o n

μ csr

Ticketing

csr

Manager

csr

Order

csr

Profile

TasksAllTicketsPanel x x x x

TasksMyTicketsPanel x x x x

tasksTab x x x x

TicketActivityPanel x x x x

cmcTicketHistoryP x x x x

TicketsCustomerInformationPanel x x x x

TicketsResultsPanel x x x x

TicketsSearchPanel x x x x

TicketsSummaryPanel x x x x

ticketsTab x x x x

workspaceLogin x x x x

For additional information, refer to the Setting up Internal Access Control chapter.

Page 257: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 4 9

A p p e n d i x C : C I M C o n f i g u r a t i o n C o m p o n e n t s

μAppendix C: CIM Configuration Components

The ATG Configuration and Installation Manager script assists with the configuration of your CSC set up.

When using CIM, you have the option to install a number of ATG products, including CSC. Depending on your requirements, you can run a single CSC installation or install additional components to run your CSC environment.

CIM also allows you to configure servers, including staging, preview and dedicated lock servers.

Available Added Functionality The following functionality add-ons can also be configured when installing CSC.

ATG Click to Connect

Data warehouse (Reporting)

Multisite

Publishing deployment and switching data sources for catalogs and price lists

Server Instances The following server instances are configured when running CIM:

Server Instance

Module List Required Data Sources

Agent STORE_MODULE Fulfillment DCS-CSR OPTIONAL_MODULES CSC_CUSTOMIZATIONS

JTDataSource

JTDataSource_production

Production JTDataSource

Page 258: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 5 0

A p p e n d i x C : C I M C o n f i g u r a t i o n C o m p o n e n t s

μData Warehouse (optional)

DCS-CSR.DW atg/reporting/datawarehouse/

JTDataSource

atg/reporting/datawarehouse/loader/

JTDataSource

Production, Agent and Management

DCS-CSR.Management JTDataSource

JTDataSource_production

Agent DAF.Search.Base.QueryConsole JTDataSource

Add On Modifications

The following modifications occur to the server instances when using these optional add-ons:

Add On Server Instance

Changes to Server Instance

Data Warehouse

Data Warehouse

Adds DCS.DW, Service.DW and DCS-CSR.DW DDLs Adds DCS-CSR.DW to module list

This adds the Data Warehouse server instance listed above

Click To Connect

Production Adds ClickToConnect and DCS.ClickToConnect DDLs Adds DCS.ClickToConnect to module list Adds account information to properties files

Click To Connect

Agent Adds DCS-CSR.ClickToConnect to module list Adds account information to properties files

Price Lists Agent Sets /atg/commerce/custsvc/util/ CSRConfigurator.usingPriceLists=true and /atg/commerce/custsvc/util/

CSRConfigurator.usingSalePriceLists=true

Merch UI Publishing If using ATG Merchandising, CSC must be added to the deployment topology as a deployment target. Additionally, if switching data sources are enabled in ATG Commerce, ATG Publishing must be aware of this to perform a switch on deployment

Scheduled Orders

Agent Sets /atg/commerce/custsvc/util/ CSRConfigurator.usingScheduledOrders=true

Multisite All Sets Multisite capabilities

Page 259: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 5 1

A p p e n d i x C : C I M C o n f i g u r a t i o n C o m p o n e n t s

μData Source Configuration

The following data source information is configured for each of the server instances.

JTDataSource for Agent

The following information is configured for the agent JTDataSource. The JTDataSource information for the agent is stored in the DCS-CSR startup module.

SQL File

The SQL file used for the JTDataSource is <ATG10dir>/CSC10.0.2/DCS-CSR/sql/install/ db_components/vendor/DCS-CSR_logging_ddl.sql.

Data Imports

The following files are imported using the DCS-CSR startup module:

Repository Imported File Versioned

/atg/svc/ui/framework/

ServiceFrameworkRepository

<ATG10dir>/CSC/DCS-CSR/

install/data/svc_framework.xml

Yes

/atg/svc/ui/framework/

ServiceFrameworkRepository_production

<ATG10dir>/CSC/DCS-CSR/

install/data/svc_framework.xml

No

/atg/userprofiling/

InternalProfileRepository

<ATG10dir>/CSC/DCS-CSR/

install/data/csrData.xml

No

/atg/svc/option/OptionRepository <ATG10dir>/CSC/DCS-CSR/

install/data/csrOptions.xml

Yes

/atg/svc/option/

OptionRepository_production

<ATG10dir>/CSC/DCS-CSR/

install/data/csrOptions.xml

No

JTDataSource for Production

The following information is configured for the production JTDataSource, which is the JTDataSource_production data source in the agent instance. The JTDataSource information for production is stored in the DCS-CSR startup module.

SQL File

The SQL files used for the JTDataSource are: <ATG10dir>/CSC/DCS-CSR/sql/install/db_components/vendor/DCS-CSR_ddl.sql and <ATG10dir>/CSC/DCS-CSR/sql/install/db_components/vendor/DCS-CSR_ticketing_ddl.sql

The following files are modified when using the ATG Click to Connect add-on:

Page 260: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 5 2

A p p e n d i x C : C I M C o n f i g u r a t i o n C o m p o n e n t s

μ

Module SQL File

ClickToConnect <ATG10dir>/ClickToConnect/sql/install/db_components/vendor/

click_to_connect_ddl.sql

DCS.ClickToConnect <ATG10dir>/DCS/ClickToConnect/sql/instal/db_components/

vendor/dcs_click_to_connect_ddl.sql

The following files are modified when using the Data Warehouse add-on:

Module SQL File

Service.DW <ATG10dir>/Service10.0.2/service/DW/sql/insatll/db_components/vendor/

svc_dw_ddl.sql

Switching Data Source

The following information is configured for the switching data sources, which configures the JTDataSource data source in the production instance. The switchingdatasource add-on adds the switching switchingcore data source, as well as switchingA and switchingB data sources.

Note: Using a switching data source will also impact the catalog and pricing data sources for CSC.

Data Imports

The following files are imported using the Service.Framework module:

Repository Imported File

/atg/svc/ui/framework/

ServiceFrameworkRepository

<ATG10dir>/CSC/DCS-CSR/

install/data/svc_framework.xml

/atg/userprofiling/

InternalProfileRepository

<ATG10dir>/CSC/DCS-CSR/

install/data/csrData.xml

/atg/svc/option/OptionRepository <ATG10dir>/CSC/DCS-CSR/

install/data/csrOptions.xml

CIM File Configuration When running CIM, the following files are configured using these default settings:

Page 261: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 5 3

A p p e n d i x C : C I M C o n f i g u r a t i o n C o m p o n e n t s

μProduction Server File Configurations

The following property file configurations are set for the production server.

Search Property File Configuration

The LaunchingService.properties file searchEngine and deployShare properties are installed on the CSC production server.

The IndexingPeriodicService.properties file is set to enable=true to identify the production server as a server that will be used by the indexing server to queue profile and order indexing requests.

The /atg/userprofiling/search/ProfileOutputConfig.incrementalUpdateSeconds and the /atg/commerce/search/OrderOutputConfig.incrementalUpdateSeconds properties, which determine the frequency for live indexing requests, are set to 5 seconds.

Note: If the server on which this is being configured is not the indexing server, set the incrementalUpdateSeconds to -1. It is best to configure a non-DRP server as your indexing server.

ClickToConnect Property File Configuration

The /atg/clicktoconnect/Configuration.properties file is configured with the following information:

# Your ATG ClicktoConnect account ID

accountId=info_received_from_user_during_install

# The ATG ClickToConnect username

username=info_received_from_user_during_install

# The ATG ClickToConnect password

password=info_received_from_user_during_install

Agent Server File Configurations

The following configuration changes are made on the agent server.

Search Property File Configuration

The LaunchingService.properties file searchEngine and deployShare properties are installed on the CSC agent server.

The IndexingPeriodicService.properties file is set to enable=true to identify the management server as a server that will perform queuing of index changes.

The /atg/userprofiling/search/ProfileOutputConfig.incrementalUpdateSeconds and the /atg/commerce/search/OrderOutputConfig.incrementalUpdateSeconds properties, which determine the frequency for live indexing requests, are set to 5 seconds.

Note: If the server on which this is being configured is not the indexing server, set the incrementalUpdateSeconds to -1. It is best to configure a non-DRP server as your indexing server.

Page 262: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 5 4

A p p e n d i x C : C I M C o n f i g u r a t i o n C o m p o n e n t s

μClickToConnect Property File Configuration

The /atg/clicktoconnect/Configuration.properties file is configured with the following information:

# Your ATG ClickToConnect account ID

accountId=info_received_from_user_during_install

# The ATG ClickToConnect username

username=info_received_from_user_during_install

# The ATG ClickToConnect password

password=info_received_from_user_during_install

The following key information is required by CSC to automatically authenticate an agent using a salted hash passed through from WinCare. The salt for the hash must be configured for CSC separately and must match. For information on setting up the secret key in WinCare, refer to the Configuring ATG Click to Call section.

Note: You must contact an ATG Click to Call agent to set the corresponding secret key on the ATG side that matches your agent server configuration. The CIM installation will neither obtain nor configure the ATG Click to Call-side variables.

This information is stored in the /atg/svc/clicktoconnect/C2CTools.properties file:

# key that is included when calculating the hash value

# for comparison to a computed value on the request

secretKeyForHashCompare=info_received_from_user_during_install

Price Lists Add On Configuration

The following information is configured if installing Price Lists. The following information is stored in the /atg/commerce/custsvc/util/CSRConfigurator.properties file:

usingPriceLists=true

usingSalesPriceLists=true

Scheduled Orders Add On Configuration

The following information is configured if installing Scheduled Orders. The following information is stored in the /atg/commerce/custsvc/util/CSRConfigurator.properties file:

usingScheduledOrders=true

Example: CIM Installation The following is an example of a CIM script installation on Linux using JBoss and Oracle.

Page 263: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 5 5

A p p e n d i x C : C I M C o n f i g u r a t i o n C o m p o n e n t s

μPrerequisites

You will need the following before running the CIM process:

1. Four Oracle database accounts, such as: agent, production, publishing and reporting _loader_data-warehouse

2. If you are configuring a switching data source, you will need two additional Oracle database accounts: Switching_A and Switching_B

3. Ensure that JBoss 5.0.0.EAP is installed

4. Ensure JDK 1.6.0_18 is installed.

5. Ensure that the following product versions are ready for installation:

Oracle 11g client / drivers (ojdbc5.jar or ojdbc6.jar)

The ATG platform

ATG Service

ATG Commerce Reference Store or ATG Commerce

ATG Search

Note: If CSC has previously been installed, you must drop each of the schemas before recreating them. You can do this by using cim.sh in the existing installation to drop the schemas. You will also need to rename the old ATG directory if this exists.

You will also need to remove any servers you have previously created in JBoss, as running CIM will create new server instances.

Installing the Products

When running the CIM script, you will be prompted to install the necessary components of CSC.

Installing the ATG Platform

1. Set the required installation path, for example, /work/service/../ATG10.0.2

2. At the prompt, enter the full path to your JBoss Home directory. For example, C: /Program Files/jboss/jboss-5.0.0.GA

3. At the prompt, enter the JBoss Listen Port. To use the default port number, 8080, press Enter.

4. Enter the RMI port. To use the default port number, 8860, press Enter.

Installing ATG Commerce Reference Store or ATG Commerce

Follow the instructions for installing ATG Commerce Reference Store or ATG Commerce. When prompted, set the required installation path, for example, /work/service/../ATG10.0.2

Installing ATG Search

1. Set the required installation path, for example, /work/service/../ATG10.0.2

2. When prompted, selection Option 2 “Search Engine Only”

Page 264: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 5 6

A p p e n d i x C : C I M C o n f i g u r a t i o n C o m p o n e n t s

μCreating a CIM Output File

Once the products have been downloaded and installed, use CIM to configure them. If you wish to keep a record of your selections for future reference, CIM can create an output file.

From the /ATG10.0.2/home/bin directory, enter script, and a typescript file is created with script output.

Running CIM

CIM presents you with a sequence of menus and menu options that allow you to configure installed products. Multiple selections can be separated by a space. You can confirm your selections by typing D for Done.

To start CIM in the current window, run the following command:

./cim.sh or cim.bat

The following section outlines the configuration options required to set up CSC10.0.2 and ATG Commerce 10.0.2 with the ATG Reporting option. This document highlights the main options the user must select to configure the products.

CIM Script Selections

The following steps provide an example of installing CSC in an Oracle and JBoss environment. Enter the corresponding letter(s) to select the menu option. This installation assumes that the ATG platform has already been set up and configured.

Note: The following is an example of the CIM script installation. Your script may be different based upon the requirements of your installation.

Selecting a Product

1. At the prompt, enter P, for Product Selection:

*[P] Product Selection

[A] Select Application Server

[C] Custom CIM Plugin Launcher

2. Select the Product options for CSC and ATG Commerce for B2C:

Select options:

[3] ATG Commerce (B2C)

[5] ATG Commerce Service Center

3. When the Add On menu appears, select the Reporting Add On and the Dedicated Lock Servers Add On:

Choose AddOns :

[1] Reporting

[2] Dedicated Lock Servers

Page 265: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 5 7

A p p e n d i x C : C I M C o n f i g u r a t i o n C o m p o n e n t s

μ4. Select the Dedicated Lock Servers:

Dedicated Lock Servers :

[1] Publishing Dedicated Lock Server

[2] Production Dedicated Lock Server

[3] Agent Dedicated Lock Server

[D] Done

5. Select the Data Source type. If you are using a switching data source, select Switching Data Source. If you are not using a switching data source, select Non-Switching Data Source:

Datasource Type

[1] Non-Switching Datasource

[2] Switching Datasource

6. Select the ATG Commerce Add-ons:

7. Include ATG Search QueryConsole in the installation: [1] Include Search QueryConsole on Agent

[D] Done

8. Select the CSC Add-ons. If your environment is using Multisite or ATG Click to Connect, select these Add-ons:

Choose Commerce Service Center Addons:

[1] ClickToConnect

[2] Multisite

[D] Done

When you have completed the Product Selection, CIM will create the server instance types with the necessary modules.

Selecting an Application Server

The CIM script will configure your application server.

1. Enter the Application Server type:

Choose Application Server: (* = Currently selected )

*[1] JBoss Application Server

2. Enter the JBoss Home Path:

Enter Path : > [enter path relevant to your system]

>> App Server home path set to [path]

Once you have completed the application server information, you will be presented with new menu options. The ‘Product Selection’ and ‘Select Application Server’ options are be marked as ‘Done’ (but can still be accessed if you need to make changes)

Page 266: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 5 8

A p p e n d i x C : C I M C o n f i g u r a t i o n C o m p o n e n t s

μConfiguring the Database

The next step is to configure the databases necessary for the installation.

Choose the task you want to perform:

*[1] Database Configuration

3. Select a data source using the menu options. Configure the data sources consecutively as needed:

*[R] Reporting DataWarehouse

[L] Reporting Loader

[P] Publishing

[C] Production Core

[A] Agent Datasource

[D] Done

Note: If you are setting up switching data sources, two additional switching data sources will appear in the list.

4. Select the Connection Details for the first data source by entering C at the prompt:

*[C] Connection Details

5. Select the type of database:

Select Database Type

[1] Oracle Thin

6. Enter the database information as required:

7. Once you have configured the first data source, type O to configure the rest of the data sources in your environment. You can reuse the database values you entered above for additional data sources.

[O] Configure Another Datasource

When configuration is complete, the CIM Database Configuration menu option will be marked Done.

Configuring the Servers

CIM guides you through the configuration of each server instance when you select menu option 2: Server Instance Configuration

1. Configure the Server Instance from the Server Instance Type Selection menu:

[A] Agent LockManager Server – 0 Instances Configured

[P] Publishing LockManager Server – 0 Instances Configured

[W] Data Warehouse Loader Server – 0 Instances Configured

[L] Production LockManager Server – 0 Instances Configured

[S] Publishing Server - 0 Instances Configured

[R] Production Server – 0 Instances Configured

[T] ATG Agent Server – 0 Instances Configured

Page 267: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 5 9

A p p e n d i x C : C I M C o n f i g u r a t i o n C o m p o n e n t s

μ [D] Done

*[A] Add Server Instance

2. Select the type of server instance that you want to create and provide the necessary information.

Publishing Server Configuration

1. The DPS.Search.Index module should be added to your list of starting modules on the publishing server so that customer profiles created on the publishing server are incrementally indexed.

Select the Modify Calculated Module List option to add from the Server Instance Type Configuration menu:

*[P] Publishing Server General Configuration – REQUIRED

[I] Instance Management – REQUIRED

[C] Modify Calculated Module List – OPTIONAL

[S] Scenario Manager – OPTIONAL

[O] Configure Another Server Instance Type

2. Review the module list in the Module List Editor:

Current Module List:

BIZUI, PubPortlet, DafEar.Admin, DCS-CSR.Management,

B2CCommerce.Versioned, DCS.Versioned, SiteAdmin.Versioned, ARF.base,

ARF.BIZUI, ARF.WSCAP

Select option A to add a custom Module:

*[A] Add A Custom Module

3. From the Add a Module menu, enter the name of the DPS.Search.Index module and identify the placement of the module in the module list. Place the DPS.Search.Index module at the end of the module list.

Please enter the name of the custom module to add. >

DPS.Search.Index

Choose Location to Place Module.

[1] ---> BIZUI

[2] ---> PubPortlet

[3] ---> DafEar.Admin

[4] ---> B2CCommerce.Versioned

[5] ---> DCS.Versioned

[6] ---> DCS-UI

[7] ---> commerce.b2cblueprint.estore.Versioned

[8] ---> ARF.base

[9] ---> ARF.BIZUI

[10] ---> ARF.WSCAP

[11] --->

[C] Cancel and do not add a module.

Page 268: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 6 0

A p p e n d i x C : C I M C o n f i g u r a t i o n C o m p o n e n t s

μSelect one > 11

4. Review the module configuration when complete.

Production Server Configuration

1. Add the DPS.Search.Index and DCS.Search.Order modules to the store front EAR so that profiles or orders created from the store front will be live indexed on the indexing server.

2. Select the Modify Calculated Module List option from the Server Instance Type Configuration Menu:

[P] Production Server General Configuration – DONE

[I] Instance Management - 1 Instance Configured

[C] Modify Calculated Module List – OPTIONAL

[S] Scenario Manager – OPTIONAL

*[O] Configure Another Server Instance Type

> C

3. Review the module list in the Module List Editor:

Current Module List:

DafEar.Admin, DPS, DSS, DCS.AbandonedOrderServices, B2CCommerce,

DCS.PublishingAgent, ARF.base, DCS.ClickToConnect

Select option A to add a custom Module:

*[A] Add A Custom Module

4. From the Add a Module menu, enter the name of the DPS.Search.Index module and identify the placement of the module in the module list. Place the DPS.Search.Index module at the end of the module list.

Please enter the name of the custom module to add. >

DPS.Search.Index

Choose Location to Place Module.

[1] ---> DafEar.Admin

[2] ---> B2CCommerce

[3] ---> DCS.PublishinAgent

[4] ---> DCS.AbandonedOrderService

[5] ---> ARF.base

[6] ---> commerce.b2cblueprint.sketch

[7] ---> DCS.ClickToConnect

[8] ---> commerce.b2cblueprint.estore.Production

[9] --->

[C] Cancel and do not add a module.

Select one > 9

Page 269: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 6 1

A p p e n d i x C : C I M C o n f i g u r a t i o n C o m p o n e n t s

μ5. Using the same steps as above, add the DPS.Search.Order module after the

DPS.Search.Index module.

Assembling and Deploying the Application

Once you have configured the above settings, you must assemble and deploy the application. From the CIM Main Menu, selection option 3: Application Assembly & Deployment.

1. Select the Deployment Server Instance to create:

*[A] atg_dw_loader - Datawarehouse Loader

[P] atg_production – Production

[T] atg_publishing – Publishing

[S] atg_svcagent - Service Agent Server

[D] Done

2. Provide an EAR file name. You can use the server instance default, or provide your own file name:

Enter Ear File Name for [server instance default]

3. Select a JBoss Server. If your server has not been created, selection option C to have CIM create a server.

4. Select a JBoss Server Template and the name of your JBoss server:

[A] all

[T] atg

*[D] default

[I] minimal

Enter Name For Jboss Server: [desired server instance name]

>> Template set to default

>> Server set to [server instance name]

5. Deploy the service instance to JBoss

Top Level Module List:

DCS.CustomCatalogs DafEar.Admin B2CCommerce DCS.DW

DCS.PublishingAgent ARF.base DCS-CSR.DW

*[D] Deploy [server_instance] to JBoss

[R] Register Datasources on JBoss

[A] Add database driver to app server classpath

[P] Post Deployment Actions on JBoss

[E] Edit runAssembler arguments

[O] Configure Another Server Instance

6. Once you have configured the JBoss server instance, continue by creating and deploying EAR files for the agent, publishing, production and reporting servers by

Page 270: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 6 2

A p p e n d i x C : C I M C o n f i g u r a t i o n C o m p o n e n t s

μfollowing the above steps. When all of the servers have been deployed, the CIM menu will display the following:

Choose the task you want to perform:

[1] Database Configuration – Done

[2] Server Instance Configuration – Done

[3] Application Assembly & Deployment – Done

[P] Product Selection - Done (ATG Commerce Service Center & ATG

Commerce Blueprint)

[A] Select Application Server - Done (JBoss)

*[C] Custom CIM Plugin Launcher

Page 271: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 6 3

I n d e x

μIndex

A access controllers, 45 access rights, 43

agent, 44 approval, 40 customer profiles, 44 Internal User, 44 manager level, 45 orders, 44 Ticketing, 44 with roles, 245

address copying customer, 173 disabling sharing, 173 managing customer, 169 multiple shipping, 159 shipping group page fragment, 155 shipping header, 157 shipping, configuring, 168

AddressBook, 169 AddressReferenceManager, 170 adjustments

calculator, 144 exchange calculations, 193 in returns, 183 item cost, 184, 185 manual price, 39, 152 tiered pricing, 147

admin database, 11, 90 agent

access rights, 44 access to Promotion Browser, 39 appeasement limits, 40 approval access, 39 ATG Click to Call environment, 54 configuring default landing page, 51 database, 11 -facing scenarios, 204 -facing server, 5, 6 profiles, creating, 46 schema, 14 WinCare, adding, 56

appeasements. See approvals Approval Management System, 39 approvals, 39

enabling process, 40 limits, 40 setting authorization, 40

ATG Click to Call, 53 adding WinCare agents, 56 clicktoConnectSave function, 58 configuring authentication, 70 creating account, 55 creating links, 61 CTI, with, 68 customizing pop ups, 62 default landing page, 72 JavaScriptCallback rule, 58 landing page, 71 links, 57 multiple sites, with, 54 orphaned sessions, disabling, 57 overview, 53 page instrumentation, 56 phone numbers, 56 requirements, 54

ATG Commerce and CSRConfigurator, 77 unsupported B2B module, 7 with CIM, 13 with CSC, 13

ATG Commerce Service Center installing with CIM, 12 URL, 17 with ATG Commerce, 13

ATG Configuration and Installation Manager. See CIM ATG Optimization Console, 53

creating links, 54, 56, 58 creating static links, 57 creating store-facing links, 58 Link Builder, 56

ATG Reporting enabling, 17 installing, 14

ATG Search configuring environment, 22 configuring live indexing, 23

audit logging, 129, 130

C catalogs

configuring current, 137 configuring default, 139 configuring quick access, 140 product, 6 searches with Oracle, 27 with multisite, 7, 27

Page 272: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 6 4

I n d e x

μwith site context, 8

CIM, 12 configuration components, 249 with ATG Commerce, 13

clean partition searches, 25 cloning

core classes, 177 extended, 179 order modification, 174 pipelines, 174

CSRConfigurator, 77 CSREnvironmentTools, 142 csrManager, 45 csrOrders, 44 csrProfiles, 44 csrTicketing, 44 CSS, adding, 85 CTI system, 53

and ATG Click to Call, 68 manual integration, 70

customer profile access rights to, 44 and gift lists, 29 and price locale, 140 and scheduled orders, 38 email configuration, 121 indexing, 20 search, 19

customer-facing scenarios, 203 server, 5 store with ATG Click to Call, 56

customization of forms, 90 of grids, 94 of UI, 110 renderers, 119 simple UI, 112 tab troubleshooting, 89 targeting UI, 114

D data sharing

disabling address, 173 sites, 7, 124

data sources agent-facing JTDataSource, 6 configuring with CIM, 13 customer-facing JTDataSource, 5 switching, 6

database admin, 11 agent, 11 core tables, 215 logging tables, 225, 227 ticketing tables, 235 user accounts, 11

debugging mode, 79 Dojo, 80

default landing page, 51 for ATG Click to Call, 72

E EAR files

configuring for searches, 19 creating with CIM, 13

e-mail address for approvals, 39 notification, configuring, 121 order confirmation, 122 password, 122 templates, 123

environment management, 123 site context and, 127

EnvironmentTools, 126 exchanges

and promotions, 194 configuring, 31 pricing, 193 reason codes, 31 states, 31

F failover, 136 forms, customizing, 90 framework

components, 85 reporting, 206 repository, 80 updating, 83

G gift lists, 29

access right, 44 configuring search, 30 modifying form, 29 properties, 29

Gift Registry Search, 30 grids, customizing, 94

I IDGenerator, 15 importing

configuration data, 14 data with ATG Commerce, 14

indexing, 20 ATG Search with Live Indexing, 23 creating ATG Search environment for, 22 modules required for, 19 server, 20

Indexing Output Configuration, 19 installation

prerequisites, 3 using CIM, 12

Page 273: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 6 5

I n d e x

μItemCostAdjustments, 185 ItemPriceSource, 143

J Java version required, 3, 11 JSP targeting rules, 114 JTDatasources

agent-facing, 14 customer-facing, 5

K keyboard

shortcuts, 204

L landing page, 51

ATG Click to Call default, 72 links

ATG Click to Call, 63 ATG Click to Call, creating static, 57 ATG Optimization Console, 54

live indexing, 23 lock managers

client, 15 on agent-facing server, 16 on customer-facing server, 16 server, 15 with CIM, 13

logs agent activity, 130 audit, 133 database tables, 225, 227

M manual adjustments, 39 multiple sites

and data sharing, 7 and environment objects, 126 and site groups, 8 configuring, 27 configuring personalization assets, 111 enabling, 29 in ATG Click to Call, 54 with CTI system, 54

N Nucleus components

access controllers, 44 customizing UI with, 110 sharing, 8

O orders

access rights, 46 and promotions, 152 approval rights, 40 approvals, enabling, 40 fulfillment of, 180 manual adjustments of, 152 modification and fulfillment, 181 modifying, 174 modifying submitted, 173 price adjustments, 39 pricing, 141 scheduled, 36 scheduled, configuring, 196 scheduled, templates, 153

P page fragments

default payment group types, 162 example, 157 extending default, 94 forms, 91 gift list, 29 shipping group configuration, 155

panel adding, 80, 83 customer management, customization, 82 definition, 81

panel stack adding, 80 definition, 81

passwords, e-mailing, 122 payment group

credit card, 154 customization, 160 default, 160 gift certificate, 154 limiting amounts of, 166 store credit, 154

pop ups ATG Click to Call, 62

price lists, 142 and site context, 127 configuring current, 137 configuring default, 139 configuring quick access, 140 configuring with scheduled orders, 37 with multisite, 7, 27

price overrides, 39 pricing

bulk price calculations, 146 locale, 140 manual adjustments, 152 orders and, 141 original item, 142 overview, 141 promotions, 151 scheduled orders, 153 volume level, 148

Page 274: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 6 6

I n d e x

μPricingTools, 144 product catalog, 6 profiles, 6

agent, 46 customer, 121 customer, e-mail configuration, 121 customer, password, 122 customers, pricing locale, 140 indexing, 23 searching, 26

promotions and returns, 184 and submitted orders, 152 applying item level, 194 calculating with manual adjustments, 195 pricing models, 151 with exchanges, 194

Promotions Browser, 38

R reason codes

creating, 32 exchanges, 31 returns, 31

refunds calculation of, 184 customization of, 182 shipping calculation, 191

renderers, 117 components, 112 customization, 119

reporting data collection, 206 enabling, 17 framework, 206 load pipeline, 209

repositories approval, 39 ATG Click to Connect, 54 audit log, 128 configuring, 14 framework, 80 settings, 15 shared, 14 user profile, 45

returns configuring, 31 default return fees, 190 extending, 188 item dispositions, 34 order states, 173 reason codes, 31 states, 31

roles, 43 agent, creating, 47 and access rights, 245 creating, 45 csrManager, 45 csrOrders, 44 csrProfiles, 44

csrTicketing, 44 default, 48 preconfigured, 44

S scenarios, 199

configuring, 203 scheduled order

templates, 153 scheduled orders

components, 197 customizing, 196 enabling, 36 ScheduledOrderTools, 38

searches bulk indexing, 20 clean partition, 25 configuring environments, 22 configuring servers, 23 customer profile, 19 incremental, 20 Oracle catalog, 27 order, 19

server agent-facing, 6 customer-facing, 5 production, 5

shareables, 7, 8, 29 shipping group

customization, 154, 155 default types, 155 electronic, 154 extending, 188 form handlers, 167 hard goods, 154 types, 154

site context, 7, 8 site groups, 7 site priority, 9 siteContext, 127 sites

configuring multiple, 27 data sharing, 7 default icon, 28 default, configuring, 28 icons, 28 properties, 27

sites site groups, 8

T tab

adding, 86 troubleshooting customization, 89

tables core tables, 215 customizing, 94 logging, 225, 227 ticketing, 235

Page 275: ATG Commerce Service Center 10.0.2 Installation and ... · ATG Commerce Service Center Installation and Programming Guide 1 1 - Introduction μ 1 Introduction ATG Commerce Service

A T G C o m m e r c e S e r v i c e C e n t e r I n s t a l l a t i o n a n d P r o g r a m m i n g G u i d e

2 6 7

I n d e x

μticket

access right, 44 activities, configuring, 128 configuring environment, 127 disposition, 127

ticketing database tables, 235

U UI

customization, 112 forms, customizing, 90 grids, customizing, 94 modifying, 110 panel stack, adding, 80

tables, customizing, 94 tabs, adding, 86

W WebCare. See ATG Optimization Console WebLogic

with ATG Click to Call, 55 WebSphere

with ATG Click to Call, 55 WinCare

adding agents, 56 description, 67 secret key, 70

wish lists, 29


Recommended