0% found this document useful (0 votes)
94 views

Job Specification - Data Import

This document provides technical specifications for updating the data import user interface for an online learning platform called iTrainStation. It includes details on design standards, navigation, defaults, data tables, the development environment, and UI/UX flows and wireframes for three sections of the import process: data file selection, data mapping, and options. The goal is to maintain granular control over each user's experience through customizable features and functionality.

Uploaded by

swapnil sardar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
94 views

Job Specification - Data Import

This document provides technical specifications for updating the data import user interface for an online learning platform called iTrainStation. It includes details on design standards, navigation, defaults, data tables, the development environment, and UI/UX flows and wireframes for three sections of the import process: data file selection, data mapping, and options. The goal is to maintain granular control over each user's experience through customizable features and functionality.

Uploaded by

swapnil sardar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 43

 

 
 

 
By 
 

 
 

Data Import User Interface 


 
Update v1.5 
 

Technical and Design 


Specifications   

 
 

Introduction 
BASC Group, Inc. is comprised of mostly tech savvy, geeks and programmers. We are well versed in multiple 
languages, platforms, hardware and technologies. Our unique ability, cultivated from decades of experience, 
allows us to freakishly forecast future standards and behaviors so that we can develop software applications 
that will be needed five years from now. 
 
iTrainStation is one of those products which began development in 2006. It is an advanced online learning 
platform that was built to transform itself based on each individual user who logs in. By embracing a mindset 
of toggles, or switches, we are able to offer an infinite array of features and functionality simply based on the 
value of a variable. Default values are established, then inherited downward as each sub user logs into the 
portal. This allows us to tweak values to alter the user experience all the way down to the individual user. By 
design, we wish to maintain this granular control as we continue to enhance the product while developing 
new features and functionality.   
 
In an effort to communicate as effectively as possible, this job specification is exhaustive. We’ve made a 
gallant effort to provide you with as much information as possible throughout this document about the project 
and iTrainStation as possible. It contains thought flows, snippets, wire frames, variable tables, data tables, 
definitions, screen shots and more. It may appear overwhelming at first glance, but we are sure that you will 
find the layout to be a great guide for the project itself as well as a valuable resource of information about 
files and the data you will be working with. 
 
And although we spend an exhaustive amount of time planning, sketching, rehearsing with flowcharts and 
wireframes, we at times create gaping holes in thought. We apologize in advance if you should you find 
yourself staring down into one of these gaping holes. As developers ourselves, we understand the 
frustration this can cause a development team. We ask that you simply bring your findings to our attention 
and allow us the opportunity to address it while the work is in progress, rather than at the conclusion of the 
project.   
 
We understand this may affect timelines, milestones and the time you’ve allotted to complete the project. 
Without hesitation, we are fully aware that these changes to schedules and timelines come at a cost and are 
well prepared to compensate any developer for any inconvenience these oversights may cause. 
 
We hope you find your experience working with us to be enjoyable and rewarding. We look forward to 
developing an ongoing working relationship. Communication will be essential for both parties to achieve that 
goal. Therefore, please feel free to contact us at any time, for any reason, so that we can offer any assistance 
you may need to complete the project with excellence. 
 
Sincerely, 
 
 
Sirirat Sriprom 
President 

- 2 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

Table of Contents 
Introduction 2 

Table of Contents 3 

Project Summary 6 
Project Overview 6 
In Scope 6 
Out of Scope 6 

Contacts 7 

Design Standards 7 

Navigation Standards 7 
Header 7 
Launch Pad 7 
Action Bar 7 
BreadCrumb Bar 8 
Dialog Box 8 

Defaults and Standardizations 8 


Colors 8 
Fonts 8 
Text Formats 8 
Number Format 9 
Currency Format 9 
Date and Time Formats 9 
Table Formats 9 
Button Class 9 
Button Formats 10 
Input Fields 10 

Data Tables 11 


Schema: User Table 11 
Schema: Template Import Table 12 
Schema: Template Mapping 12 
Schema: Template Fields 12 

Data Fetching 13 


Obtain User and Company Data 13 

   

- 3 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

Sandbox / Development Environment 13 


Working Environment 13 
Development Environment and Architecture 13 
Java Library Methods 14 
Source Code Commits 14 

UI/UX Flow, Wireframes and Design Instructions 14 


Section 1 - Data File Selection 15 
Breadcrumb Bar 15 
Template Selection 15 
Template Selected, Go Button Invoked 16 
Incontext: Data File, Template Management 18 
New Button Invoked 19 
Error Check Records / File Metrics 19 
Delete Template 20 
Template Selected, Share Button Invoked 20 
Import InContext Views 21 
Section 2: Data Mapping 22 
Breadcrumb Bar 22 
Import File Data Display 23 
iTrainStation Results Data Display 23 
Previous Record, Next Record, Skip Record, Edit Record 25 
iTrainStation Data Review and Editing 25 
>> Good Records 26 
>> Skipped Records 26 
>> Bad Records 27 
>> Editing Behavior of Records 27 
Mapping Incontext Views 27 
Section 3: Options 28 
Breadcrumb Bar 28 
Import Data 28 
>> New Users 29 
>> Updating Users 29 
>> Deactivate Users 29 
Existing Records 29 
>> Skip User - Review Later 29 
>> Update With New Data 29 
>> Prompt Import 30 
eMail Address Validity 30 
Set Password 30 
   

- 4 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

Time and Date 31 


>> Time Zone Settings 31 
>> Time Display Settings 31 
>> Date Display Settings 32 
Assign to Groups 32 
Reports To 32 
Account Type / User Access Level 32 
Import Button 33 
First Import Confirmation 33 
Second Import Confirmation 34 
Import Progress 34 
>> Abort Process 35 
Mapping Incontext Views 35 
Section 4: Import Summary 36 
Breadcrumb Bar 36 
Import Summary Data 37 
Export Import Results 37 
>> Export of Summary Results To TXT File 37 
>> Export of Detailed Results To CSV File 37 
>> Send eMail of Results 38 
Display of Records And Record Import Results 38 
Save Template 40 
>> Template Data Storage 40 
System Templates 40 

Error Checking 41 


Devices 41 
Browsers 41 
Non Supported Devices 41 
Strings / Data Elements 41 

Milestones and Deliverables 42 


In Scope 42 
Out of Scope 42 
Milestones 42 
Milestone 1 - Successfully Demonstrate Functionality of The Importing and Related Functions 43 
Milestone 2 - Successfully Demonstrate Functionality of The Templates and Related Functions 43 
Milestone 3 - UI/UX Design Changes, Limit of 3 Sets of Requests 43 
Milestone 4 - Final Testing, Bug Fixes and Final Requests, Limit of 3 Sets of Requests 43 
Project Complete - Code Turnover 43 
 
   

- 5 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

