Running Head: Lab II – EmVi Product Specification Outline Lab II - Product Specification Outline CS 411W Lab II Prototype Product Specification For EmVi Version 3 Prepared by: Keith Walsh, Orange Team Date: 11/25/2013 1 2 Table of Contents 3. SPECIFIC REQUIREMENTS............................................................................................. 3 3.1 Functional Requirements ................................................................................................................ 3 3.1.1 Logon Experience, Account Maintenance and Security (David Wise) ......................................... 3 3.1.2 Work Flow Process (Tamara Jones) ............................................................................................. 9 3.1.3 Content Creation (Yolanda Quinones) ...................................................................................... 11 3.1.4 Content Storage, Retrieval, Version Control and Validation (Keith Walsh) .............................. 13 3.1.5 Content Distribution Network (CDN) Interface (Richard Truchanowicz) .................................. 18 3.1.6 Email Testing (Chris Dashiell) .................................................................................................... 22 3.2 Performance Requirements .......................................................................................................... 24 3.3 Assumptions and Constraints ....................................................................................................... 24 3.4 Non-Functional Requirements ...................................................................................................... 24 APPENDIX........................................................................................................................... 25 List of Figures Figure 3-1 Registration and logon flow chart ..................................................................... 3 Figure 3-2 Email to Content Relationship ........................................................................ 13 List of Tables Table 3-1 User Table .......................................................................................................... 8 Table 3-2 Message Table .................................................................................................... 8 Table 3-3 Campaigns Table .............................................................................................. 10 Table 3-4 Workflow Table................................................................................................ 11 Table 3-5 Reviewer’s Table .............................................................................................. 11 Table 3-6 Campaign to Content Example......................................................................... 14 Table 3-7 Content Table ................................................................................................... 17 Table 3-8 Content to Campaigns Mapping Table ............................................................. 17 Table 3-9 Content Types Mapping Table ......................................................................... 17 Table 3-10 Email Content Mapping Table ....................................................................... 18 Table 3-11 Email Images Mapping Table ........................................................................ 18 3 3. Specific Requirements 3.1 Functional Requirements 3.1.1 Logon Experience, Account Maintenance and Security (David Wise) This section will provide the requirements associated with access to the EmVi tool. Described in this section will be the pages associated with the registration and logon experience along with the security that follows a user throughout the current session. Figure 1 provides a process flow of the requirements outlined in this section. The following functional requirements must be met: Figure 3-1 Registration and logon flow chart 3.1.1.1 Logon Experience The way a user request access and logs into the EmVi tool will be defined in this section. These requirements are necessary to lay out the proper foundation on which to 4 build the rest of the system. Without users the tool would not work. The following functional requirements must be met: 3.1.1.1.1 Must contain a Registration page. 3.1.1.1.1.1 The registration page must retrieve and store in the database the following information: a. First name b. Last name c. Username d. Email address e. Phone number f. Password (Hashed) g. Confirm password (Hashed) 3.1.1.1.1.2 There must be a submit feature on the registration page. 3.1.1.1.1.2.1 Submit must enforce best practice naming conventions for accounts. a. Must verify that the username is an Email address. 3.1.1.1.1.2.2 Submit must verify minimum password requirements. a. Password must be at least eight characters long. b. Password must contain at least one capitol letter. c. Password must contain at least one lower case letter. d. Password must contain at least one number. e. Password must contain at least one special character. 3.1.1.1.1.2.3 Submit must compare password and confirm password before storing. 5 3.1.1.1.1.2.3.1 If compare fails, there must be a notification to the user. 3.1.1.1.1.2.3.2 If compare fails, the form must be prepopulated with all data except password and compare password fields. 3.1.1.1.1.2.3.3 On submit, the account data must be created in the database. 3.1.1.1.1.2.4 After successful submit, a message must be displayed informing the user that the account was created successfully. 3.1.1.1.1.2.4.1 Must use a table to retrieve messages. 3.1.1.1.1.2.5 After successful submit, must send confirmation email to inform user that account was created. 3.1.1.2 Account Maintenance EmVi administrators must be able to manage accounts that are registered for access to the system. The ability to enable accounts and modify information within an account is key to keeping everything working in the system. Individual users must also be able to modify their own accounts to update personal details and passwords. For account maintenance, the following functional requirements must be met: 3.1.1.2.1 User account. 3.1.1.2.1.1 Must have the capability for any user to create an account. 3.1.1.2.1.2 Upon account creation, the account must be disabled. 3.1.1.2.1.3 Users must have the ability to modify the following values on their own account. a. First name 6 b. Last name c. Email address d. Password e. Phone number 3.1.1.2.1.4 After successful account update, the system must inform the user of successful edit. 3.1.1.2.1.5 Users must not have access to the system maintenance page. 3.1.1.2.2 Administrative account. 3.1.1.2.2.1 Administrators must have access to the system maintenance area. 3.1.1.2.2.2 Must have the ability to enable an account. 3.1.1.2.2.3 Must have the ability to update all values associated with any account. 3.1.1.2.2.4 Must have the ability to disable any account. 3.1.1.2.2.5 Must have the ability to update a user’s role. 3.1.1.2.2.6 Must have the ability to delete any account. 3.1.1.2.2.7 After an account has been updated by the administrator, the system must inform them of successful edit (refer to 3.1.1.4.2 for table) 3.1.1.2.2.8 After a successful removal by the administrator, the system must inform them of successful remove. (refer to 3.1.1.4.2 for table) 7 3.1.1.3 Account Security This section will provide the requirements necessary to implement the security to protect the data and email content that will be stored in EmVi. The following functional requirements must be met. 3.1.1.3.1 EmVi must have a logon location. 3.1.1.3.1.1 Must present informative errors messages to handle invalid logon attempts. a. Wrong username or password. b. No user account exists. c. No password entered. d. Account is disabled. 3.1.1.3.1.2 Logon function must provide for a maximum number of failed logon attempts. 3.1.1.3.1.3 When maximum failed attempts is reached, the user account must be disabled. 3.1.1.3.1.4 An administrator must re-enable a disabled account. 3.1.1.3.1.5 EmVi must generate a session cookie on successful logon. 3.1.1.3.1.6 Must set cookie timeouts to require re-authentication after a set period of time. 3.1.1.3.1.7 Cookie checking requirements need to be embedded in all pages of the system to verify that user is still logged in. 8 3.1.1.4 Account database requirements The database will store all the information necessary to authenticate users and set their permission levels in the system. 3.1.1.4.1 The database must have a user table that contains the following fields: Table name: tbl_user Field Name Data Type Description userID int Auto increment assigned at registration userFirstName userLastName text text User’s first name User’s last name userEmailAddress text User logon name and Email address userPhoneNumber text User’s Phone number userPassword text Hashed password userStatus int Enabled 1/ Disabled 0 userRole int Admin 1/User 0 userDateRegistered datetime Date that the user registered for an account userLastLogon datetime Last time and date of successful logon userFailedAttempts int Tracks incorrect logon attempts Table 3-1 User Table 3.1.1.4.2 The database must have a message table that contains the following fields: Table name: tbl_msg Field Name msgID msgTxt Data Type int Text Table 3-2 Message Table Description Message ID Message Test 9 3.1.2 Work Flow Process (Tamara Jones) This section outlines the process in which email marketing campaigns are distributed with statuses, the capabilities a user can perform, and the database requirements. The following functional requirements must be met: 3.1.2.1. EmVi must allow a new campaign to be created. a. Name of campaign can be entered. b. Description of campaign can be entered. 3.1.2.2. EmVi must allow a campaign to be viewed. a. Preview can be sent for all attached email. b. Reviewer’s previous and current comments are listed. 3.1.2.3. EmVi must allow a campaign to be edited. a. Campaign properties are listed. 1. Content Name 2. Content Description 3. Content Keywords 4. Launch Date of campaign 5. Campaign Status b. List of Reviewers can be chosen (up to five). 3.1.2.4 EmVi must allow emails to be attached. a. Provides a list of emails to be attached. b. Shows any existing emails that may be attached. 10 3.1.2.4.1 EmVi must allow a campaign to be cloned. Cloning a campaign will make a copy of the existing campaign and attach the same content from the source campaign to the new. Attachments can be seen in the view link. a. Campaign clone properties are listed. 1. Content Name 2. Content Description 3. Content Keywords 4. Launch Date of campaign 5. Campaign Status 3.1.2.4.2 EmVi must allow a campaign to be placed in a status of in review by a reviewer (approver). 3.1.2.4.3 EmVi must allow a campaign to be recalled. 3.1.2.4.4 EmVi must allow a campaign to be reassigned. 3.1.2.4.5 EmVi must allow a campaign to be placed in a complete status. 3.1.2.4.6 Database Requirements 3.1.2.4.6.1 Required campaign table layouts are depicted in tables 3-3 to 3-5. Table Name: tbl_campaigns Field Name Data Type campaignID int, autoincrement, key campaignName text, unique campaignOwner int, foreign key to Users campaignDescription text campaignKeyWords text campaignCreateDate Datetime campaignStatus Int, foreign key to tbl_wfStatus campaignLaunchDate datetime Description Unique identifier for each campaign. Name for each campaign. User who created the campaign. Description of campaign Keywords associated with campaign Table 3-3 Campaigns Table 11 Table Name: tbl_wfStatus Field Name Data Type wfStatusID int, autoincrement, key wfStatusName text, unique wfStatusDescription wfOrder Text int Description Unique identifier for each workflow status. Name for each of the workflow statuses. Description of status Integer representing the steps Table 3-4 Workflow Table Table Name: tbl_reviewers Field Name Data Type campaignID reviewerID int, foreign key to tbl_campaigns statusID int, foreign key to tbl_wfStatus isComplete bool Description int, foreign key to tbl_content Table 3-5 Reviewer’s Table 3.1.3 Content Creation (Yolanda Quinones) This section will provide the requirements associated with the creation and modification of email marketing content through the integration of a WYSIWYG editor. HTML or text content can either be created or modified by a user. 3.1.3.1 Content Creation The capability of a user to create content will be described in this section. Content can be either a text file, which can be created or modified in the WYSIWYG editor, or an image file. For those files where the WYSIWYG editor is relevant, the necessary features are as follows: 3.1.3.1.1 Must provide spellcheck. 3.1.3.1.2 Must provide capability to view the HTML source code. 3.1.3.1.3 Must provide the ability to paste text from another application. 12 3.1.3.1.4 Must provide an undo function. 3.1.3.1.5 The new content must be saved to a file. 3.1.3.1.6 The content file name must be stored in the content table. 3.1.3.2 Content Modification The capability to modify existing content will be described in this section. Once content is created, it is saved as a file. Users must be able to modify HTML and text files by utilizing a WYSIWYG editor. The necessary features are as follows: 3.1.3.2.1 Must load content into the WYSIWYG editor for editing. 3.1.3.2.2 Must provide spellcheck. 3.1.3.2.3 Must provide capability to view HTML source code. 3.1.3.2.4 Must provide the ability to paste from other applications. 3.1.3.2.5 Must provide an undo function. 3.1.3.2.6 Must be able to save content back to existing location with existing file name. 3.1.3.2.7 Must be able to update content tables with update information. 3.1.3.3 Database requirements Content creation and editing leverage the data tables for users and content. No additional tables are necessary. 13 3.1.4 Content Storage, Retrieval, Version Control and Validation (Keith Walsh) Content is a file that goes into making up an email. Content can be an image, an HTML file or a plain text file. Emails are made up of an HTML file, a text file and zero or more image files. Any user of EmVi can create content, but once it exists it must only be updated or removed by a user who has explicit permission to do so. Figure 3-4 and Table 3-6 depict the relationship between content and emails. For content storage, retrieval and version control, the following functional requirements must be met: Figure 3-2 Email to Content Relationship (This space intentionally left blank) 14 Table 3-6 Campaign to Content Example 3.1.4.1 Content Creation All content files, along with their defined properties, must be stored by the application. For content creation, the following requirements must be met: 3.1.4.1.1 The application must provide the capability to upload content files from the user’s desktop. 3.1.4.1.2 Acceptable file formats must be defined within the table tbl_contentTypes. 3.1.4.1.3 When a user adds content to the application, that content file must be saved to disk. 3.1.4.1.4 Once content is created, the user with permission to update or delete that content must be identifiable within the table tbl_content. 3.1.4.1.5 When updates are made to content, the identity of the user who made the update must be stored in the table tbl_content. 3.1.4.2 Email Creation Email content consists of one HTML and one text file. Additionally, it may contain images that appear within the HTML content. 15 3.1.4.2.1 The application must provide the capability to associate HTML content with an email. 3.1.4.2.2 The application must provide the capability to associate text content with an email. 3.1.4.2.3 The application must provide the capability to associate zero or more image contents with an email. 3.1.4.2.4 The application must provide the capability to associate a subject line with an email. 3.1.4.2.5 The application must provide the capability to associate a from name with an email. 3.1.4.2.6 The application must provide the capability to associate a from address with an email. 3.1.4.2.7 The application must provide the capability to view both the HTML and text files in a browser. 3.1.4.3 Content Version Control The system must have a way of ensuring that a user’s updates do not overwrite another’s in an unpredictable way. For version control, the following functional requirements must be met: 3.1.4.3.1 The user who creates content is the only user who can edit or delete that content provided that content is not associated with an email. 3.1.4.3.2 A user who creates an email and associates content to that email is the only user can edit or delete any associated content provided that the email is not 16 associated with a campaign and the content is not associated with any other emails. 3.1.4.3.3 A user who creates a campaign and associates email to that campaign is the only user who can edit or delete any associated emails or content provided that the campaign is not associated with any other emails, campaigns or workflows. 3.1.4.3.4 A user assigned the current task in the workflow may edit or delete any emails associated with the campaign provided that email is not associated with any other campaigns. 3.1.4.3.5 A user assigned the current task in the workflow may edit or delete any content associated with any emails in the campaign provided that content is not associated with any other emails or campaigns. 3.1.4.3.6 Any user can view content. 3.1.4.3.7 Any user can copy, or “clone,” content. 3.1.4.3.8 Any user can view an email. 3.1.4.3.9 Any user can copy, or “clone,” an email. 3.1.4.4 Content Database The database must store all necessary information (metadata) about campaign content. The actual files that make up the campaign must be stored as files outside of the database. Tables 3-7 to 3-10 depict the schema for the content tables. Table Name: tbl_content Field Name Data Type contentID int, autoincrement, key contentName contentDescription contentKeyWords text text text Description Unique identification for each content file. Name for content element. Description for content element. Keywords associated with content. 17 contentType int, foreign key to tbl_contentType createdDate datetime updatedDate datetime createdBy int, foreign key to User updatedBy int, foreign key to User fileLocation text canEdit int cdnID in Comma separated string. Distinguishes between different file types. When the content file was saved for the very first time. Most recent saved time. User who saved the content file for the very first time. User who saved the content file most recently. Local path to the file contents. User who can make changes to the content. ID of the CDN if published. Table 3-7 Content Table Table Name: tbl_contentToCampaigns Field Name Data Type contentID int, foreign key to tbl_content campaignID int, foreign key to tbl_campaigns Description Content ID Campaign ID Table 3-8 Content to Campaigns Mapping Table Table Name: tbl_contentTypes Field Name Data Type typeID int, autoincrement, key typeName text typeFormat text Description Unique identifier for each content type. Name of type for each content type (i.e. “image,” “text”) The file extension for the image (i.e. “html,” “gif,” “png”). Table 3-9 Content Types Mapping Table Table Name: tbl_emailContent Field Name Data Type emailID int, autoincrement, key emailName emailDescription emailHTMLID emailTextID text text int int Description Unique identifier for each content type. Maps to content table Maps to content table 18 emailSubject emailFromName emailFromAddress canEdit text text text Int Maps to userID Table 3-10 Email Content Mapping Table Table Name: tbl_emailImages Field Name Data Type emailID int, autoincrement, key contentID int Description Unique identifier for each content type. Maps to content table Table 3-11 Email Images Mapping Table 3.1.5 Content Distribution Network (CDN) Interface (Richard Truchanowicz) The CDN Interface coordinates uploading of images from the local database to the selected CDN for testing and final distribution while also updating image URLs (Uniform Resource Locator) to reflect the locations on the CDN. The interface shall be implemented with a modular design that allows for the easy addition of CDNs by decoupling the CDN specific interface from the database interface. The following functional requirements must be met: 3.1.5.1 CDN Interface UI must contain the following pages: 3.1.5.1.1 CDN Configuration Page. This interface page allows the addition, deletion and modification of CDNs available for uploading. 3.1.5.1.2 Must display the following fields: 3.1.5.1.2.1.1 CDN Listings: a. CDN Name 19 b. CDN Account Name c. Status d. Date added 3.1.5.1.2.2 Configuration Interface must allow for the following actions: a. Add CDN b. Modify CDN c. Delete CDN 3.1.5.1.3 Must contain a Campaign-CDN Management Page. This interface page lists all campaigns in the system, which CDN they are configured for and their current upload status. 3.1.5.1.3.1 Campaign-CDN Management Page must display the following fields: 3.1.5.1.3.2 Campaign Listings: a. Campaign Name b. Creator Name c. Start Date d. End Date e. Selected CDN f. Upload Status 3.1.5.1.3.3 Navigation Links: a. CDN Configuration Page b. Return to CDN Landing Page 20 c. Logoff 3.1.5.2 The CDN Interface must contain a CDN-Database Exchange Interface processing module. 3.1.5.2.1 This module is a CDN agnostic interface that is responsible for pushing and pulling data between the database and the selected CDN specific module. The CDN-Database Exchange is composed of the following functional areas. 3.1.5.2.2 The Outbound Assets Process is responsible for retrieving assets from the database and handing those assets off to the CDN Specific Interface. The following functional requirements must be met: 3.1.5.2.3 Must retrieve assets from database 3.1.5.2.4 Must pass assets to appropriate CDN Specific Interface 3.1.5.2.5 CDN Asset URL Update Process is responsible for updating the CDN Asset URL database entry for each asset uploaded to the CDN. The following functional requirements must be met: 3.1.5.2.5.1 Must receive CDN upload URLs from CDN Specific Module 3.1.5.2.5.2 Must store Asset CDN URLs in database (See 3.1.4.4) 3.1.5.3 The CDN Specific Interface Module is responsible for passing assets and asset locations between the CDN-Database Interface and the selected CDN. 3.1.5.3.1 The CDN Interface is composed of the following functional areas. 21 3.1.5.3.2 The Outbound Assets Process is responsible for receiving assets from the Database-CDN Interface and uploading them to the selected CDN. The following functional requirements must be met: 3.1.5.3.2.1 Must be able to receive assets from CDN-Database Exchange 3.1.5.3.2.2 Must be able to upload assets to CDN 3.1.5.3.3 The CDN URL Retrieval Process is responsible for retrieving the new URLs for recently uploaded assets and passing these to the CDN-Database Exchange. The following functional requirements must be met: 3.1.5.3.3.1 Must be able to retrieve asset URLs upon successful upload 3.1.5.3.3.2 Must be able to pass asset URLs to CDN-Database Exchange Interface 3.1.5.3.4 The CDN Asset Deletion Process is responsible for removing uploaded assets from the CDN. The following functional requirements must be met: 3.1.5.3.4.1 Must be able to delete uploaded assets from CDN 3.1.5.3.4.2 Must be able to verify assets are no longer reachable from the previous CDN URL 3.1.5.4 Database Requirements The database must store all necessary credentials for configuring a CDN to accept asset uploads. It must also keep track of which assets have been uploaded and the assigned URLs for those assets. 22 Table Name: tbl_cdn Field Name cdnID cdnUsername Data Type Int, foreign key to tbl_cdn string cdnAPIKey string createdDate datetime Description CDN ID Authentication username for accessing CDN. Passkey generated by CDN to authorize username. When the CDN was added to EmVi. Table 3-13 CDN Configuration Table Table Name: tbl_cdnUploads Field Name Data Type contentID int, foreign key to tbl_content campaignID int, foreign key to tbl_campaigns cdnID Int, foreign key to tbl_cdn uploadedDate datetime modifiedDate datetime cdnURL string Description Content ID Campaign ID CDN ID When the file was last uploaded Modification time stamp of uploaded file. Used for determining if latest version is uploaded. CDN URL for uploaded asset Table 3-14 CDN Uploaded Assets Table 3.1.6 Email Testing (Chris Dashiell) Two options must be provided for testing how emails are rendered in the across different email clients. The preferred method provides the user to view a page that has screenshots of what the rendered email looks like in each client. Because a third party service will be used for the creation of the screenshots as a backup in case the service is not currently working there must be ability to send the emails to a set of user provided email addresses. This allows the user to manually log in to each of the email addresses to see what the email looks like in each client. The following functional requirements must be met: 23 3.1.6.1 Must have an Email Testing page. 3.1.6.1.1 The testing page must be associated with and accessed through the campaign page. 3.1.6.1.2 The testing page must display a table with the following columns: 3.1.6.1.2.1 Email name. 3.1.6.1.2.2 View preview button. 3.1.6.1.2.3 Generate preview button. 3.1.6.1.2.4 Send to list button. 3.1.6.1.3 The view preview button must take the user to a page displaying a set of images of what the email looks like rendered in each email client supported. 3.1.6.1.4 The generate preview button must generate a new set of images using a third party service. 3.1.6.1.4.1 Must save the set of images to the file system. 3.1.6.1.4.2 Must delete the old set of images from the file system. 3.1.6.1.4.3 Must update the database with the new file paths. 3.1.6.1.4.4 Must display any errors to the user that are encountered in this process. 3.1.6.2 Must have an Email Address List page 3.1.6.2.1 The email address list page must be associated with and accessed through the campaign page. 24 3.1.6.2.2 Must display a list of email addresses currently associated with the campaign. 3.1.6.2.3 Must provide a method of adding a new email address to the list. 3.1.6.2.4 Must provide a method of deleting an email address from the list. 3.1.6.3 Testing database requirements 3.1.6.3.1 The database must have a table to store the file system paths to image previews for each email. Table Name: tbl_TestEmailPreviews Field Name Data Type Description emailID int, foreign key Email ID to tbl_emailContent fileLocation text Local path to the image file of the rendered email. emailClientName text Name of the email client the email was rendered in. Table 3-15 Email Preview Table 3.1.6.3.2 The database must have a table to store the list of email addresses for each campaign. Table Name: tbl_TestEmailList Field Name campaignID testEmailAddress Data Type int, foreign key to tbl_campaigns text Table 3-16 Email List Table 3.2 Performance Requirements 3.3 Assumptions and Constraints 3.4 Non-Functional Requirements Description Campaign ID Email Address 25 Appendix