center">
BPR front-end website functions

Process Narrative
 
Created: 09/23/2009
Last Modified: 09/28/2009




Document Preferences 

Table of Contents

   1.0   Order
1.1   User initates new order
1.2   Customer login
1.3   Contact information section
1.4   Recell service order section
1.5   Payment section
1.6   Process order entry data
1.7   Confirm order
1.8   Process credit card
1.9   Process PayPal
1.10   Record order data
1.11   Record payment processing data
1.12   Verify address differences
1.13   Generate USPS in-bound shipping label
1.14   Order confirmation
1.15   Record pre-paid label
   2.0   Customer login
2.1   Customer login form
2.2   Process user login
2.3   Create customer account
2.4   Reset customer account password
2.5   Log user access
2.6   Successful login
2.7   User initiates login process
2.8   Change temporary password
2.9   Process password change
2.10   Process no password
2.11   Order
   3.0   Create customer account
3.1   User initiates new account creation
3.2   Create account form
3.3   Customer login
3.4   Process new user account
3.5   Record user account
3.6   Welcome email
3.7   New account welcome
   4.0   Reset customer account password
4.1   User initiates password reset
4.2   Reset password form
4.3   Create customer account
4.4   Customer login
4.5   Process reset password
4.6   Reset password
4.7   Email user temporary password
4.8   Successful reset


1.0  
Order Process Narrative

Order
Description Functions and parameters associated with the order now process of the website
Order

Full process modeling of the front-end order processing scenario.


1.1   User initates new order 

The user initiates the order process by clicking on the order now link on the public website.


1.2   Customer login 

The process of logging a customer into the BPR website is done through a single, uniform system. The login form page also offers links to resetting a password and creating a new customer account.


1.3   Contact information section 

This portion of the order form is rather critical since we need to know specific information about the customer's contact information in order to successfully process a new order. Since the user either authenticated their account with the system prior to reaching this form or entered the required basic information to initiate an order, the form behaves differently based on either scenario:

Authenticated Customer (shown as "_form(order now - existing customer)" template @ Protoshare)

The user's first and last names along with their email address are shown as text (not editable form fields). The password, password (confirm) and email address (confirm) fields are not present. Similarly, the user's default billing and shipping profile information is displayed as pre-populated form fields that are not editable (if the customer needs to edit either address, then they must check the "edit this address" checkbox to enable the form fields for editing). Similarly, if the user has multiple address profiles assigned in the system, a drop-down box is provided for them to select which address they would like to use for this order for the appropriate section (billing vs. shipping). Similarly, if the "edit this address" checkbox is selected then some sort of boolean flag is flipped indicating the address profile has been changed so that the form data is then updated with the customer account in the system. Finally, if the user selects "new" from the address selector drop-down then the "edit this address" checkbox is removed and a text field is displayed allowing the user to "name" this address profile when it is saved to their account.

New Customer (shown as "order now" template @ Protoshare)

The user's email address is populated in the email address field, however the user must fill in all required form fields to place an order. Similarly, when a user enters their first and last name in the account section then the data is automatically copied to the first and last name fields under the "billing" section, respectively, once the user clicks/tabs out of the form field. The user can still override a billing person's first and last name without it affecting the account's first and last name fields. The remaining required fields are to be filled out by the customer

Requirements

Name Description Type
Account/shipping/billing form fields required Description of the required form fields in the account/shipping/billing section of the order form Requirement

Performed By

Name Description Type
Customer User model representing the customer making a purchase on the BPR website Person


1.4   Recell service order section 

This section of the order form contains the details of the service order itself. The form will default to having three order lines which each are blank on form load. If the user enters data into the third order line then an additional line is added to the order form (and subsequently any data added in the new, fourth line, will prompt for a fifth order line to appear). The user must select the total number of unique battery packs they are shipping, the manufacturer of the battery pack and the voltage size of the pack. Once the quantity and voltage size is selected then the price is populated based on the voltage size recell cost multiplied by the quantity selected.

Also, if the customer selects to "upgrade" their pack to an extended run-time cell and checks the box to the left of the order line then the price is then re-calculated as the quantity x battery voltage x pack upgrade.  The customer can perform this "upgrade" at either the per pack level or via one checkbox in the order options section. If they chose to upgrade all packs on their order then by them checking the "upgrade all packs" in the order options section the application will automatically check each box to the left of each order item and perform the price recalculations.

