wiki:mfpl_data_model

What's MFPL's system for managing members and accounts?

When we started the organization, CPanel was the dominant system for managing hosts. Since it was non-free and quite expensive, we looked for free software alternatives and found nothing that was up for the task. In particular, we were looking for a system that was modifiable to meet our exact needs. As a result - we built our own system.

Data Model

The data model goes something like this:

A member is the core unit. A member can have many contacts (currently used primarily for billing purposes). In addition, a member can have many hosting orders. A hosting order is the unit representing a single instance of the core hosting services people typically need: a web site, multiple users, email accounts, email lists, etc. Sometimes a member wants more than one hosting order - such as a hosting order for their primary web site and another hosting order for a special campaign they are running. Since the campaign may have different people involved, setting up a separate hosting order allows them no only to have a different domain with a different web site, but even different permission models.

Reflecting our old thinking - invoices are attached to hosting orders. Our current thinking would instead attach invoices to the member - since a member only pays one membership. This re-design would be a good refactoring project.

The applications

The applications used to manage this system grew organically and have some overlapping names making things a little confusing.

There is one database, named seso.

In addition, there is a Basebuilder installation that provides a web-front end to seso, which is also commonly referred to seso. Seso (basebuilder) is used to create new Members and new hosting orders and manage the invoices and payments. The seso (basebuilder) database was created early on because we immediately needed a system for managing members and payments.

Red (aka the Members Control panel) is another front-end to seso that is designed to be used by members. This front-end was designed after seso. It controls adding services to hosting orders (web configurations, new users, etc.).

Another front-end is the collector. The collector is a command line script that runs via a cron job to generate new invoices and send reminders to people who haven't paid their invoices.

The last piece is: sesolibs. These are a collection of libraries shared by the collector and the seso (basebuilder) database. They handle the complex logic of how to generate new invoices and determine whether people have paid or not.

Last modified 12 years ago Last modified on Sep 25, 2007, 11:03:14 AM