Project Summary 
Project Overview 
-- Data Import of Simple Text, Considered Address Book Data 
-- Perform Operations Based On New Data, Update Data, DeActivate Data 
-- User Functionality To Map Data From Import File To iTrainStation Database 
-- Allow User To ReUse File Locations, Mappings, Options Selected By Using Templates 
-- Error Check and Format Data Before Writing To Database 
-- User Functionality To Select Options To Be Stored With Import Data 
-- Time Zone Selection 
-- Date and Time Format Selections 
-- Set Password, Groups, ReportsTo 
-- Design UI/IX Screens Using Wireframes As A Guide 
-- Designed UI/IX Screens Must Show Continuity With Existing Site 
-- Import Must Be Able To Process Import File of 1M Records 
-- Import Functionality Will Have Ability To Abort  
-- Import Functionality Will Have Ability To Rollback 
-- Summary Report of Import Results eMailed To User and iTrainStation Support 
 
The current Import functionality is written in Eclipse. It will be the choice of the current developer to decide if 
they would prefer to adopt this base of code or to decide if they would prefer to rebuild the functionality from 
scratch. BASC Group will need to be informed of the decision, and the reason the developer made that 
choice. 
 
Should the developer choose to utilize the existing code, the project will need to be converted into a 
Maven-based project. All dependencies including the BASCLib Java library, and any other items which are 
currently linked in the WEB-INF/lib folder must be added as Maven dependencies in its POM. The project 
should be developed within built the Jenkins build environment, and fully working on the production test 
environment.  
  
In Scope 
We consider minor deviations from the scope of work to be considered as in-scope. Such examples are 
items that require minimal time to consider, address and develop. As examples, failure to denote color, point 
sizes, fonts, layout contingencies to be minor. These are considered simple adjustments and common during 
development phases. Usually, these items consume less than one (1) half-hour of time to fix. Multiple items 
that tally up to be over one (1) hour will be bundled together and considered as out-of-scope work. 
 
Out of Scope  
We consider major deviations from the scope of work to be considered as out-of-scope. Such examples are 
more than a 50% rearrangement of a page layout, additional functionality beyond the scope of work, 
additional database schemas, etc. They would be considered as items that would influence timelines and 
would cause considerable delays.   
 

- 6 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

When an out-of-scope situation arises, both BASC Group and the chosen developer would discuss and agree 
on the best way to move forward in order to complete the original project. Out-of-scope work can be 
accomplished by starting another project that is accomplished in parallel to the original project. The new 
project would then be contracted out with a new and different set of milestones and compensation. 

Contacts  
All communication is to remain within the Upwork portal. 
 
Justin Bridges - Project Manager 
Waldyr Oliveira - Milestones Manager 
Beau Hitt - Technical Development Manager 

Design Standards 
iTrainStation is currently between design standards. This presents an opportunity to a developer who has 
the skill to offer design changes and improvements. The developer will need to submit a request to the 
Project Manager and offer the suggested changes, including the languages to be used in the redesign. 
 
While during the design changes, please refer to itrainstation.com to become familiar with the existing UI/UX 
and design your pages to integrate well within the “improved” parts of the site wherein this project document 
lacks direction. 

Navigation Standards  
Header 
The header is stand alone functionality that is called from within the pages (via JSP Include file) designed by 
the chosen developer. If changes are needed to be made to the header, they are to be brought to the 
attention of the Development Manager for approval before design and/or implementation. 
 
Launch Pad 
The Launch Pad is stand alone functionality. Launch Pad behavior is contingent upon several factors related 
to the user profile and/or company settings. If changes are needed to be made to the Launch Pad, they are 
to be brought to the attention of the Development Manager for approval before design and/or 
implementation. 
 
Action Bar 
The Action Bar is stand alone functionality that is called from within the pages designed by the chosen 
developer. If changes are needed to be made to the Action Bar, they are to be brought to the attention of 
the Development Manager for approval before design and/or implementation. 
 
-- Action Bar Background Color: ​UI.getCustomColor(“ACTIONBACK”, <companyID>) 
-- Action Bar Text Color: ​UI.getCustomColor(“ACTIONTEXT”, <companyID>) 

- 7 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

 
BreadCrumb Bar 
BreadCrumb Bar functionality may exist on pages and will be outlined within this document. When 
implemented by the developer, it is required to follow the standard design established by BASC Group. The 
behavior of the action bar is considered as a standardization. The variable data utilized in the design by the 
developer is to be pulled from the data table. 
 
-- Breadcrumb Trail Active Background Color: ​UI.getCustomColor(“BCRUMBACTIVE”, <companyID>) 
-- Breadcrumb Trail InActive Background Color: ​UI.getCustomColor(“BCRUMBINACTIVE”, <companyID>) 
-- Breadcrumb Trail Text Color: ​UI.getCustomColor(“BCRUMBTEXT”, <companyID>) 
-- Breadcrumb Trail Completed Checkmark: ​UI.getCustomColor(“BCRUMBCOMP”, <companyID>) 
-- Breadcrumb Trail InComplete Checkmark: ​UI.getCustomColor(“BCRUMBINCOMP”, <companyID>)  
 
-- Active Item/Section Is Colored Using Completed Color Variable 
-- Completed Item/Section Receives Green Check 
-- InCompleted Item/Section Is Colored Using Incomplete Color Variable AND Grey Check 
 
-- Upon Completion of Item/Section, Green Check Mark Appears And Allows For Advance 
 
-- Ability to Go Back To A Completed Item/Section is Allowed 
-- User Can Not Jump Ahead Without Completing Current Item/Section 
 
Dialog Box 
When prompting a user for an action or input, this box is used. The box is to be placed in the center of the 
screen, contain padding on the inside of the box and always have the red X in the upper right hand corner 
functioning as a cancel action. 
 
-- Use for Dialog Box Background: ​UI.getCustomColor(“PAGEBACK”, <companyID>) 
-- Use for Dialog Box Text: ​UI.getCustomColor(“PAGETEXT”, <companyID>) 
-- Use for Dialog Box Borders: ​UI.getCustomColor(“TBLBORDER”, <companyID>) 

Defaults and Standardizations 


Colors 
Refer to “custom_colors” table for colors to use on text, background, headers, etc. 
 
Fonts 
Standard Text Font: “normal 12px Century Gothic, arial”  
Standard Text Color: custom_colors.PAGETEXT 
Header Text Font: “bold 14px Century Gothic, arial”  
Header Text Color: custom_colors.HEADERTEXT 
 
Text Formats 
-- All Text Strings To Be Stripped of Leading and Trailing Spaces 
-- Auto Capitalization of First Letter, Lower Case On Remainder of String 

- 8 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

-- First Name 
-- Last Name 
-- Company Name 
-- City 
-- State Force As Two (2) Letter Abbreviation 
-- Country Code Force As Three (3) Letter Abbreviation Per API 
-- Phone Number Stored As 10 Digit Numeric 
-- Phone Number Displayed As (xxx) xxx-xxxx 
-- Zip Code 
 
Number Format 
-- Stored In Database As Ten Format (xxxxxxxxxx) 
-- Default Displayed As x,xx,xxx,xxx.xx 
-- No Leading Zeros On Numeric Values 
 
Currency Format 
-- Stored In Database As Ten Plus Two Format (xxxxxxxxxx.xx) 
-- Default Displayed As $ x,xxx,xxx.xx 
-- No Leading Zeros On Numeric Values 
 
