Last Updated 20230712
Setup OFBiz Features and Assign to Categories and Products
OFBiz Features are like product options. You purchase a belt in Black, Red or Olive Drab. You can also purchase that belt in size 28, 30, 32, 36, 38, etc... Color and size would be KEYWORD here "Selectable" feature. The Airlock Belt part number 40-01-0200 on your website is a virtual product that you don't keep inventory for. The variant belts that you do keep inventory for are are 40-01-0200-BLK-S36. Associating Features with a Category alows you to select all belts in Red from a drop down menu. Associating KEYWORD here Distinguishing Features with a product allows you to automatically generate all the Red belts in size 28, 30, 32, 36, etc... and then go on to generate all the Black belts in size 28, 30, 32, etc...
For this exercise we are going to set color and size for a belt.
Select Catalog
Select Features
Click
Feature Type
Out of the Box "OOTB" OFBiz names many features you might want to use in your system. Color and Size are just a few that are easy to show.
Select Catalog
Select Features
Click
New Feature Category
Type Description
RS_COLOR
Note: Stands for Ruffian Specialties Color
Click
Submit
Type 3
Click Create
Note: This will add 3 rows so we can add the colors Black, Red, and Olive Drab. If you have more colors add more rows. You could have 100 color combinations across your product line. For instance Ruffian has BLK/BLK, RED/BLK, NAT/BLK. All color combinations could be part of this record. We will select a subset of these colors to work with products.
Enter Black, Olive Drab, Red in Description
The light and dark yellow lines with the blue and white checkboxes on the end means that when you click Create all those rows will be updated in the repective tables.
Select Color for Feature Type
ID Seq Num is for custom sorts. It might be wise to enter numeric values of 10, 20, 30 etc... This will make it easier to add additional colors at a later date.
ID Code is how a variant part number will be created. Let's say the Airlock Belt is part number 40-01-0200-BLK for black and 40-01-0200-RED for red etc...
Click
Create
Completed New Feature Category
Note: Find definition of
Unit of Measure ID
Quantity
Amount
Abbrev
Click
New Feature Category
Note: Forgot to capture screen but Type
RS_SIZE
Click Create
Type
5
Click
Create
Enter belt size in Description
Select Size from Feature Type
Set the ID Seq Num for proper sorting
Set ID Code for how the variant part number should look.
Click all the blue checkboxes and then
Click
Create
Click
Feature Group
Type
RS_BELTS
Click
Create
Click
10000
Select RS_COLOR
Click
Continue
Select
Blue Checkboxes
Click
Submit
Select
RS_SIZE
Click
Continue
Select
Blue Checkboxes
Click
Submit
We want the belts to sort correctly. Let's set the color order first and the size second.
Click
Update
Finished with our OFBiz Feature Group
Let's create our Catalog and Categories
Click
Catalogs
Notes: Feature Category naming conventions needs some thought. Creation via New Feature Category assigns a numeric value like 10000 for RS_Color. If you go to Feature Interaction you will see Black[10000] but you don't know what 10000 is. Just like if your looking at Feature InterAction 30[10004] do you really know that is a size 30? If you have thousands of features this might be to convoluted.
Advanced Tip
Import data with the Web Tools as detailed in OFBiz Facility Setup .
In order to have more control over productID's and play around with different options, I have created some imports. Makes' it easier to try and change stuff.
<entity-engine-xml>
<ProductFeatureCategory productFeatureCategoryId="RS_COLOR" description="RS Color"/>
<ProductFeatureType productFeatureTypeId="RS_COLOR" description="Color"/>
<ProductFeature productFeatureId="RS_COLOR_BGE" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Beige" defaultSequenceNum="1100" idCode="BGE" abbrev="BGE" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_BLK" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Black" defaultSequenceNum="1110" idCode="BLK" abbrev="BLK" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_BLK/BLK" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Black / Black" defaultSequenceNum="1120" idCode="BLKBLK" abbrev="BLKBLK" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_BLU" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Blue" defaultSequenceNum="1130" idCode="BLU" abbrev="BLU" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_BRN" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Brown" defaultSequenceNum="1140" idCode="BRN" abbrev="BRN" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_BUR" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Burgundy" defaultSequenceNum="1150" idCode="BUR" abbrev="BUR" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_FGRN" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Forest Green" defaultSequenceNum="1160" idCode="FGRN" abbrev="FGRN" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_FGRN/BLK" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Forest Green / Black" defaultSequenceNum="1170" idCode="FGRNBLK" abbrev="FGRNBLK" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_GRN" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Green" defaultSequenceNum="1180" idCode="GRN" abbrev="GRN" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_GRN/BLK" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Green / Black" defaultSequenceNum="1190" idCode="GRNBLK" abbrev="GRNBLK" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_GRY" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Grey" defaultSequenceNum="1200" idCode="GRY" abbrev="GRY" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_INTORG" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="International Orange" defaultSequenceNum="1210" idCode="INTORG" abbrev="INTORG" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_LIN" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Linen" defaultSequenceNum="1220" idCode="LIN" abbrev="LIN" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_LIN/BLK" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Linen / Black" defaultSequenceNum="1230" idCode="LINBLK" abbrev="LINBLK" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_NAT" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Natural" defaultSequenceNum="1240" idCode="NAT" abbrev="NAT" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_NAT/BGE" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Natural / Beige" defaultSequenceNum="1250" idCode="NATBGE" abbrev="NATBGE" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_NAT/BLK" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Natural / Black" defaultSequenceNum="1260" idCode="NATBLK" abbrev="NATBLK" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_NBLU" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Navy Blue" defaultSequenceNum="1270" idCode="NBLU" abbrev="NBLU" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_NBLU/BLK" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Navy Blue / Black" defaultSequenceNum="1280" idCode="NBLUBLK" abbrev="NBLUBLK" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_OLVDRB" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Olive Drab" defaultSequenceNum="1290" idCode="OLVDRB" abbrev="OLVDRB" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_ORG" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Orange" defaultSequenceNum="1300" idCode="ORG" abbrev="ORG" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_RBLU" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Royal Blue" defaultSequenceNum="1310" idCode="RBLU" abbrev="RBLU" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_RBLU/BGE" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Royal Blue / Beige" defaultSequenceNum="1320" idCode="RBLUBGE" abbrev="RBLUBGE" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_RBLU/BLK" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Royal Blue / Black" defaultSequenceNum="1330" idCode="RBLUBLK" abbrev="RBLUBLK" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_RED" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Red" defaultSequenceNum="1340" idCode="RED" abbrev="RED" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_RED/BGE" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Red / Beige" defaultSequenceNum="1350" idCode="REDBGE" abbrev="REDBGE" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_RED/BLK" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Red / Black" defaultSequenceNum="1360" idCode="REDBLK" abbrev="REDBLK" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_SIL" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Silver" defaultSequenceNum="1370" idCode="SIL" abbrev="SIL" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_WHT" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="White" defaultSequenceNum="1380" idCode="WHT" abbrev="WHT" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_COLOR_YEL" productFeatureTypeId="RS_COLOR" productFeatureCategoryId="RS_COLOR" description="Yellow" defaultSequenceNum="1390" idCode="YEL" abbrev="YEL" defaultAmount="0.00"/>
</entity-engine-xml>
<entity-engine-xml>
<ProductFeatureCategory productFeatureCategoryId="RS_SIZE" description="RS Size"/>
<ProductFeatureType productFeatureTypeId="RS_SIZE" description="Size"/>
<ProductFeature productFeatureId="RS_SIZE_24" productFeatureTypeId="RS_SIZE" productFeatureCategoryId="RS_SIZE" description="24" defaultSequenceNum="1100" idCode="S24" abbrev="24" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_SIZE_26" productFeatureTypeId="RS_SIZE" productFeatureCategoryId="RS_SIZE" description="26" defaultSequenceNum="1110" idCode="S26" abbrev="26" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_SIZE_28" productFeatureTypeId="RS_SIZE" productFeatureCategoryId="RS_SIZE" description="28" defaultSequenceNum="1120" idCode="S28" abbrev="28" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_SIZE_30" productFeatureTypeId="RS_SIZE" productFeatureCategoryId="RS_SIZE" description="30" defaultSequenceNum="1130" idCode="S30" abbrev="30" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_SIZE_32" productFeatureTypeId="RS_SIZE" productFeatureCategoryId="RS_SIZE" description="32" defaultSequenceNum="1140" idCode="S32" abbrev="32" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_SIZE_34" productFeatureTypeId="RS_SIZE" productFeatureCategoryId="RS_SIZE" description="34" defaultSequenceNum="1150" idCode="S34" abbrev="34" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_SIZE_36" productFeatureTypeId="RS_SIZE" productFeatureCategoryId="RS_SIZE" description="36" defaultSequenceNum="1160" idCode="S36" abbrev="36" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_SIZE_38" productFeatureTypeId="RS_SIZE" productFeatureCategoryId="RS_SIZE" description="38" defaultSequenceNum="1170" idCode="S38" abbrev="38" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_SIZE_40" productFeatureTypeId="RS_SIZE" productFeatureCategoryId="RS_SIZE" description="40" defaultSequenceNum="1180" idCode="S40" abbrev="40" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_SIZE_42" productFeatureTypeId="RS_SIZE" productFeatureCategoryId="RS_SIZE" description="42" defaultSequenceNum="1190" idCode="S42" abbrev="42" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_SIZE_44" productFeatureTypeId="RS_SIZE" productFeatureCategoryId="RS_SIZE" description="44" defaultSequenceNum="1200" idCode="S44" abbrev="44" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_SIZE_46" productFeatureTypeId="RS_SIZE" productFeatureCategoryId="RS_SIZE" description="46" defaultSequenceNum="1210" idCode="S46" abbrev="46" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_SIZE_48" productFeatureTypeId="RS_SIZE" productFeatureCategoryId="RS_SIZE" description="48" defaultSequenceNum="1220" idCode="S48" abbrev="48" defaultAmount="0.00"/>
</entity-engine-xml>
<entity-engine-xml>
<ProductFeatureCategory productFeatureCategoryId="RS_BELT_VELCRO" description="RS Belt Velcro"/>
<ProductFeatureType productFeatureTypeId="RS_BELT_VELCRO" description="Velcro Location"/>
<ProductFeature productFeatureId="RS_BELT_VELCRO_OUT" productFeatureTypeId="RS_BELT_VELCRO" productFeatureCategoryId="RS_BELT_VELCRO" description="Velcro Outside Standard" defaultSequenceNum="1100" idCode="VOT" abbrev="VOT" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_BELT_VELCRO_IN" productFeatureTypeId="RS_BELT_VELCRO" productFeatureCategoryId="RS_BELT_VELCRO" description="Velcro Inside Custom" defaultSequenceNum="1120" idCode="VIN" abbrev="VIN" defaultAmount="7.95"/>
</entity-engine-xml>
<entity-engine-xml>
<ProductFeatureCategory productFeatureCategoryId="RS_BELT_DRING" description="RS Belt D Ring"/>
<ProductFeatureType productFeatureTypeId="RS_BELT_DRING" description="D Ring Option"/>
<ProductFeature productFeatureId="RS_BELT_DRING_NO" productFeatureTypeId="RS_BELT_DRING" productFeatureCategoryId="RS_BELT_DRING" description="D Ring=No Standard" defaultSequenceNum="1120" idCode="DRN" abbrev="DRN" defaultAmount="0.00"/>
<ProductFeature productFeatureId="RS_BELT_DRING_YES" productFeatureTypeId="RS_BELT_DRING" productFeatureCategoryId="RS_BELT_DRING" description="D Ring=Yes Custom" defaultSequenceNum="1120" idCode="DRY" abbrev="DRY" defaultAmount="7.20"/>
</entity-engine-xml>
<entity-engine-xml>
<ProductFeatureGroup productFeatureGroupId="RS_FEATGP_AIRLOCK" description="RS Feature Group Airlock Belts"/>
</entity-engine-xml>
I think it is easier to create the Feature Group details just by selecting from the application. For you programmers with a paying job please have at it.
Select Catalog
Select Features
Select Feature Group
Click on RS_FEATGP_AIRLOCK
Select RS Color from the DropDown
Click Continue
Select 50 Items per page
Select Black Checkbox
Select Olive Drab Checkbox
Select Red Checkbox
Click Submit
Set Sequence Number for Sorting.
I am going to group Sequence Number by 1000, 2000, 3000, & 4000 as will be seen in the following screens.
Click Update
Select RS Size from Drop Down
Click Continue
Click on Select All Checkbox
Click Submit
Update Sequence Num with 2000 sort id's
Click Update
Notice Sort Order
Select RS Belt Velcro from Dropdown
Select All
Click Submit
Do this for Belt Velcro
Do this for Belt D Ring
It will look like this screen.