If the user choses to pre-pay their shipping expense to BPR's office by checking the box "include pre-paid" in the order options section the application will determine shipping costs with USPS based on an anticipated weight of each pack (plus a little extra, this variable is to be assigned as an application constant) and their shipping zipcode. If the user selects this service, the cost of the inbound shipping is displayed as a line item labeled "options" in the order calculation form. IMPORTANT: if the user selects the pre-paid inbound service then they cannot pay by mail order at which time the that payment type is grayed out and not a selectable payment option (possible additional text next to this payment type may be needed as well to explain the exclusion of the payment type).

Finally, in order to calculate the order total the ship-to zipcode is used to determine if the items will be returned to an address within the state of Texas. If they are Texas residents then sales tax is calculated on the order sub-total (not including tax on inbound shipping, if selected) and then shown as a line item entry. The only time this line item should appear is if the sales tax is required for the order otherwise this field is hidden. The order total is the total of each line item, any options and sales tax (if applicable).

Requirements

Name Description Type
Order entry required fields Description of the required form fields in the order entry portion of the form Requirement

Performed By

Name Description Type
Customer User model representing the customer making a purchase on the BPR website Person


1.5   Payment section 

This section requires the customer to indicate their payment method. If they are going to use their credit card and process with the BPR site then they must enter a properly formatted credit card number, expiration date and the CVV code. Selecting a payment type of PayPal or print order form has no additional requirements.

Requirements

Name Description Type
Payment method required fields Description of the required form fields in the shipping/billing section of the order form Requirement

Performed By

Name Description Type
Customer User model representing the customer making a purchase on the BPR website Person


1.6   Process order entry data 

Once the customer has entered all of their information the application should do server-side validation of the data to make sure all required information has been entered by the customer. Customer information should either be updated (in the case of a user authenticating with the system) or a new user bean instance instantiated (and stored in session variables). The order information and payment data should also instantiate an order bean (or the like, programmer preference). If there are errors with the information the system should store these errors in the session scope so they may be referenced when the user is directed to the order entry form again to fix any issues. If this is necessary (which hopefully will not be the case since most errors should be checked client-side with JS and AJAX), then on return to the order entry form the form should display the customer and order information from the session beans previously populated on the post of the order entry form.

Finally, the customer's shipping address must be verified with the US Postal Service as an acceptable address and must match at the street address, city and state level. The zipcode+4 information should be updated in the customer bean as well.

SPECIAL NOTE: in the case that this is the first order for the customer and they have entered their chosen password then when they return to the order processing form, special care must be taken to protect the password they originally entered. Should the password be in a hidden field and an idicator "flagged" so as not to display the password entry and password (confirm) fields? Also, should the same be true for the email confirmation? (pay attention to the "form entry error" redirection)

Requirements

Name Description Type
Account/shipping/billing form fields required Description of the required form fields in the account/shipping/billing section of the order form Requirement
Order entry required fields Description of the required form fields in the order entry portion of the form Requirement
Payment method required fields Description of the required form fields in the shipping/billing section of the order form Requirement

Incoming Links

Name Description Link Label
Payment section Order form section pertaining to order payment Verify order entry

Outgoing Links

Name Description Decision
Verify address differences A difference was noted in the address entered by the customer and the official USPS address database.
Contact information section Order form section detailing the account/billing/shipping sections form entry error
Confirm order The customer must confirm their order before payment processing occurs


1.7   Confirm order 

The customer must confirm their order before payment is processed. If the user needs to edit any portion of the order they are sent back to the order form to change their processing information.


1.8   Process credit card 

Process the customer's credit card with the merchant bank for authorization of charges.

Incoming Links

Name Description Link Label
Record order data Record the order details in the database

Outgoing Links

Name Description Decision
Record payment processing data Record the payment processing data returned by the processing system


1.9   Process PayPal 

The customer has chosen to pay their order using PayPal. Order processing details are sent along to the PayPal server and the user is re-directed to their site to either login to their account or pay using PayPal's network. Details pertaining to the data transmitted to PayPal are not fully known at this time other than than the redirect to PayPal's server for additional customer data entry.