Date and Time Formats 
-- Stored In Database As: YYYY-MM-DD HH:MM:SS T-- Default Displayed As: MM/DD/YYYY xx:xx AM/PM (TZ) 
-- 12-hour or 24-hour time display is determined by a user's MILITARYTIME toggle (if true, display 24-hour) 
-- Leading Zeros Displayed On Military Time Formats 
 
Table Formats 
-- Header Row Height - 24pt 
-- All Other Row Heights - 18pt 
-- Column Center Border - 3pt 
-- Center Divide Between Tables - 96pt 
-- Use for Header Background Color:​UI.getCustomColor(“TBLHEADER”, <companyID>) 
-- Use for Header Text: ​UI.getCustomColor(“TBLHEADTEXT”, <companyID>) 
-- Use for Table Borders: ​UI.getCustomColor(“TBLBORDER”, <companyID>) 
-- Use Alternating Row Background 1: ​UI.getCustomColor(“TBLROWBG1”, <companyID>) 
-- Use Alternating Row Background 2: ​UI.getCustomColor(“TBLROWBG2”, <companyID>) 
-- Use All Row Text: ​UI.getCustomColor(“TBLROWTEXT”, <companyID>) 
 
Button Class 
-- Navigation / Forward / Back / Next / Previous / ChooseFile; Blue 
Gradient Start: ​UI.getCustomBtnColor(“BTNCLR2START”,<companyID>);  
Gradient End: ​UI.getCustomColor(“BTNCOLOR2END”,<companyID>); 
-- Cancel / Delete / Undo; Red 
Gradient Start: ​UI.getCustomBtnColor(“BTNCLR3START”,<companyID>);  
Gradient End: ​UI.getCustomColor(“BTNCOLOR3END”,<companyID>); 
-- Save / Submit; Green  
Gradient Start: ​UI.getCustomBtnColor(“BTNCLR1START”,<companyID>);  

- 9 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

Gradient End: ​UI.getCustomColor(“BTNCOLOR1END”,<companyID>); 


-- Purchase; Yellow 
Gradient Start: ​UI.getCustomBtnColor(“BTNCLR4START”,<companyID>);  
Gradient End: ​UI.getCustomColor(“BTNCOLOR4END”,<companyID>); 
-- Disabled / Inactive; Grey 
Gradient Start: ​UI.getCustomBtnColor(“BTNCLR5START”,<companyID>);  
Gradient End: ​UI.getCustomColor(“BTNCOLOR5END”,<companyID>); 
-- Print / View / Upload / Play; Green 
Gradient Start: ​UI.getCustomBtnColor(“BTNCLR1START”,<companyID>);  
Gradient End: ​UI.getCustomColor(“BTNCOLOR1END”,<companyID>); 
-- Edit; Blue  
Gradient Start: ​UI.getCustomBtnColor(“BTNCLR2START”,<companyID>);  
Gradient End: ​UI.getCustomColor(“BTNCOLOR2END”,<companyID>); 
-- HomeButton; 
Menu Button Color: ​UI.getCustomColor(“MENUBTN”, <companyID>) 
-- Button Highlight / Glow;  
Link Hover: ​UI.getCustomColor(“LINKHOVER”, <companyID>) 
 
Button Formats 
-- Buttons should use standard Bootstrap button CSS to size and display appropriately 
-- Buttons should have custom CSS to reflect the custom colors above 
 
Input Fields 
-- Input field boxes will display the friendly label inside the box 
-- When empty the label will be displayed in a larger font 
-- When data is entered, the friendly label shrinks down and is in the upper top left of the input box unless 
otherwise stated 
-- Down Carats Indicate Dropdown 
-- Input Field Which Requires Specific Formats, ie: eMail Address, Phone Numbers, Zip Codes; Should Glow 
The Error Color Until Proper Text is Entered 
 
-- Input Field Background Color; #ffffff 
-- Input Field Label Size and Color - Before Selected; 16 Pt, #999999 
-- Input Field Label Size and Color - After Selected; 10 Pt, #999999 
-- Input Field Text Size and Color - After Selected; 14 Pt, #000000 
-- Input Field “Required” Text Size and Color; 10 Pt, #cf2a27 
-- Input Field “Required” Carat Color; #cf2a27 
-- Input Field Caret Color; #000000 
-- Input FIeld Error Glow Color - UnAcceptable; #cf2a27 

   

- 10 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

Data Tables 
Schema: User Table 
These are user mappable fields for incoming data during import. 
 
Friendly Label  Variable Name  Stored Format  Displayed Format 

User Name  USER_NAME  Valid email  Email format 

Password  USER_PASS  MD5 Encrypted  Is not displayed 

First Name  FIRSTNAME  String  1st letter capitalized 

Middle Name  MNAME  String  1st letter capitalized 

Last Name  LASTNAME  String  1st letter capitalized 

Alternate Email  ALT_EMAIL  Valid email  Email format 

SMS Phone  TXTMSGNUM  xxx.xxx.xxxx  Phone Format 

Language  LANGUAGE  String  1st letter capitalized 

Manager (Reports To)  MASTERLOGINID  Int  Valid User ID 

Employee/Policy ID  EMPLOYEEID  String  As Typed by User 

Organization  ORGANIZATION  String  1st letter capitalized 

Location  LOCATION  String  1st letter capitalized 

Job  JOB  String  1st letter capitalized 

Department  DEPARTMENT  String  1st letter capitalized 

Position  POSITION  String  1st letter capitalized 

Groups  <Special Case>  <Special Case>  See Below 

Reset Password?  RESETPW  yes / no  Is not displayed 

Time Zone  TZ  String  All capital letters 

Active (yes/no)  ACTIVE  yes / no  Is not displayed 

For Validating Information 

Valid SMS  VALIDSMS  yes / no  Is not displayed 

- 11 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

Valid Email  VALIDEMAIL  yes / no  Is not displayed 

Valid Alternate Email  VALIDALTEMAIL  yes / no  Is not displayed 


 

Schema: Template Import Table 


Table Name​: template_import 
Table Description​: This table will be used to store the Name, User IDs, Dates, Options/Toggles, and other 
basic information from the User Import Templates. 
 
Field List: 
ID (Auto incremented key field - int) - ID of the template. Insert null for new templates 
CREATEDATE (datetime) - Date Template was created 
LASTUPDATE (datetime) - Date of the last time the template was updated/edited 
USER_ID (int) - ID of the User who the template is currently assigned to 
OWNER_ID (int) - ID of the User who created/shared this template 
IMPORT_FILE (String) - Path and name of expected Import File. This should be the directory/filename where 
the original file was found on the user’s system. This should not be the original import file.  
NAME (String) - The name of the template entered by the user at the time of saving 
ORIGINAL (boolean) - True if this is the original template. False if this template is a shared version 
 
The following fields are for storing the values from the Options/Toggles Section: 
IMPORT_TYPE (String) - “new” or “deactivate” 
EXISTING (String) - “skip”, “update”, “abort” 
EMAIL_VERIFY (String) - “all”, “some”, “none” 
PASSTYPE (String) - “sysGen”, “global” 
PASSVAL (String) - Used for storing the password value if PASSTYPE = “global” 
TIMEZONE (String) - Value from the TimeZone dropdown 
TIME_DISPLAY (String) - Value from the Time Display dropdown 
DATE_DISPLAY (String) - Value from the Date Display dropdown 
GROUP_ASSIGN (String) - Value for Global Group Assignments 
 

