I'm writing this to start a thread to discuss: If you could change ANYTHING in the OFBiz data model, what would it be?
To kick this off here are some ideas I've compiled that have come up over the years (many based on feedback from people on this mailing list), or that I thought of recently will working on this topic. You can see them below... -David ======================================================== - Rename *Role entities to *Party - Remove *Attribute and *TypeAttr entities (not generally a good practice to use) - Remove all status history (*Status) and just using audit on the statusId field - ProductPrice add quantity breaks, change PK to single field sequenced - Get rid of QuantityBreak and use the two simple fields instead in each place used - Get rid of ProdCatalog*, rework it to ProductStoreCategory, ie directly associate to the store - Change OrderItemShipGrpInvRes to InventoryReservation, change PK to single field sequenced - Change Quote to be other types of Order - Make Return more like Invoice (ie no adjustment, just use items for everything) - Instead of OrderItemType, OrderAdjustmentType, InvoiceItemType, ReturnItemType just use Shared ItemType everywhere - PartyRelationship simplify (single sequenced ID) - Make prefixes consistent (no suffixes), ie toPartyId instead of partyIdTo, etc - Change all relationships to PartyRole to be type one-nofk; use plain one for Party and RoleType - Move most *Type entities to Enumeration values (update seed data, referring entities, remove *Type) (after this remove all remaining hasTable fields) - Rework PhysicalInventory and InventoryVariance to simplify, reduce dependency on InventoryItem - Review use of Appl, Assoc (look at book, make sure consistent) - Add PartyIdentification entity, get rid of various fields and other entities (maybe even PartyTaxAuthority...) - Change GoodIdentification to ProductIdentification - Combine PartyContactMechPurpose and PartyContactMech (remove, only use entity with purpose, name PartyContactMech) - Get rid of NoteData, put noteText very-long field directly on various *Note entities - Review all entities with large PKs (esp 4+ fields) - Review and do something with all createOn/By lastUpdateOn/By fields, maybe add an auditing flag for the entity instead of just for a field - CustRequest to Request - FinAccount to FinancialAccount - Invoice handle recurrence? (was using RecurrenceInfo) - Get rid of optional ProductFeature concept (conf/etc products much better model) - Instead of various *Term entities and mapping, just use OrderTerm everywhere - Cleanup/reorg ShipmentCostEstimate, CarrierShipmentMethod, etc, etc - Agreement - make price list easier/cleaner - Remove all createdDate, createdByUserLogin, lastModifiedDate, lastModifiedByUserLogin fields (use framework defaults, audit-log) - Product clean up: move dimenstions to new entity, remove content fields, etc - Trim down big entities like Product, WorkEffort, etc; for groups of similar fields use a more normalized structure