Digging into the Customer Extranet

Posted: 6/25/2009 4:39:46 PM
After drawing out details of the customer extranet on the white board, it gets easier to visualize the system.
So I drew out some of the items from the Situational Application Brainstorm for the Customer Extranet. Here's the white board drawing for it. Click for the high res version:

What I've done is list some of the things from the brainstorm in blue above the properties for those items. The red arrows are drawn toward properties that are actually other things. For example, when creating a new Project, that project will be assigned to, or created under, a particular Customer.

To get started creating the Customer Extranet, I go to the Create Tables menu in my fresh Qrimp app:


I'm going to start creating my tables in order of hierarchy. What I mean by that is that I want to create tables that have no pick lists first. For example, the customer table doesn't depend on any other tables, but projects does, so in order to add a pick from customers from the projects table to the customers table, the customers table needs to exist. If I create the Projects table first, then I'll need to add the pick from to the customers table after the fact, which will be an additional step. It's okay if you create some out of order, but I like to do it this way.

Customer Table




In the image above, you can see how I've selected to create my customer table. I've added a contact email and phone number, where in the white board diagram above, I only had one property for contact.

When I click the create table button I'm taken straight to the Add Customer form and can begin populating customers into my database. I'm not ready to do this yet, so I'll continue creating the other tables needed for my customer extranet.


Project Table



Here in the project table, I've decided to add a description field that will represent the requirements. We should focus on keeping the application simple and because most people understand what a description is, more than a brainstorm, I'll use the name description.

When I create the table, Qrimp adds this form to my app automatically, just like for the customers table.



Iterations Table


As I've begun building this system out, I've realized that Iterations should have a project field. You won't see it on the white board drawing, but I'll add it here when I create the Iterations table.



Tasks Table


I've also thought more about the concepts of Problems, Work Items, Bugs, Issues, and realized all of these are really Tasks. All of these things are talking about work that needs to be done. If there is a bug, the bug needs to be fixed. Problems need to be resolved, issues, need to be clarified or resolved as well. All of these things are related to an Iteration, so I will create my Tasks table with a pickfrom iterations. This will make it easy to create new tasks and assign them to iterations in the past or future and figure out what to do with them as they are created.

I've combined many of the properties of WorkItems and Problems into this table and given it a TaskType field. This field is a single line text field, I'm not sure how many different types of tasks there may be in the future, but I can easily convert this field to a pick from once I've entered some Tasks.




Invoices Table




Payments Table




Line Item Table




Next Steps


That's all for this installment of the series. Now that our application is created, we can start adding information to each of the tables. There are still some steps to modify security.

In further installments, I'll configure security so that we can create new customers for our Extranet and allow them to log in and see their projects and invoices. We'll also want to allow them to add issues to the project so we can keep track of any new items. We can add those ourselves as well. We'll probably also want to be able to quickly add a line item to our invoices directly from a task so that the customers can see how much things cost and why they are being billed.

The important part of information mangement is actually creating the system to input the data and keep track of it. Qrimp makes it easy to do this and also modify the application moving forward. It's very agile. We can continue enhancing and modifying the application to do virtually anything a web app can do using standard web technologies all from the browser.

As I use the customer extranet with our existing customers, I'll find things I want to add and ways to make the app easier to use. I'll use this example to show you some tips and tricks in the future.