ofbiz technical overview
apache ofbiz


3. major application components

3.1 common data

the common data in the system includes entities such as geographic boundaries, units of measure, status codes, enumerations, and so forth. most of this data is seed data that is imported when the system is installed and generally needs very few changes over time. geographic boundary and other applicable seed data is based on iso and other standards.

3.2 content

the content entities are used to track data resources and structure them into general content and knowledge. they include many concepts such as: a separation of information and organization allowing a data resource to be used in many content structures; flexible organization of content including free-from association in graphs or more constrained organization in trees, lists, named maps, templates, etc; the specification of meta-data for content and data resources that can be used to implicitly organize and explicitly describe the information. Individual pieces of content can be in various text and binary formats described by standard mime types and character encodings.

once general maintenance tools for this information are in place more advanced tools such as keyword based, meta-data based, and intelligent searching or text mining to automatically create additional structure or meta-data can be used to enable enterprise wide document and knowledge management.

the content entities also include information about web-based content such as pages and interaction with content including visits to a site (or application) and information about every request sent to the site. this is useful for tracking what users are doing with an application for security, marketing, usability and other reasons.

3.3 security

the security entities are used to control access to various parts of the system and include user login accounts, login audit data, permission data, and so forth. additional more restrictive security is accomplished through the party entities and the association of parties to various other data in specific roles. for instance one user might have a permission to view and modify all product data where another user only has permission to view and modify the product data if the user is associated as a merchandiser with a category that the product is in.

3.4 party

a party can be either a person, or a group of parties. a party group could be a company, an organization within the company, a supplier, a customer, and so forth. information that describes parties or is directly related to parties is contained in these entities.

one type of related data is contact mechanisms such as postal addresses, phone numbers, email addresses, internet urls. another is roles that the party acts in such as customer, supplier, employee, manager, merchandiser, etc. generally a single party will interact with different parts of the system in many different roles.

another type of data that fits into the party category is information about communication and agreements between parties. this gets into the area of relationship management and also includes information about issues or trouble tickets that a party may have. these entities are used along with the work effort entities to plan and track the research and resolution of such issues.

3.5 product

the product entities contain information about products that are for sale or for use within a company. products can be goods or services and there are various types of goods including raw materials, sub-assemblies and finished goods. product information includes descriptive information about the products but is not used for describing actual instances (where applicable) or physical goods, that is where inventory items come into play. an inventory item contains information about where a particular good is located, the status of the item, and a serial number for serialized items or quantity on hand and available to promise amounts for non-serialized inventory.

products can be organized into product categories. a single product can be a member of multiple categories and even categories themselves can be children of multiple categories and can have multiple child categories. products can also be associated with one another to designate concepts such as variants, cross-sells, up-sells, marketing packages, etc.

categories can be associated with different catalogs. a product catalog is essentially a starting point for all information about a particular set of products to be sold. promotions and inventory management options are associated with each catalog so that different sales channels can behave differently even with the same set of underlying products.

to flexibly model different types of features that products often have there are entities for defining types of features and actual features that can be applied to products. for instance, you might say that this shirt is a size large and is a blue colored shirt. Size and color are types of features and large and blue are actual features applied to the specific shirt product.

multiple prices can be associated with a single product, as can multiple costs. different prices can be specified for different currencies, different sets of facilities (or stores), and for different date ranges.

this is a good place to introduce the wide-spread use of effective dating in ofbiz. there are two fields commonly used to express effective dates: fromDate and thruDate. In the product price example the fromDate and thruDate are used to denote that a price goes into effect on a certain date and at a certain time and expires at a certain date and time. this can be used to keep a history of price changes, and to effectively manage temporary promotional prices.

in addition to explicitly specifying prices there are also entities and logic that uses the entities to have rules about prices. for instance you could create a rule that is in effect for a certain time period that puts all of the products in a certain category on sale. or, you could give special prices to specific customers or groups of customers with a simple rule.

3.6 order

the order entities are used to manage information about sales and purchase orders and information leading up to an order. For example a request for a specific product or feature may be submitted by a customer and that would be tracked by the request entities in the order package.

the request can be tracked and turned into a requirement which can be used to create a work effort (a task, for instance; see the work effort section below) to be created that will satisfy the requirement and fulfill the request. once a requirement is made a quote can be produced which if accepted by the customer can be used to create an order. once an order is fulfilled an invoice can be created from the order. invoices are part of the accounting entity package described below.