Incoming Links

Name Description Link Label
Record order data Record the order details in the database

Outgoing Links

Name Description Decision
Record payment processing data Record the payment processing data returned by the processing system


1.10   Record order data 

The customer has confirmed the order and therefore the customer account should be created/saved in the data tier (customer bean instance?). Also, the order details should be saved to the order management table structure and assigned an order number (this number is required for integration with PayPal as well as a third-party merchant processing system for credit card payments). All orders should be marked with the status of "pending payment confirmation".

NOTE: this sequence is up to discussion with programmer staff


1.11   Record payment processing data 

Record the payment processing information details for the order, regardless of whether or not it was a failure or a success.


1.12   Verify address differences 

Since there was an issue with the customer's shipping address not matching the USPS database, send the customer to an address verification page showing the address discrepencies so the used can chose to accept the address as recorded by the USPS. If they choose not to accept the address then they should be sent back to the order entry form to enter their new shipping address information.


1.13   Generate USPS in-bound shipping label 

Since the payment has been captured, generate the in-bound shipping label.

Incoming Links

Name Description Link Label
Record payment processing data Record the payment processing data returned by the processing system pre-paid in-bound label?

Outgoing Links

Name Description Decision
Record pre-paid label Record the details of the pre-paid label success


1.14   Order confirmation 

The order has been successfully placed. Display the order confirmation screen to the customer stating the next steps they must take in order to ensure their order is processed quickly. If they chose to pre-pay their in-bound shipping then display the PDF file representing the postage in a small-ish iframe (open for programmer discussion) as well as a link to save the postage file locally. Similarly, if they are shipping the order along with payment, then provide a link to the order form PDF pre-populated with their order details (also, possibly show the order form in an iframe).


1.15   Record pre-paid label 

Since we are dealing with an electronic file representing the customer's money, make sure and record the specifics about the pre-paid lable generation as well as save the PDF file representing the label to the server's file system (potentially store the PDF as a blob in the database too).




2.0  
Customer login Process Narrative

Customer login
Description The customer login entry form and associated account access options
Customer login

The process of logging a customer into the BPR website is done through a single, uniform system. The login form page also offers links to resetting a password and creating a new customer account.


2.1   Customer login form 

This is the customer login page which allows the user to enter their login credentials to access their account on the BPR system. The page also includes URL text links to "create an account" and "forgot password (reset)". Refer to the Protoshare website for information on form layout for a static page (modal window will use core elements of page sans UI template elements).

Page/form load: on load of the page, application logic is necessary to determine if a session value indicating an email account is already known (this can be from a cookie read or placed in session scope based on a failed login attempt). Similarly, the referral URL of where the user came from (from within the BPR website) will be saved so as to be used as the redirect page to send the user back to.

Login failure indicator: if passed into the login processing directive, a div will be displayed indicating the login attempt failure and provide an additional link and explanation to resetting the user account password

Requirements

Name Description Type
Login form fields required Description of the required form fields on the customer login form Requirement

Performed By

Name Description Type
Customer User model representing the customer making a purchase on the BPR website Person


2.2   Process user login 

Once the user submits their account credentials the system tries to match a user account to the supplied information to determine a pass/fail notification. Also, if the login attempt is a success for a matching user account then the system checks whether the account password has been recently reset via the "reset customer account password" process with a temporary password (thus requiring a new password).

SUCCESS

A user bean is populated with the customer account profile. Another indicator is set so the next viewing page (or possbily a modal window) will show the login success.

FAIL

The user is sent back to the login form to attempt a login again. The email address previously entered by the user is remembered and is used to auto-populate the email address of the login form on the return to the form. Similarly, another indicator is returned to the login form to denote the login attempt was a failure.

TEMP PASSWORD

The login information matches a user account which has had a system initiated password reset (temporary password) and therefore the user must change the temporary password to a new one matching the password length requirements.

Requirements

Name Description Type
Login form fields required Description of the required form fields on the customer login form Requirement

Incoming Links

Name Description Link Label
Customer login form Customer login page for the end user Attempt login

Outgoing Links

