Announcement: You can find the guides for Commerce 7.5 and later on the new Elastic Path Documentation site. The Developer Center continues to support Commerce 6.13.0 through 7.4.1.Visit new site

Customer self-service

Customer self-service

"Customer self-service" refers to a collection of Storefront pages used for viewing or editing customer information such as addresses, orders, email addresses and passwords. Each of these pages uses the standard Storefront Spring MVC infrastructure. The URL for the pages is mapped to an associated Controller class in url-mapping.xml. Self-service pages are restricted to customers with non-anonymous accounts who are signed in. This restriction is enforced by security and configured in security.xml. The following URLs are part of the customer self-service area.

Page URL Controller Velocity Template

Main Self-service page

manage-account.ep

manageAccountController

manage.vm

Edit Personal Info

edit-account.ep

editAccountFormController

account/edit.vm

Address Book

edit-address.ep / create-address.ep

addressFormController

address/create.vm

Credit Cards

edit-credit-card.ep / create-credit-card.ep

creditCardFormController

creditCard/create.vm

Order History

order-details.ep

viewOrderController

checkout/orderDetails.vm

Self service features

The Self service (aka Manage Account) page contains several subsections: Personal Info, Address Book, Credit Cards, and Orders.

Personal information

This section essentially displays the singular fields in the Customer object: Name, Email address, and Password (obscured).

To edit the information, the manageAccountController will send the user to the Edit Account screen, which will be handled by the editAccountFormController.

Address book

The addresses are obtained from a collection of addresses contained within the Customer class. The Customer contains only one List of addresses; however, it also has references to the PreferredBillingAddress and the PreferredShippingAddress within that List. The preferred billing and shipping addresses are automatically set during the checkout process, and are used to set other defaults at that time.

To create or edit an address, the manageAccountController will send the user to the Create Address screen, which is handled by the addressFormController. This controller is also used to edit existing addresses while the user is in the checkout process. In this case, the addressFormController will redirect the request to the shippingAddressFormController or the billingAddressFormController, depending on the type of address being edited. The shippingAddressFormController and billingAddressFormController are used during the checkout process to allow the user to select an existing address to use, or enter a new one. However, all address editing is delegating to the addressFormController, which is the same controller used for creating and editing addresses from the manage account screen.

Credit cards

Like addresses, the Customer object also has a collection of CustomerCreditCard objects. A CustomerCreditCard maintains a flag to indicate whether it is the default card; this flag is preset during checkout.

If creating a new Credit Card, the manageAccountController will send the user to the Create Credit Card screen, which will be handled by the creditCardFormController. If editing an existing Credit Card, the controller will redirect the request to the creditCardFormController with the credit card ID, which will then display the Edit Credit Card screen using the same create.vm template, allowing the user to edit their card information. The creditCardFormController is also used for editing existing credit cards while the user is in the checkout process.

Order history

Viewing an Order's details will send the user to the Order Details screen, which is read-only. This screen essentially displays relevant information contained in an Order object.