Schema: Template Mapping 


Table Name:​ template_mapping 
Template Description:​ This table is for storing the field mapping of the incoming user import file.   
 
Field List: 
TEMPLATE_ID (int) - Row ID, from the template_import table, of the main template 
FIELD_ID (int) - Which Field is mapped. ID obtained from the template_fields table 
POSITION (int) - Which column of the import file is this field mapped to 
 

Schema: Template Fields 


Table Name​: template_fields 

- 12 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

Template Description:​ This table stores the available Fields that can be mapped in the User Import process 
 
Field List​: 
ID (int) - Row ID, from the template_import table, of the main template 
NAME (String) - Name of the Field to be mapped. (Example: First Name, Phone, Email) 
DBFIELD (String) - Name of the field, in the user table, this field is mapped to (Example: FIRSTNAME, PHONE, 
USER_NAME) 
REQUIRED (boolean) - Is this a required field? If True, the User Import Tool should require this field 

Data Fetching 
Obtain User and Company Data 
The User ID is passed to the User Import Servlet. The User ID is then used to get and/or set default values 
and/or variables used to establish the colors, layout, skinning, etc. Please refer to the Java Library Methods 
section of this document for the link to the library documentation website. 
 
A BASC Developer will be happy to guide you to the appropriate methods to use, if they are not already 
listed in the project specification. 

Sandbox / Development Environment 


Working Environment 
A development environment will be provided to the developer to work in. Credentials to the development 
environment, and to the associated Git branches, will be provided upon acceptance of this project. Access to 
a development database will also be provided. 
 
The project can and should be deployed via our Jenkins Build server at ​https://build.itrainstation.com​.  
 
Development Environment and Architecture 
-- Tomcat7 Servlet Architecture  
-- Bootstrap v2 Components 
-- All Project Elements Are To Be Developed As Standalone Servlets 
-- Any External Framework Must Be Approved Before Development Begins 
-- Deployment Instructions Must Be Provided Upon Final Delivery 
-- 3rd Party Libraries / Module Are Acceptable With Approval From The Project Manager 
 
To integrate within our current system, the project will need to be coded/created in the following languages. 
If you plan to use any coding languages, frameworks, or APIs, that you do not see listed, please consult with 
BASC Group technical staff before proceeding. 
 
Front End:​ Javascript (non-ES6), Angular, Bootstrap, CSS, HTML 
Back End:​ Java JRE 1.7 / JSP (Apache Tomcat 7) 
Dynamic Data:​ AJAX / JSON 
Database:​ MySQL 

- 13 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

 
Java Library Methods 
JavaDoc documentation will be provided for all available iTrainStation/BASCGroup methods contained within 
our internal iTrainStation Java Library.  
 
NOTE​: ​When possible, use the provided Java Library for any/all functions. Any new functionality written for 
this project should be created as methods to be included into the existing iTrainStation Java Library. A BASC 
Group developer will include any/all new methods into the Library, when necessary, so they are available for 
the project. 
 
This documentation can be viewed at: 
https://www.itrainstation.com/uXM8Y1i0L3/com/bascgroup/basclib/package-summary.html 
 
Any external frameworks (e.g. Spring Boot) must be approved before development begins. Deployment 
instructions for the project (Maven, Java) are to be provided upon final project delivery. 
 
Source Code Commits 
All source code must be continuously committed to Git and pushed to our remote repository: 
git@bitbucket.org:bascdevelopment/userimport.git.  
 
Builds should be triggered and deployed to iTrainStation development environments upon committing the 
code to source control. 
 
After project conversion, all components of the project must properly build, link, and perform as intended in a 
testing and production environment.  
 
The project can and should be deploying via our Jenkins Build server at ​https://build.itrainstation.com​.  

UI/UX Flow, Wireframes and Design Instructions 


The import functionality is broken in four (4) main sections. They are as follows: Data File, Mapping, Options 
and Import Summary. During functionality only one section at a time should be displayed. The other non 
active sections remain hidden so that only the individual section which is active can be viewed. Jumping to 
another section can be accomplished by simply clicking on the breadcrumb. Should the user jump from one 
section to another, it is important to maintain all settings, toggles, data, positions, etc of where the user left off 
when they jump from the active section. Should a setting in one section impact data on another section, the 
impacted section should be updated to reflect the changes so that when the user returns to the impacted 
section, it is updated accordingly and automatically. 
 
Throughout this section of the document, there will be bullet points of things to consider and implement. 
We’ve attempted to state things in a logical order to help with the process and flow of intended use. Also 
included will be variables, color attributes and other pieces of useful information to assist in the process of 
developing the code. Image clips of the function discussed will be displayed after the bullet points to help 
visually place elements in context to the text. Screen shots of all the elements in context with one another 

- 14 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

will be shown in the Screenshots section of this document, and provided as a reference to see the big 
picture. 
 
Although we have attempted to be as descriptive and as detailed as possible in providing guidance to the 
developer during the development of this project, we are fully aware of our lack of ability in design. Please 
feel free to exercise any expertise, advice, suggestions you would have that would ultimately improve upon 
what we have suggested in this project specification. 
 

Section 1 - Data File Selection 


Breadcrumb Bar 
-- Import Section of Breadcrumb Bar Should Be Highlighted While In Progress, Checkbox Greyed Until Import 
Button Is Invoked 
-- Mapping, Options, Summary Sections of Breadcrumb Bar and Check mark Should Be Greyed Out During 
This Section 
 
 

 
 

 
 
Template Selection 
-- System Templates Names Always Start With a Dot, and Always Appear At Top of List 
-- Template List Default Sort Is On “Last Used” Column 
-- Each Column is Sortable By Clicking on the Up/Down Carats For Each Column 
-- Trash Can Invokes Delete Functions For That Particular Template 
-- Deleted Templates Only Impact Current User, Shared Templates Remain In Tact 
-- System Templates Can Not Be Replaced, Deleted or Shared 
-- The system will assume that templates are the most commonly used function when importing data 
-- Selection box filters based on text being typed into Template Name 
-- While Predictive Search is Invoked, All Radio Dials Are Off For All Choices 
 

- 15 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

 
 
-- Selection of Template Reveals Share and Go Buttons 
 

 
 
Template Selected, Go Button Invoked 
-- Ask User If Using The Same Filename/File Location Which is Stored In Template 
 

 
 
-- If User Selects YES;  
-- Check For File Not Found; If File Found; Perform Error Checks On File; Display File Metrics and Show 
Import Button 
 

- 16 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

 
 
-- Check For File Not Found; If Error, Display Message 
-- If User Chooses To Browse, Open File Navigation and Treat As New Data File 
-- If User Chooses To Cancel, Return User Back To Beginning of Template Selection 
 

 
 
-- If User Selects NO; Open Up Explorer, Locate File 
-- Filter Files CSV, XLS, XLSX 
-- Force Explorer To Start In Downloads Folder 
 
-- If User ESC’s File Navigation, Return Back To Template Selection Screen 
-- If Returning With File; Perform Error Checks; Display File Metrics; Remove Share Button; Activate Import 
Button; Utilize Mappings From File 