Name Description Decision
Change temporary password The user form for changing the temporary system password Temp pwd found
Log user access Log the successful account access by the user Successful login
Customer login form Customer login page for the end user Failed login


2.3   Create customer account 

Process map to describe the processing items needed in order to create a new customer account (separate from creating an order)


2.4   Reset customer account password 

The process controls for processing a customer (user) account password reset request.


2.5   Log user access 

Since the user has properly authenticated their account the system will denote the user's source IP address and log the date/time the access was made.


2.6   Successful login 

The user has successfully authenticated with the BPR website and has been redirected to their source URL or a modal window has been shown that they have logged into the system while the user remains on the same page of the website (only if the login form itself was processed from a modal window).


2.7   User initiates login process 

The user initiates the login process by either clicking the direct link on the BPR website, through an email link (from the order management system) or are prompted to login when they first initiate an order.


2.8   Change temporary password 

This form is not available as a direct public link to the end-user, instead the user only is provided this form when they attempt an account login process using a temporary password. Form details can be seen on the Protoshare website under "change temp password"

Requirements

Name Description Type
Change temporary password form fields required Requirement

Performed By

Name Description Type
Customer User model representing the customer making a purchase on the BPR website Person


2.9   Process password change 

Process the change in the user's password following a password reset cycle or after the assignment of a temporary system password.

SUCCESS

Update the user session bean with the new password, save the user bean to the database. An indicator is set so the next viewing page (or possbily a modal window) will show the password was successfully changed.

FAIL

The user is sent back to the change temporary password form. An indicator is returned to the password change form to denote the change attempt was a failure.

FAIL - CAPTCHA MIS-MATCH

The captcha phrase entered does not match the generated captcha text and therefore the password change is a failure. An indicator is returned to the password change form to denote there was an error with the captcha text entered (a return to the change password form prompts the creation of a new captcha security phrase).

Requirements

Name Description Type
Change temporary password form fields required Requirement

Incoming Links

Name Description Link Label
Change temporary password The user form for changing the temporary system password Attempt pwd change

Outgoing Links

Name Description Decision
Log user access Log the successful account access by the user Password updated
Change temporary password The user form for changing the temporary system password Failed pwd change


2.10   Process no password 

The user selected the radio button indicating they do not have a password, thus implying they would possibly like to create an account. However, if the user reaches the login form after clicking the "order now" button they are not required to first create their account before placing their order. Therefore, if the URL referer (or programmer choice to determine how user got to the present form) indicates they were directed to sign into their account prior to placing an order then the user is directed to order processing form. Similarly, if the user got to the form by any other means then they are directed to the create new account form page.

FAIL

If the user entered an email address already assigned to a customer account then they should be sent back to the sign-in form where they are notified a user account already exists. They can chose to try another email address or login to their account. Similarly, they will be provided with a link to reset their password if needed.

(NOTE: this pattern is virtually identical to how Amazon authenticates their user login accounts as well as purchasing product with a new account. Hopefully this process is not patented and we will be able to use it for some time come.)

Incoming Links

Name Description Link Label
Customer login form Customer login page for the end user No password indicated

Outgoing Links

Name Description Decision
Create customer account Process description for creating a new customer account New account creation
Order Functions and parameters associated with the order now process of the website Acct created by order
Customer login form Customer login page for the end user Fail, email exists


2.11   Order 

Full process modeling of the front-end order processing scenario.




3.0  
Create customer account Process Narrative

Create customer account
Description Process description for creating a new customer account
Create customer account

Process map to describe the processing items needed in order to create a new customer account (separate from creating an order)


3.1   User initiates new account creation 

3.2   Create account form 

This form is for the separate creation of a user account with the BPR website from just placing an order directly. This function will likely be used very infrequently, however the core functionality will be reused by the backend administration system.

On page/form load: detect is a user object exists in the session scope (programmer choice) and populate the user fields that are known

Requirements

Name Description Type
Create customer account form fields Description of the required form fields on the customer account form Requirement

Performed By

Name Description Type
Customer User model representing the customer making a purchase on the BPR website Person


3.3   Customer login 

The process of logging a customer into the BPR website is done through a single, uniform system. The login form page also offers links to resetting a password and creating a new customer account.


