3.1 to 3.2 Migration

Inventory Management

The quantity available field on BLC_SKU as well as the CheckAvailabilityActivity and DecrementInventoryActivity have been added to the framework out of the box. If you have performed any of the steps from the 3.1.0 to 3.1.1 migration doc then you should undo them.

Page Field Data

The relationship of Pages to their PageFields has been changed from a ManyToMany to a OneToMany, with the owning column on blc_page_fld. This means that blc_page_fld_map has gone away and will no longer be used. To update your data, you can at your own risk run the following query:

UPDATE blc_page_fld f SET page_id = (SELECT page_id FROM blc_page_fld_map m WHERE m.page_fld_id = f.page_fld_id)

Country and State Changes

In order to better internationalize the Broadleaf domain, there have been changes in the way BLC_COUNTRY and BLC_STATE are used.
For one, BLC_STATE is deprecated in favor of BLC_COUNTRY_SUB

The CountrySubdivision entity is a more international friendly entity that define codes for identifying the principal subdivisions (e.g., provinces or states)
for a Country. A Country Subdivision can also have a category defined in BLC_COUNTRY_SUB_CAT.
The Country Subdivision Category is meant to define the type of subdivision, for example: "State", "Province", "Municipality", "Borough", etc...
The load_code_tables.sql script provided in the Heat Clinic DemoSite application gives a list of some of the most common and widely used subdivision categories by the ISO

Changes in use

In the past, Country and States were tied to an Address. However, this is not an ideal model if you would also like to restrict
the countries that you wish to ship to based on this entity. For example, let's say you only wish
to ship to the "US" and "Mexico". In the past, you would populate the BLC_COUNTRY table
with only the "US" and "Mexico." However, you would need to make customizations if you allow your customers
to pay with a billing address in a country other than "US" or "Mexico" since an address is tied to a Country.

To overcome this, the tie between Countries and Addresses have been removed.
More details about the changes to Address and how it now uses the ISO Country model are in the sections below.

In summary, going forward: The BLC_COUNTRY and BLC_COUNTRY_SUB tables should only be used for filtering and look up purposes only and since the State entity is deprecated, BLC_STATE should no longer be used.

i18n Addresses

The Address domain has been refactored to allow for better internationalization.
In BLC_ADDRESS, the state_prov_region and the country columns have been deprecated.
The foreign key for country has also been dropped. The Country entity should
only be used for filtering and lookup purposes now (see section above). These columns will be replaced with
the following:

  • iso_country_alpha2 - a reference to an ISOCountry (i.e. the ISO 3166-1 alpha-2 code for the country where this address resides) (e.g. US, GB, IN)
  • iso_country_sub - meant to signify the ISO 3166-2 code for the country subdivision (state/region/province) where this address resides. (e.g. US-TX, GB-LND, IN-DL)
  • sub_state_prov_reg - a friendly name indicating a countries subdivision, i.e. State, Province, Region etc.. (e.g. Texas, London, Delhi)

ISO Country

Broadleaf adds a new entity called ISOCountry BLC_ISO_COUNTRY that represents the ISO 3166 standard published by the International Organization for Standardization (ISO),
and defines codes for the names of countries, dependent territories, and special areas of geographical interest.

It is recommended that you load this table with all the alpha-2 codes provided in the
DemoSite SQL script load_i18n_countries.sql

Better integration with Service Providers

These i18n enhancements also allow for better integration with Third Party Service Providers such as Digital Wallets and Payment Gateways.
When address information is managed outside of the system, this model aims to minimize data translation as most integrators conform to the ISO 3166-1 naming standard.
While most providers send back a standardized Country code, not all follow the same rules for Country subdivisions such as states, regions and provinces.
In this case, implementations should populate iso_country_sub or sub_state_prov_reg (preferably both)
based on business requirements and available data.