- 17 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

 
 
-- Import Button Invoked Will Bring User To File Mapping Section  
 
Incontext: Data File, Template Management 

 
 

- 18 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

 
 
New Button Invoked 
-- Open Up Explorer, Locate File 
-- Force Explorer To Start In Downloads Folder 
-- If User ESC’s File Navigation, Return Back To Template Selection Screen 
-- If Returning With File; Perform Error Checks; Display File Metrics; Remove Share Button; Activate Import 
Button 
 
Error Check Records / File Metrics 
-- Scan File For Number of Records 
-- Confirm Import File Has At Least Three (3) Columns of Data 
-- Utilize eMail Specifications From https://tinyurl.com/y46gb67n 
-- Determine Field That Contains eMail Addresses; Scan for Null, Missing @ or dot 
-- Confirm eMail Addresses Have “@” and “.com”, or “.net” or “.gov” or “.net” 
-- If eMail is Invalid; Mark Records As Bad 
-- Determine Field That Contains Last Name; Scan for Null; If Null, Mark As Bad 
-- Determine Field That Contains First Name; Scan for Null; If Null, Mark As Bad 
-- Determine Field That Contains Phone Numbers; Strip/Convert to Numeric String 
-- If Phone is Invalid (Len < 10) or (Len > 11); Mark As Warning 
-- Perform Analysis On Records, Fields To Locate FieldName With Highest Likelihood of Last Name and/or 
FIrst Name. Header row maintain common label, scan for those common header 
-- Search for “FName”, “First”, “FirstName”, “Name” in Header Row For First Name 
-- Search for “LName”, “Last”, “LastName”, “Name” in Header Row For Last Name 
-- First and Last Name Search String for AI Should Be Maintained In A Table For Easy AI Updates 
 

 
 
 
-- When Import Button Is Invoked; Jump To Mapping Section 
 

- 19 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

Delete Template  
-- User Invokes Delete By Clicking the Trash Can Icon 
-- Template Is Removed From Users Profile, List, Etc 
-- Template Remove DOES NOT Impact Anyone Who Received A Copy of Template 
-- Template Remove Impacts Current User ONLY 
-- Ask For Confirmation of Deleting of Template 
-- Template Selection Box is Replaced By Display of Remove Dialogue Box 
 

 
 

 
 

 
 
Template Selected, Share Button Invoked 
-- When Template Is Selected, Slow Fade of NEW Button, Fade In Share Button - Make Obvious 
-- Replace Template Box With User Search Box 
-- User Search, Predictive Search Functionality 
-- Only Search Other Admin / Trainer Level Users Within Company 
-- Free Form Search By For First Name, Last Name or eMail Address 
-- As Results Are Being FIltered and Display, Display Full Name, eMail and Department and Title 
-- When User Selected; Display Confirmation Screen of Sharing Template 
-- After User Invokes Share Button; Return To Template Selection Screen 
-- Recipient of Template Is Notified Via eMail and Message Center 
 

- 20 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

 
 
Import InContext Views 
 

 
 

- 21 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

 
 

 
 

Section 2: Data Mapping 


Breadcrumb Bar 
-- Import and Mapping Section of Breadcrumb Bar Should Be Highlighted While In Progress 
-- Checkbox of Import = Completed 
-- Checkbox of Mapping = InCompleted Until Next Button Invoked 
-- Options, Summary Sections of Breadcrumb Bar and Check mark Should Be Greyed Out During Use of This 
Section 

- 22 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

 
 

 
 
Import File Data Display 
-- Read Header From Import FIle 
-- Fields To Display Setting Is Stored In Table 
-- If Number of Fields Is Greater Than Display Settings, Use Vertical Scroll Bars 
-- If Data is Greater Than Field Width, DO NOT EXPAND display 
-- Display Labels On Import Screen In Order of Header File 
-- If the XLS/XLSX files have multiple workbooks, Provide an option to select which one 
 

 
 
iTrainStation Results Data Display 
-- Upon First Visit, New Template/Import, Right Side of Screen is All Selects, No Mapping Yet 
-- Users Uses Dropdown Arrow To Invoke List of iTrainStation Fields 
-- Dropdown List Must Remain Smaller Than Mapping Window To Avoid Disappearing Mapping Screen 

- 23 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

-- Required Fields Are Always Listed At The Top of List 


-- Required Label Appears, In Red Next to Field Name 
 

 
 
 

 
 
-- If Field is Mapped, Item Disappears From List To Prevent Mapping Data to Same Field Twice 
-- Display Live Data From Record On Screen To Correspond With Data On Left Side 
-- Once First Field Is Mapped, Activate Skip/Edit/Previous/Next Buttons 
 

- 24 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

 
 
Previous Record, Next Record, Skip Record, Edit Record 
-- If First Record is Displayed, Remove PREVIOUS RECORD Button 
-- If Last Record is Displayed, Remove NEXT RECORD Button 
-- Previous Button Left Justified To Results Block 
-- Next Button Right Justified To Results Block 
-- When User Invoked PREVIOUS RECORD, Display Data of Previous Record 
-- When User Invoked NEXT RECORD, Display Data of Next Record 
-- If User Invokes SKIP RECORD, Mark The Import Record to Skip During Import, Update Display 
-- If User UnChecks SKIP RECORD, Clear Toggle to Skip During Import, Update Display 
-- If User Invokes Editing Of Field, Allow User to Edit Data In Context of Display, and Retain New Data 
-- If User Invoked Filters, Display Only Records With Appropriate Data Per Filter 
 
iTrainStation Data Review and Editing 
Bad Records are determined in the very beginning when an import file is first connected (Section 1). Records 
that are missing a proper email address, first name or last name are considered as bad. During review of the 
data, the user should have the ability to edit bad records to make them usable. Review the section, “ Section 
3 - Options/Import Data” for more information on what would cause a record to be considered bad. 
 
-- Required Fields For iTrainStation Are: First Name, Last Name, eMail/Login ID; Missing Data = Bad Record 
-- Required Text Label On Right Side is Static As Well As Red Down Arrow 
-- Highlight Bad Data Field(s) With Red Border 
-- Display Bad Field Name Next To Warning Symbol 
-- Allow User To Updated Field/Record By Clicking On Field 
-- Allow User To Toggle Skip Record 
 

- 25 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

 
 
-- Once Updated With New Data, Verify Data Entered Is Valid 
-- If Updated Data Is Bad, Continue to Tag Record As Bad 
-- If Updated Data Is Valid, Update File Metrics 
-- Once All Three Required Fields Are Mapped, Remove “​▼​ = Required Fields” Label From Header 
 
>> Good Records 
-- Header Changes Color/Text Based On Record Metric 
-- Header/Banner Color, Good Record: ​UI.getCustomColor(“HEADERGOOD”, <companyID>) 
-- Text Color: ​UI.getCustomColor(“HEADERTEXT”, <companyID>) 
-- Include “Skip Record” Box On Right Side 
 

 
 