orders consist of an order header and any number of order line items and adjustments that describe the detail of the order. there are various pieces of information related to an order that can be associated with either the header or an individual or multiple line items of an order. examples include the shipping destination and shipping preferences of an order which may be the same for all line items, or may be different for each one.

adjustments are used to contain information about things that change the price of an order that are not actual goods or services sold or purchased. examples include taxes, shipping, discounts, surcharges, and so forth. an adjustment can be either a flat amount, a flat amount per quantity, or a percentage of the subtotal of the entire order or the line item it is associated with. tax and shipping are handled as special cases and each adjustment can specify whether or not it should be included in the sub-total for tax and/or the sub-total for shipping.

payment preferences can be tracked as an order is created to automate payment once an invoice is created. this is especially useful for payment by credit card or other electronic means. if no payment preferences are specified then a standard invoicing and billing process can be used.

3.7 facility

a Facility is a building or other physical location. examples include warehouses, stores, office buildings, individual rooms in a larger facility, loading docks, et cetera. generally a facility will have contact mechanisms associated with it such as a postal address or a phone number.

facilities can be grouped into facility groups which in turn can be contained in other facility groups. examples of groups include store chains, districts, regions, and special groups used for marketing or the pricing of products. inventory Items can be associated with a facility and even a specific location within a facility. facility locations can be tracked and managed independently of the inventory Items they contain for easy management of warehouse spaces and easy location of specific inventory items.

parties can be associated with facilities to represent where a person works, which organization controls or operates the facility, who manages the facility, et cetera.

3.8 shipment

the shipment entities are used to track incoming and outgoing shipments and to issue items from inventory or receive items into inventory.

a shipment consists of multiple shipment Items each of which, like an order item, represents a certain quantity of a specific product. when shipments are received they can be reconciled with a purchase order and that information is tracked in the shipment peceipt entity.

when an inventory item is issued for an outgoing shipment it is associated with a pick list that can be prepared from multiple Shipments to more efficiently route the picking path in the warehouse or other facility.

shipment packages can be created which represent a single box or shipping unit. a single box can contain multiple shipment items, even items from different shipments assuming that they are going to the same destination.

the shipment route entities are used to split up a shipment's journey into multiple route segments. one route segment for a shipment could be a commercial carrier while another could be a private carrier or a company
owned truck.

3.9 accounting

the accounting entities are organized according to age old and generally accepted principles such as double-entry accounting, a general ledger with hierarchical accounts, journals and posting of transactions and corresponding entries. the structure is primarily based on the omg gl standard and the work that was done on an ar/ap extension of the omg gl standard. this correlates well with other standards such as ebxml and oagis. the accounting entities are structured such that accounts for multiple organizations can be managed.

the multiple organizations could be multiple companies, or departments or other organizations within a company. each organization can have various gl accounts associated with it so that it can operate with its own subset of the master chart of accounts. each organization can also have its own set of journals for flexibility, even though he use of journals should be as minimal as possible in favor of allowing the system to automatically create and ost transactions based on business events triggered by standard procedures and documents such as purchase and sales orders, invoices, inventory transfers, payments, receipts, and so forth.

there are also entities in place for budgeting and the reconciliation of budgets against actual gl account balances for a specific fiscal period. oh yeah, there are also entities used to track custom fiscal periods and other entities to keep summary results for accounts in specific periods.

entities to track fixed assets are also part of the accounting entity package. this includes depreciation information in addition to maintenance, scheduling of fixed assets (along with the work effort entities), and so forth.

3.10 marketing

the marketing entities are used to track information about marketing campaigns and related information such as contact lists (mailing, email, or calling lists) and tracking codes. tracking codes are primarily used in automated systems to keep track of where a customer came from and can be used for commission purposes in addition to analyzing the effectiveness of specific marketing campaigns including advertisements, partnerships or affiliations, and so forth.

3.11 manufacturing

ofbiz offers the full fledged manufacturing process through its manufacturing module as a product is manufactured by performing a pre-defined series of steps. In ofbiz, “bom (bill of material)” can be created defining the components required to produce a finished good, a "routing," composed of a series of tasks or "routingtasks," is used to define the steps necessary to manufacture a product. using these steps "production run" is generated which is an actual run of the production processes. in ofbiz, "routings", "routing tasks", "production runs" are all stored as "workeffort".

3.12 Human Resources

The Human Resources entities are used to keep track of positions, responsibilities, skills, employment, termination, benefits, training, pay grades and payroll preferences, performance reviews, resumes and applications, and other Human Resources related information.