"Vendors are always making claims. My position is, "Show me." Carl Kelley was not only able demonstrate
what he could do to meet our requirements, but he could also offer fresh alternative solutions."
-- Darryl Lycett, AMS Project Manager
2. Active Server Page Prototype
Mr. Kelley accepted Darryl's challenge and, delivered a prototype in late September '97 based on Microsoft Visual Basic 5.0
ActiveX Documents in early November. Using ActiveX Documents, a VB5 application runs inside Internet Explorer 3.0x such that client
software components are installed and updated as needed. The AMS 2.0 ActiveX Document prototype demonstrated that AMS 1.0 forms
could appear inside of Microsoft's Internet Explorer 3.02 or better. The prototype software could also be installed on the server
and client PCs were automatically updated via the ActiveX Internet Component Download facility.
We discovered several problem's with the ActiveX Document approach:
- After the ActiveX Document prototype was delivered, we discovered that GASCO's Network Administrators would not support ANY
application that required ActiveX controls, including ActiveX documents. This policy was enforced for security reasons. They didn't
want to enable any dynamically downloaded programs that could with read-write access to to client PC hard disks.
- About half of GASCO's Intranet users had Netscape 3.0 installed on their PCs. Netscape can only support ActiveX controls with a
3MB plug-in from Ncompass Labs called ScriptActive. ScriptActive 2.7 supported ActiveX controls, but not VB5 ActiveX Documents.
- At the time, we couldn't get the ActiveX Document prototype to install properly on GASCO's server. The error message that resulted
had a dozen probable causes. After several failed attempts to correct the problem, we concluded that there was something lacking in
the VB5 master dependency list, which was later fixed by Microsoft in a Visual Studio service pack. The setup required too many
dependencies and the programming environment was just too difficult. After two weeks of trial and error, we decided not bet our
careers and reputations on ActiveX documents.
Richard Kimball, GASCO's Network Administrator, suggested that we use Active Server Pages (ASPs) instead of ActiveX Documents.
In just two weeks, Mr. Kelley delivered a credible prototype that put an HTML face on the AMS 1.0 Oracle database. The prototype
allowed the user to select records from one of several tables, display a hit list and select a record for update. It did more
than its AMS 1.0 counterpart. But instead of being deployed inside a 9MB setup program, only a 50K zip file was required.
Installation is immediate, there is no setup program. Most of these benefits are realized because ASPs are interpretted and
the 9MB interpretter is already installed on the Windows NT server.
"In all my 25 years in the software industry, I have never experienced a more productive environment for
developing on-line transaction processing applications than Active Server Pages."
-- Carl Kelley, AMS 2.0 software developer
Mr. Lycett, who resides in Los Angeles, and Mr. Kelley, who resides in Berkeley,CA, met face-to-face exactly once to hone
the requirements at the beginning of the project. Light-weight ASP deloyment made it possible for Mr. Kelley to respond to
Mr. Lycett quickly and effectively.
Here is a list of the main reasons GASCO chose Active Server Pages as the basis for AMS 2.0:
- ASPs can use any Web browser for a client
- ASPs do not require any software to be installed at the client other than a Web browser
- ASPs do not require a set-up program to install.
- ASPs can be added, replaced and deleted without interrupting service to on-line users
- ASPs are small, which facilitates off-site development
- ASP subroutines are more reusable than VB because they can dynamically generate their own HTML user interface.
3. System Development Milestones
Time Frame
Events and Deliverables
Week 1
The fixed-cost development agreement was executed and the AMS 2.0 database schema was frozen.
Week 2
Defined our Oracle-to-SQL Server migration plan
Week 3
Data entry routines with access authorization was delivered for all tables.
Week 4
An Oracle-to-SQL Server conversion facility was delivered complete with validations and friendly error messages.
Numerous SQL Server database schema optimizations were implemented. Conversion uncovered referential integrity problems.
Week 5
More conversion. Christmas vacation.
Week 6
More conversion.
Week 7
Ability to logon to either the Oracle or the SQL Server AMS databases delivered. Application log file maintained so that all
program exceptions are recorded.
Week 8
Budget table normalized. Accounting data import specifications frozen.
Week 9
JAVA applet delivered that presents a hierarchical view of all database records associated with a given property.
Week 10
Input form layout tool is delivered that enables non-programmers to add, rename or delete columns from any AMS table.
Encoded column dictionary update facility is delivered that enables non-programmers to add, change or delete discrete value
constraints on encoded columns. Password maintenance delivered. Production server is configured.
Week 11
Site Business Plan report delivered. Proxy User access enabled. AD-hoc report design specifications frozen.
AMS 2.0 is deployed for production use!
Week 13
Bug fixes delivered to keep the users happy.
Week 14
Ad-hoc report design and execution delivered. Universal selection criteria delivered so that records can be selected
by specifying the value of any of their fields.
Week 15
Financial tracking detail and summary reports delivered.
Week 16
Project Management report delivered. Data import utility delivered. Programmers guide delivered.
Week 17
Budget performance report is delivered and enhanced to offer user-defined columns and sort orders.
All outstanding features are deployed for real users including the ad-hoc report designer.
Week 18+
Incremental improvements.
The remainder of this document goes into more detail about the nature of AMS 2.0 and what it took to successfully deploy the system.
4. Oracle to SQL Server Database Migration
GASCO has adopted SQL Server as their standard DBMS, so the first development hurdle we faced
was moving the AMS 1.0 data from Oracle to the new schema in SQL Server. The lessons learned during this
database conversion effort include:
- There is a laundry list of SQL syntax differences between Oracle and SQL Server. All of the table and view creation scripts including constraints had to be reinvented.
- You can't just copy the data from the old database schema to the new. You have to apply all of the new schema's validation criteria not only to insure database integrity but to test the new schema.
- Once the data is moved, you need to be assured that the transfer was complete. Its important to have accurate record counts.
- The system-maintained data dictionary tables are so different that equivalent data dictionary views could not be created in SQL Server. Instead, application-maintained data dictionary tables were substituted.
- More significant differences between Oracle and SQL Server are found in the stored procedure syntax. If portability is a requirement, we recommend that stored procedures be avoided.
5. Ease of Adoption Features
A system can only deliver its benefits if people use it. Here are some of the many conveniences built-in to the AMS
that made it easy to learn and easy to use:
Simple, Consistent Look and Feel
All AMS 2.0 pages share the same header and footer information including a link to the main menu, logout and help.
We limited the GUI to three colors and avoided Web page gimicks that tend to annoy users over time.
On-line Help
Each page has a corresponding help Web page.
Convenient Support Access
The footer of each help file presents the phone number and an email link to the AMS support desk. The AMS software version and screen
ID appears in the footer at the bottom of each page to facilitate support. Program exceptions are automatically recorded in the application
log file so that users don't have to transcribe error messages.
Dynamic Hit List Page Resizing
Users can dynamically adjust the number of hits that appear in a page of selected records to best fit their screen.
Intelligent GoBack links
Users are automatically returned to the appropriate hit list after an update procedure. The "Go to Last Query" link
also takes you to the appropriate page where the hit list spans multiple pages.
Hierachical Database Navigation
A JAVA applet was developed so that users could point and click to select any record and report for a given property in their
Web browser just as they would use Windows Explorer to locate files on their hard disk.
Multi-Window Support
Users can take advantage of the Web Browser's "New Window…" function to spawn new AMS windows so that related data can be
juxtaposed or unrelated operations can proceed in parallel.
Persistant Option Selections
In most cases, AMS remembers the users last option selection so that menus don't have to be pulled down more often than necessary.
Report records are hyperlinked to table records
Hyperlinks are provided that make it easy to jump between report records and related table records to reveal more details or to facilitate updates.
Selected Record Set Navigation
Users can click forward or backward through a set of selected records before locking one to be added or changed. A "Page 2 of 12" type
display
keeps the user informed as to where they are in the list of selected records.
Friendly Field Formatting
Currency fields are automatically formatted with dollar signs and commas while browsing.
Automatic Active Record Maintenance
Whenever a budget or monthly actual record is updated with a non-zero currency amount for the current year,
the effected property's status is automatically changed to "ACTIVE". A property manager can retrieve all of there
active records at the touch of a button.
5.1 Data Entry Conveniences