>> Skipped Records 
-- Header/Banner Color, Good Record: ​UI.getCustomColor(“HEADERSKIP”, <companyID>) 
-- Text Color: ​UI.getCustomColor(“HEADERTEXT”, <companyID>) 
-- Include “Skip Record” Box On Right Side With Toggle On 
-- Text Color of “Skip Record” Box On Right Side With Toggle On = #cc0000 
 

 
 
   

- 26 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

>> Bad Records 


-- Header/Banner Color, Good Record: ​UI.getCustomColor(“HEADERBAD”, <companyID>) 
-- Text Color: ​UI.getCustomColor(“HEADERTEXT”, <companyID>) 
-- Include “Skip Record” Box On Right Side With Toggle Off 
-- Include Warning of Bad Record With Field Name  
-- Text Color of “Warning of Bad Record With Field Name ” = #cc0000 
 

 
 
>> Editing Behavior of Records 
-- Editing of Data Occurs on iTrainStation Results Side of Data Display 
-- If Updated Data Is Bad, Continue to Tag Record As Bad 
-- If Updated Data Is Valid, Update File Metrics 
 
 
Mapping Incontext Views 
 

 
 

   

- 27 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

Section 3: Options 
Selecting options prior to importing the data allows the user to set certain variables, toggles and settings to 
be applied to every user account being imported. When importing, all fields should be formatted to BASC 
Group standards before saving to database. See standards for more information about field formatting. 
 
Breadcrumb Bar 
-- Import and Mapping Section of Breadcrumb Bar Should Be Highlighted While In Progress 
-- Checkbox of Import and Mapping = Completed 
-- Checkbox of Options = InCompleted Until Import Button Invoked 
-- Summary Sections of Breadcrumb Bar and Check mark Should Be Greyed Out During Use of This Section 
 

 
 
Import Data 
 

 
 
-- Default Option To: New 
-- Compare Records From Import File Against Records In iTrainStation 
-- eMail/Login ID Is a Key Unique Field For Comparison 
-- Compare eMail/Login ID Against iTrainStation Data  
-- LoginID Database Table Info: users.USER_NAME (properly formatted email addresses only) 
-- Account Types: Admin, Trainer, Student, Quiz Only 
-- Maintain Metrics of Number of Records, New, Updated, Skipped, and Aborted 
-- Display Metrics of Matched eMail/Login IDs 
-- If Field is Mapped During Section 2, That Value Overrides Any Values Set in Section 3 
-- If Field is Not Mapped or Field Is Null During Section 2, Than Set Values Established in Section 3 
-- Write All Activity To Log File; Include Following Data Pieces: 
-- User Importing, Date, Time 
-- File Location, Full File Name 
- 28 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

-- Fields Mapped, Options Selected 


-- Record Retrieved, Field/Data Stored, iTrain Record ID 
 
>> New Users 
-- If eMail/Login ID Is New; Create Record; Import Fields 
-- Maintain Ability To Display/Output Aborted/Skipped Records 
-- Create/Update User Method: Use the method ​Users.createUser()​ to create a new user 
 
>> Updating Users 
-- See Update With New Data Under Existing Records 
-- Create/Update User Method: Use the method ​Users.createUser()​ to create a new user 
 
>> Deactivate Users 
-- If eMail/Login ID Match Existing Data; Deactivate User 
-- Maintain Metrics of Number of Records, Updated, Skipped, and Aborted 
-- Maintain Ability To Display/Output Updated, Skipped Records 
-- Deactivate User Method: User the method ​Users.deactivateUser()​ to deactivate a user 
 
Existing Records 
 

 
 
-- Compare Records From Import File Against Records In iTrainStation 
-- eMail/Login ID is a Key Unique Field For Comparison 
-- Default Option To: Update With New Data 
 
>> Skip User - Review Later 
-- If eMail/Login ID Match Existing Data; Flag Account, Write To Separate File Names, Skip Record 
-- Filename: “iTrainStation Skipped Records - yyyymmdd - hhmmss.csv” 
-- Make sure header record is in csv file, allows end user to edit the file and reattempt import 
-- Maintain Metrics of Number of Records, Updated, Skipped, and Aborted 
-- Maintain Ability To Display/Output Updated, Skipped Records 
 
>> Update With New Data 
-- If Account Belongs To Expired Account or House Account (Ex: Key Risk, Wumbus) 
-- Update Matched User in iTrainStation Database With New Company 
-- Update Any Additional Fields With New Data 
-- Allow For Sending of Welcome eMail If Toggled On 
-- If Account Belongs To Active Account (Ex: Travelers) 
-- Display Import Error Message: User Exists, Active Account 
-- Add To Metrics As Import Error 

- 29 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

 
-- If eMail/Login ID Match Existing Data; Compare Mapped Fields Against iTrain Fields, Update iTrain if 
Different 
-- Maintain Metrics of Number of Records, Updated, Skipped, and Aborted 
-- Maintain Ability To Display/Output Updated, Skipped Records 
 
>> Prompt Import 
-- If eMail/Login ID Match Existing Data  
-- Display Record; Allow Edit, Skip or Abort Option 
 
eMail Address Validity 
eMail Validity is functionality to allow iTrainStation to know if the eMail/Login ID data being imported is to be 
used for sending email. Only valid AND verified email addresses will be sent an email. 
 
-- Default Option To: eMails Are Valid Addresses 
-- Default Variable EMAILVALID = Yes 
-- If During Mapping, the Variable EMAILVALID is mapped, this option defaults to “eMails Addresses Defined 
Per Mapping”. User is unable to change this setting, and the other two options should be grayed out. 
 
-- ​Valid Email Database Table Info​: users.VALIDEMAIL (Has the email address been tagged as valid? yes/no) 
-- ​Verified Email Database Table Info​: users.VERIFIED (Has the email address been verified? yes/no) 
-- If EMAILVALID is set to “no”, VERIFIED should be set to “yes”. Otherwise, VERIFIED should be set to “no” 
 

 
 
Set Password 
-- Default Option To: Temporary System Issued Password 
-- If During Mapping, the Variable XXXXXX is mapped, this option defaults to “Password Defined Per 
Mapping”. User is unable to change this setting, and the other two options should be grayed out 
-- If the Password Field is Mapped, set the user’s PWTYPE to “custom” 
-- ​Password Database Table Info​: users.USER_PASS (MD5 Encrypted) 
 

 
 

- 30 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

Set Default Language 


-- Default Option To: English 
-- Use Manager’s Language for Default, if set: ​Users.getUserValue(“LANGUAGE”,<userID>)​ (manager’s user 
ID) 
-- Language Dropdown should have 3 options: English, Spanish, French 
-- Method to Save a User’s Language: ​Users.setUserValue(“LANGUAGE”,<userID>)​ (New/Updated user’s ID) 
-- After Adding/Updating a User, you will be able to set their Language with the user’s ID 
 

 
 
 
 
Time and Date 
 

 
 
>> Time Zone Settings 
-- Default Time Zone Option To: Timezone of User Doing Import - Method: ​Users.getUserValue(“TZ”,<userID>) 
-- If Time Zone Of User is Null; User’s IP Address - Method: ​Utils.getIPAddress(<HttpServletRequest object>) 
-- Obtain TZ from IP; Write TZ to Users Account - Method: ​Users.setUserValue(“TZ”,<userID>) 
-- Time Zone: timezones.NAME should be used for the option Display Name. timezones.ID should be used for 
the option Value. This should update the user’s TZ value. 
 

 
 