3.4   Process new user account 

Make sure and validate all required form fields and populate the session user bean with the values from the new account creation form.

Incoming Links

Name Description Link Label
Create account form This form is used when a user wants to create an account.

Outgoing Links

Name Description Decision
Create account form This form is used when a user wants to create an account. failed
Record user account Record the new user account creation in the database


3.5   Record user account 

The new user has successfully created a new user account, therefore save the populated user bean to the database.


3.6   Welcome email 

Use the user's first and last name from the user bean and send a welcome email to the new account.


3.7   New account welcome 

The new user account has been successfully by the system. Send the user to a welcome page with a welcome message denoting their name. Blah, blah ... now buy some shit or stop wasting my time Holmes.




4.0  
Reset customer account password Process Narrative

Reset customer account password
Description The process functions for resetting a user account password
Reset customer account password

The process controls for processing a customer (user) account password reset request.


4.1   User initiates password reset 

The user initiates the password reset by clicking on a text link on the account login screen or has been directed to the page by an email link.


4.2   Reset password form 

This is the customer password reset page which asks the user for their email address in order to initiate the password reset process. The page also includes a URL text link to "create an account". Refer to the Protoshare website for information on form layout for a static page (modal window will user core elements of page sans UI template elements).

Page/form load: on load of the page, application logic is necessary to determine if a session value indicating an email account is already known (this can be from a cookie read or placed in session scope based on a failed reset attempt).

Reset failure indicator: if passed into the reset processing directive, a div will be displayed indicating the reset attempt failure and provide an additional link and explanation to creating a new user account

Requirements

Name Description Type
Reset password form fields required Description of the required form fields on the reset password form Requirement

Performed By

Name Description Type
Customer User model representing the customer making a purchase on the BPR website Person


4.3   Create customer account 

Process map to describe the processing items needed in order to create a new customer account (separate from creating an order)


4.4   Customer login 

The process of logging a customer into the BPR website is done through a single, uniform system. The login form page also offers links to resetting a password and creating a new customer account.


4.5   Process reset password 

Once the user submits their email address the system tries to match a user account to the supplied information to determine a pass/fail notification. The captcha text is also validated to ensure form submission by a user and not a third-party system. This determination warrants it's own fail notification type.

FAIL - NO USER MATCH

The user is sent back to the reset form to attempt another reset. The email address previously entered by the user is remembered and is used to auto-populate the email address (but not the confirm password field) of the reset form on the return to the page. Similarly, another indicator is returned to the reset form to denote there was no user account match.

FAIL - CAPTCHA MIS-MATCH

The captcha phrase entered does not match the generated captcha text and therefore the reset attempt is a failure. The email address previously entered by the user is remembered and is used to auto-populate the email address (but not the confirm password field) of the reset form on the return to the page. Similarly, another indicator is returned to the reset form to denote there was an error with the captcha text entered (a return to the reset form prompts the creation of a new captcha security phrase).

SUCCESS

A user bean is populated with the customer account profile. System generates a new, random six (6) character alpha-numeric (lowercase only) password and updates the user bean with the new password. Another indicator is set so the next viewing page (or possbily a modal window) will show the reset success.

Requirements

Name Description Type
Reset password form fields required Description of the required form fields on the reset password form Requirement

Incoming Links

Name Description Link Label
Reset password form The form data entry page for requesting a password reset Attempt password reset

Outgoing Links

Name Description Decision
Reset password Update the user profile account in the database with the new password. Password reset
Reset password form The form data entry page for requesting a password reset Failed reset


4.6   Reset password 

The user record is updated in the database with the newly created random password and a possible boolean flag indicating the reset password (which is checked when the user attempts to access the system again). A log entry is recorded to denote the password was changed for the user account while denoting the source IP address and the date/time.


4.7   Email user temporary password 

Email the customer (taken from user bean) to notify them a password reset successfully occured. Include the newly generated password along with instructions and a URL link to access their account on the BPR system.


4.8   Successful reset 

The user has successfully reset their account password and has been redirected to their source URL or a modal window has been shown indicating them have successfully reset their password while the user remains on the same page of the website (only if the reset form itself was processed from a modal window).