Without good data, AMS reports cannot support good decisions. AMS relies on data that only GASCO's professional property
managers can supply. These people are not data entry clerks. The AMS 2.0 database is both accurate and complete
because its users were willing to maintain it. AMS 2.0 was designed so that data entry effort is minimized.
In the Ease of Maintenance section below, you will see how the input form layout tool makes it easy to start with
a small number of data entry fields and gradually increase that number over time. The input form layout tool enables
a non-programmer to hide, expose and rearrange the columns of any AMS 2.0 table. Discrete value constraints can be
added incrementally as well.
Here are some of AMS 2.0 conveniences that make it easier to enter data:
Automatic Budget Record Generation
Whenever a master Property record is added, all of its related budget records are automatically created.
Automatic Budget Rollup
Whenever a budget record is updated, values are automatically propagated to future current-year forecasts.
Pull-Down Menus
Fields with discrete value constraints as well as fields that reference rows of other tables,a.k.a. foreign keys,
are entered by pulling down a menu.
Consistent Error Handling
Error messages always appear juxtaposed to the offending value.
Data Entry Hints
A data entry hint can be defined in the AMS 2.0 table column dictionary for any table column that can help users avoid errors.
TAB Navigation within forms
As with any HTML form, the TAB button allows operators to quickly jump from field to field from left-to-right, top-to-bottom.
5.2 Accounting System Data is Imported