>> Time Display Settings 
-- Default Time Display Option To: 12 Hour 
-- If TimeDisplay Is Mapped, Grey Out The Box 
-- Time Display: Has Two options: “12 Hour Display” or “24 Hour Display”.  
-- If “12 Hour Selected, Set MILITARYTIME Variable To “False” 

- 31 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

-- If “24 Hour Selected, Set MILITARYTIME Variable To “True” 


 

 
 
 
>> Date Display Settings 
-- Default Date Display Option To: mm/dd/yyyy 
-- If DateDisplay Is Mapped, Grey Out The Box 
-- Date Display: date_display.VALUE should be used for the option Display Name. date_display.ID should be 
used for the option Value. This should update the user’s DATE_DISPLAY setting. 
-- ​Users.getUserValue()​ and ​Users.setUserValue()​ can be used to read and write these user values. 
 

 
 
Assign to Groups 
-- Default Option To: None 
-- Option Only Appears For (ADMIN OR TRAINER) of Platform Plus Subscription 
-- Option Only Appears For ADMIN of PPV Subscription 

 
 
Reports To 
-- Default Option To: Myself 
-- If During Mapping, the Variable REPORTSTO is mapped, this option defaults to “Reports To Defined Per 
Mapping”. User is unable to change this setting, and the other two options should be grayed out. 
-- Set To is Predictive Search Within Company of Users 
-- Can Only Be Set To One REPORT TO Person 

- 32 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

-- Reports To Database Table Info: users.MASTERLOGIN (ID value of “Reports To” user) 
 

 
 
Account Type / User Access Level 
To determine what User Access value options should be available during the import, call the following 
method: ​Users.createUserAccess(<userID>)​. 
-- Method returns value 0-2 
-- If Return value = 0; Only show “Quiz Accounts” option. “Quiz Accounts” is the default option; Other Options 
Are Grey’d Out 
-- If Return value = 1; Show “Quiz Accounts” and “Student” options. “Student” is the default option; Trainer 
Option Is Grey’d Out 
-- If Return value = 2; Show “Quiz Accounts”, “Student”, and “Trainer” options. “Trainer” is the default option 
-- To get the current user’s User Level use the following method: ​Users.getUserValue(“USERLEVEL”,<userID>) 
 
Option Display Name  Option Value 

Trainer  <User Level> + 1 

Student  9 

Quiz Account  9 
 

 
 
Import Button 
-- Verify All Options Are Selected; Grey Out Import Button Until All Options Are Selected 
-- Verify Input Fields Have Valid Data; Grey Out Import Button Until All Input Fields Are Valid 
-- Password Valid When > 1 Alpha Numeric Character; Case Sensitive  
-- Group Assignment Valid When > 1 Alpha Numeric Character 
-- Reports To Valid When = eMail Address Within Company of Admin or Trainer 
 

- 33 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

 
 
First Import Confirmation 
-- Display Import Metrics 
-- Verify Import Intention 
 

 
 
Second Import Confirmation 
-- Verify Import Intention Again 
 

 
 
Import Progress 
-- Display Record Being Read 
-- Display “Success!” Once Record Saved To iTrainStation 
-- Loop Through Import File; Displaying Progress Bar 
-- Every Record Imported MUST have an Import ID 
-- Every New Record Generates A New RecordID/UserID 
-- ImportID Defined At Start of Import Process, After 2nd Confirmation of Import 
-- ImportID = CompanyID-yyyymmdd-hhmmss 
-- Once Import Is Complete, Automatically Move to Summary Screen 
 

- 34 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

 
 
>> Abort Process 
-- Should Abort Be Invoked; 
-- Confirm Decision To Abort 
-- If “Yes, Abort”; Erase All Import Records With ImportID 
-- Updated Records Roll Back To Previous State 
-- User Sent Back to Mapping 
-- If “Resume Import”; Resume Import 
 

 
 
Mapping Incontext Views 
 

 
 
- 35 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

Section 4: Import Summary 


Breadcrumb Bar 
-- Import, Mapping, Options Section of Breadcrumb Bar Should Be Highlighted While In Progress 
-- Checkbox of Import, Mapping and Options = Completed 
-- Checkbox of Summary = InCompleted Until Template Saved OR Assigned Training Is Invoked 
 

 
 
   

- 36 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

Import Summary Data 


-- Display File Metrics Under Import Summary Heading 
-- FIle Metrics Include: 
-- xx Records In File 
-- xx Records Used During Import 
-- xx New Users Added 
-- xx Users Updated 
-- xx Records Were Skipped  
 

 
 
Export Import Results 
>> Export of Summary Results To TXT File 
-- FileName = “iTrainStation Import Results - yyyymmdd-hhmmss - Summary.txt” 
-- Time Format For File Name Is 24 Hour 
-- Include ImportID 
-- Include Person of Import 
-- Include Full Path, Including Drive Letter of File Location of Import 
-- Include FileName of Import 
-- Include Date of FileName 
-- Include BrowserID/Environment Variables 
 
>> Export of Detailed Results To CSV File 
-- FileName = “iTrainStation Import Results - yyyymmdd-hhmmss - Detailed.csv” 
-- Time Format For File Name Is 24 Hour 
-- Export Results Saved To CSV Are iTrainStation Data Elements 
-- Row 1 of CSV Is Header Row, Contains iTrainStation Variable Names 
-- Row 2 of CSV Is Header Row, Contains ImportFile Variable Names 
-- Rows 1 and 2 Is The Mapping of Fields 
-- Column 1 of CSV Is EndResult of Record; NEW, UPDATED, SKIPPED or DELETED 
-- On New, All Fields Should Be Shown 
-- On Skipped, No Client ID Shown, User Not Added To iTrain, All Fields Displayed To Help Support 
Analyzation 
-- On Updated, Existing Client ID Shows, Display Only The Field(s) That Were Updated 
 

- 37 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

 
 
>> Send eMail of Results  
-- eMail Results to Client For Support Documentation 
-- eMail Results to “​Import.Support@iTrainStation.com​” For Support Documentation 
-- Bundle Both Files As Attachments To One eMail 
-- Subject: “<ClientID> - <Company> - Import Results - yyyymmdd-hhmmss” 
-- Body of eMail Includes Import File Name 
-- Include ImportID 
-- Include Person of Import 
-- Include Full Path, Including Drive Letter of File Location of Import 
-- Include FileName of Import 
-- Include Date of FileName 
-- Include BrowserID/Environment Variables 
-- Body of eMail Also Includes Section For FIle Metrics 
-- xx Records In File 
-- xx Records Used During Import 
-- xx New Users Added 
-- xx Users Updated 
-- xx Records Were Skipped  
 
Display of Records And Record Import Results 
-- Scrolling Window Displaying Import Detailed Summary of Each Record 
-- Window Size Shows xx Records of Data, Use Scroll Bars 
-- FullName$ = FirstName$ + “ “ + LastName$ 
-- eMail/LoginID = Primary eMail Address 
 

- 38 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

 
 

- 39 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

 
 
