Changes between Initial Version and Version 1 of mfpl_data_model

Sep 25, 2007, 11:03:14 AM (14 years ago)
Jamie McClelland



  • mfpl_data_model

    v1 v1  
     1== What's MFPL's system for managing members and accounts? ==
     3When 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.
     5=== Data Model ===
     7The data model goes something like this:
     9A 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.
     11Reflecting 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.
     13=== The applications ===
     15The applications used to manage this system grew organically and have some overlapping names making things a little confusing.
     17There is one database, named seso.
     19In 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.
     21Red (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.).
     23Another 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.
     25The 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.