The accounting system must feed AMS 2.0 the actual revenue and expenses associated with each property so that
AMS can track budgets. Data integrity must be managed when transfering data from one application to another
and the AMS 2.0 import utility provides extensive error checking.
The AMS database administrator may select any one of the available import files for processing. Importing records into AMS 2.0 is a two-pass process. If any errors are detected on the first pass, no records will be posted.
The data import facility offers the following conveniences:
Comprehensive Input Validation
All imported records are validated as though they were being entered manually.
Import Record Layout Specifications are Explicit
If an formatting error is detected in the input text stream, the problem can be quickly isolated.
Optional Detailed Error Messages
Brief and verbose error message modes are supported.
Restart at N-th Record
The import process may be started at either the beginning of the import file or the n-th record.
This speeds up the process of recovering from errors.
Records are Inserted or Replaced
If a record is already on file, it will be replaced to facilitate accounting adjustments.
6. Flexible Reporting Features
"After listening to suggestions from AMS 1.0 users, it became obvious
that everyone's reporting requirements were different. We needed a dynamic reporting tool that
could bridge the gap between static reports and the changing needs of our user community."
-- Darryl Lycett, AMS Project Manager
Today, an AMS 2.0 user typically performs the following actions to display a report:
- Select the report type
- Select records to be included in the report. Any column of related tables can be used as selection criteria.
- If the report it property-specific, then select the property from the selection hit list.
- Browse the report, which begins with a summary of the selection criteria used.


6.1 Standard Reports Track Financial Performance
Site Business Plan
Everything a property manager needs to know about a given property and its financial goals for the current year.
Site Information Report
The geographic and organizational location of a given property.
Project Management Report
An organization chart of the Asset Management Group.
Financial Tracking Detail Report
Budget and actual revenue and expenses year-to-date by property.
Financial Tracking Summary Report
The sum of all budget and actual revenue and expenses year-to-date for one of more properties.
Budget Performance Report
This is actually four different reports that share the same name. Optionally, the budgets of two or three consecutive
years can be compared or the variance of budget vs. actual revenue and expenses are reported by property over any range
of months is reported. The report may be sorted either by property over revenue/expense category or by revenue/expense
category over property. The revenue and expense categories to be included in the report are user-defined.
6.2 Ad-hoc Report Builder Empowers Users
In addition to the standard reports listed above, users can maintain their own ad-hoc report definitions. The ad-hoc report
builder allows them to:
- Select any combination of AMS tables in addition to the property table
- Select any combination of columns from selected tables in addition to unique key columns
- Select sorting precedence
- Select consolidation levels for currency sub-totals
- Update or delete existing ad-hoc report definitions

7. Ease of System Maintenance Features
AMS 2.0 is designed to allow GASCO to perform many database administration tasks without the assistance of a programmer.
Their business is, thus, able to adapt quickly to new requirements without expensive software upgrades or down time.
7.1 Data Dictionary Enables the Business to Evolve Rapidly
- Table captions
- Column labels
- Column data entry hints
- Discrete values for encoded columns
- Encode column value descriptions
Field validation criteria is driven by ADO properties. As a result, the many database maintenance operations that
can be performed without the assistance of a programmer including adding a new column to an existing table.
7.2 The Same ASPs Browse and Maintain All Tables
We could expect AMS users to master different dialogs for browsing and maintaining each of its 19 tables.
Nor did we want to maintain 19 different sets of Active Server Pages. Thanks to ADO and our data dictionary,
we were able to provide one simple dialog for all tables supported by one set of ASPs.

7.3 How Security is Administered

Access to AMS 2.0 is authorized by user IDs and passwords maintained in the AMS Employee table. After a successful login,
the functions and data that a user can access is determined by their job function, also recorded in the Employee table.
The Employee table is maintained by the AMS Database Administrator.
AMS 2.0 functions are dynamically enabled/disabled depending on the User’s relationship to the specific property that
they are trying to access. By only presenting options that are authorized, AMS 2.0 spares its users the feeling of being denied.
For accountability, AMS records the last login date of each user session and displays the full name of the user in the
status bar that appears at the bottom of each screen.
8. Platform and Development Tools
Server
Microsoft Internet Information Server (IIS) 3.0) with Active Server Pages and Scripting Engine 3.1 supported by Windows NT 4.0 Server SP3
running on a Compaq Proliant computer with dual 300 MHz Pentium CPUs and 512 MB RAM.
(This production server was over-configured to allow for future expansion. The test server had a single 200MHz Pentium CPU with 128MB RAM.)
Database Management Systems
Microsoft Access 97 was used for schema prototyping. Microsoft SQL Server 6.5 SP4 was used after the data was converted from Oracle 7.2
ODBC Drivers
Microsoft MDAC 1.5 ODBC drivers for SQL Server and Oracle. ActiveX Data Object (ADO) properties that were essential to the AMS 2.0
hit list page were not supported by Oracle's then current ODBC driver.
Client
Netscape 3.0 or Microsoft Internet Explorer 3.02 or better supported by Microsoft Windows 95 for all client Intel-based
PCs having 32MB RAM and Pentium 133 or better.
Application Languages
VBScript for most application programming, HTML for the GUI, JAVA for the tree control,
JavaScript for some client-side input validation, ANSI-standard SQL for database queries and view definitions,
Microsoft Transact-SQL for SQL Server trigger procedures.