Save Template 
-- Template Saves Are Server Side 
-- User Can Save Template By Typing Name In Box and Hit Save; Name Entered Is Friendly Label 
-- Template Is Saved As “User” Type, Shared Templates Saved As “Shared” Type 
-- After Save, Display “Template Saved” Box For 4 Seconds; Fade Out, Slide Schedule Training Box Up 
-- User Can Skip Saving of Template and Invoke Schedule Training Button 
 
>> Template Data Storage 
-- Includes Unique ID 
-- Template Type; User, System, Shared 
-- Includes Creator 
-- Includes Create Date 
-- Includes Last Used Date 
-- Includes User Provided Friendly Label 
-- Includes File Location 
-- Includes File Name 
-- Includes Mapped Fields 
-- Include Options Selected 
 
System Templates 
-- Google Contacts 
-- Yahoo Contacts 
-- Outlook Contacts 
-- Apple Contacts 
-- iTrainStation Template 

- 40 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

Error Checking  
Devices  
Final product should be tested to work the following devices running the current version of the applicable 
Operating System. Tests are to confirm that the intended design and/or functionality is consistent from 
device to device. If bootstrap is utilized in, documented fields are to be confirmed to work within and upon 
each device as intended. 
 
❏ iPhone / iPad  ❏ Windows Desktop 
❏ Android Phone / Tablets  ❏ Windows Laptop  
❏ MacBook  ❏ Windows Surface Pro 
 
Browsers 
Final Product should be tested to work on the current version of the following browsers. Tests are to confirm 
that the intended design and/or functionality is consistent from browser to browser. 
 
❏ Internet Explorer 11 For Windows 7  ❏ Google Chrome  
❏ Internet Explorer 11 For Windows 10   ❏ Mozilla Firefox 
❏ Microsoft Edge  ❏ Safari 
 
Non Supported Devices 
The final product may function on these devices but does not have to be developed specifically for them. 
 
❏ Smart TVs  ❏ Chromecast 
❏ Video Game Systems  ❏ Apple TV 
❏ Roku 
 
Strings / Data Elements 
Final Product should be tested to handle various data elements to confirm that the intended design and/or 
functionality is processing and/or formatting data properly. 
 
❏ Leading Spaces Trimmed  ❏ Format Dollars ($x,xxx.xx) 
❏ Trailing Spaces Trimmed  ❏ Format of Dates 
❏ Auto Cap First Letter  ❏ Format of Time 
❏ Special Characters  ❏ Format of Phone Numbers 
❏ Empty Data Fields  ❏ Format of eMail Addresses 
❏ Rounding of Numbers  ❏ Check eMail for @ 
❏ Decimals  ❏ Check eMail for .com, .net, .etc 
 

- 41 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

Milestones and Deliverables 


BASC Group has made extensive efforts to consider all aspects of this project and have them addressed in as 
much detail as possible within this Job Specifications document. Decades of development experience has 
taught us that no matter how much time, planning and thought is given to a project, that not all things are 
always considered. Changes to the scope of work are common and to be expected during the development 
of the project. To protect the integrity of this project and the parties involved, the following guidelines will be 
applied to determine how items that are discovered as unaddressed that need to be determined as in-scope 
work, or out-of-scope work. 
 
In Scope 
Everything described within this document is to be considered as “In Scope”. Testing of the intended 
functionality and design is also assumed by both the developer and BASC Group to be considered as a part 
of the In Scope deliverables. “Tested Working” is defined as “Product as described in this document, 
working as intended on local development server, test server, and staging server”.   
 
Out of Scope 
Should this project have need for a side project and/or additional milestone, a separate work order and list of 
deliverables will be established and agreed upon by BASC Group and the developer. The new project 
and/or milestone it will be managed under a separate agreement with its own set of milestones and/or 
compensation. 
 
Should the developer and BASC Group elect to absorb ‘Out-of-Scope’ items into this project, they will be 
agreed upon in writing on what is to be accomplished, including where the deliverable falls on the timeline 
and any compensation that may be awarded for completing the out of scope work. 
 
Milestones 
Milestones are considered as deliverables. Each milestone must be completed in full, including testing on 
the development server, and consider as a working environment, for it to be considered “Delivered”. Testing 
will be conducted on each milestone to ensure it is in working order before the project can proceed on to the 
next milestone.   
 
The Development Manager must be informed by the developer that a milestone has been completed, and 
completed by the Due Date established by the developer to be considered complete. BASC Group will 
review the submitted work and test for basic function and/or performance before certifying acceptance of the 
submitted work. BASC Group reserves a window of 72 working hours to respond to the submission. Should 
BASC Group fail to respond in the 72 hour window, they will have defaulted and the developer is permitted to 
start the next milestone of work without penalty. 
 
A milestone to be considered complete when relevant source code has been committed to the central 
repository and demonstrated as fully working within the testing environment. BASC Group will provide 
feedback and/or respond to a submitted milestone within 72 working hours. Should BASC Group fail to 
respond within the 72 hour timeframe, the milestone will be considered as complete and the developer can 
proceed within penalty to the next milestone. 

- 42 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 
 

 
Milestone 1 - Successfully Demonstrate Functionality of The Importing and Related Functions 
DEVELOPER SETS MILESTONE DATES 
-- 10% Payout; Completed By: Tuesday, January 1, 1900 @ 12:00 AM (PDT) 
-- Import of File 
-- File Filtering During File Selection 
-- Mapping of Data Fields 
-- Options Being Set 
-- Data Cleaned and Formatted Per Specification 
-- Data Written To Database 
-- Notifications / eMails Sent To Users 
-- Abort Function / Rollback 
-- Bug Free 
   
Milestone 2 - Successfully Demonstrate Functionality of The Templates and Related Functions 
DEVELOPER SETS MILESTONE DATES 
-- 10% Payout; Completed By: Tuesday, January 1, 1900 @ 12:00 AM (PDT) 
-- Template Data Saved 
-- Template Data Loaded 
-- Template Performance By Owner of Template 
-- Template Performance of Recipient 
-- Template Deleted by Owner 
-- Template Deleted by Recipient 
-- Bug Free 
 
Milestone 3 - UI/UX Design Changes, Limit of 3 Sets of Requests 
DEVELOPER SETS MILESTONE DATES  
-- 20% Payout; Completed By: Tuesday, January 1, 1900 @ 12:00 AM (PDT) 
-- Change Request In Layout, Design 
-- Change Request In Formatting of Data 
-- Change Request In Application of Options Being Set 
 
Milestone 4 - Final Testing, Bug Fixes and Final Requests, Limit of 3 Sets of Requests 
DEVELOPER SETS MILESTONE DATES  
-- 10% Payout; Completed By: Tuesday, January 1, 1900 @ 12:00 AM (PDT) 
-- Fix Bugs in Logic and/or Design 
 
Project Complete - Code Turnover 
DEVELOPER SETS MILESTONE DATES 
-- 50% Payout; Completed By: Tuesday, January 1, 1900 @ 12:00 AM (PDT) 
-- Turn Over Source Code 
-- Integrate Code Into Production Server 
-- Resolve Errors; Confirm Integration 

- 43 - 
 
FINAL DOCUMENT - FOR RELEASE - 20190712 

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy