Data structures; Measure types - uktrade/tariff-data-manual GitHub Wiki

Measure types

What measure types are

Measure types tell border systems how to execute an action, such as charge a duty.

The data associated with a measure type explains what the measure is intended to do.

On top of that, HMRC carries out a significant amount of work to make measures behave as intended.

Any changes to measures or additions of new measures must be agreed by HMRC in advance. Measure types must be actively correlated to regulation group IDs by HMRC in CDS.

Measure type series

Each measure belongs to a single measure type. In turn, each measure type belongs to a single measure type series.

The measure type series stores extra information about the measure type and its behaviour.

The measure type series allows more than one way of overlaying measure types and duties via combination and exclusion.

Measure type combinations

The measure type combination field determines how many measure types of a given type series can be applied on a trader’s declaration at any time to the same context.

There are 2 options:

Option Description
0 Only 1 measure at export and 1 at import from the series
1 All measure types in the series to be considered

If the measure type combination is set to 0, it means a trader can only take advantage of one measure type from any given series.

It does not mean tariff managers can only set up a single measure type from each measure type series in the same context.

For example, the commodities 8802110010, 8802120010, 8802200010, 8802300010 and 8802400010 have 103 (Third country duty) and 105 (Non-preferential duty under end-use) applied to the same context.

It is possible for a trade agreement to feature both a tariff preference and a preferential quota on the same context (commodity code). A trader can only select one of these.

The measure type series identifies how different measures are applied alongside each other or overlaid. You cannot apply more than one measure from the same series, but more than one measure from different series can be overlaid.

For example, anti-dumping duties (series D) are overlaid on top of MFN duties (series C). The 2 co-exist, are additive and the trader does not need to choose one.

Existing measure type series

The following table shows how TARIC-based border systems apply the measures that DIT has supplied.

The alphabetical sequence of measure type series is the sequence in which CDS will look to implement the measures.

SELECT sid AS SID,
	measure_type_combination AS 'Measure Type Combination',
	description AS Description
FROM measure_type_series
    INNER JOIN common_version_groups
        ON measure_type_series.trackedmodel_ptr_id = common_version_groups.current_version_id
WHERE (measure_type_series.validity_end IS NULL OR measure_type_series.validity_end > DATE('now'))
ORDER BY sid

Any complete prohibitions are dealt with first. These are dealt with via measures of type series A (Importation and/or exportation prohibited). If there is a complete prohibition that applies to the specific circumstances of the trade, such as the combination of commodity and origin, the trade cannot continue.

If there is no complete prohibition on the trade, the second step is to work out if the trader has the necessary conditions in place, such as certification or licensing, to allow the trade to pass (type series B).

These 2 measure type series apply equally to imports and exports.

Thirdly, after application of the prohibitions and restrictions, measure type series C is checked (applicable duty).

Series C contains the MFN duties, tariff preferences, all the quotas and all the suspensions. The trader must select one.

Series D contains the anti-dumping and anti-subsidy duties. Of these, if more than one applies to a given context, then both apply. For example both an anti-subsidy and anti-dumping duty on the same code for the same company. The trader does not get to choose the lower.

Series E and F contain Meursing duties.

Series J is the countervailing charge series. The countervailing charge measure in this group is no longer used. This leaves 695 (additional duties) and 696 (additional duties (safeguard)). .

Series M features measure types associated with agricultural safeguards, not duties. For example, the standard import value and unit price.

N and O are not duty related. The next duty-bearing series are VAT and excise (series P and Q), which are applied over and above import duties.

Series S contains the additional duties required by agricultural safeguards in relation to chicken and other poultry goods. These are applied over and above any standard duty from series C.

Measure types per measure type series

The following table illustrates the measure types (per measure series) that have not been end-dated.

WITH live_measure_types AS (
	SELECT sid, measure_type_series_id
	FROM measure_types
        INNER JOIN common_version_groups	
		ON measure_types.trackedmodel_ptr_id = common_version_groups.current_version_id
	WHERE validity_end IS NULL OR validity_end > DATE('now')
	)
	
SELECT measure_type_series.sid AS SID,
	measure_type_series.description AS Description,
	group_concat(live_measure_types.sid, ', ') AS 'List of Active Measure Types',
	COUNT(live_measure_types.sid) AS 'Number of Active Measure Types'
FROM live_measure_types
    INNER JOIN common_tracked_models
        ON live_measure_types.measure_type_series_id = common_tracked_models.id
    INNER JOIN common_version_groups AS cvg1
        ON common_tracked_models.version_group_id = cvg1.id
    RIGHT OUTER JOIN measure_type_series
        ON cvg1.current_version_id = measure_type_series.trackedmodel_ptr_id
    INNER JOIN common_version_groups AS cvg2 ON measure_type_series.trackedmodel_ptr_id = cvg2.current_version_id
WHERE (measure_type_series.validity_end IS NULL OR measure_type_series.validity_end > DATE('now'))
GROUP BY live_measure_types.measure_type_series_id
ORDER BY sid

A - Importation and/or exportation prohibited

Measure types in this series implement certain regulations and polices relating to prohibitions and or restrictions on the import and export of goods. Read more on import and export controls

The below table indicates the active measure types in this series.

WITH live_measures AS (
	SELECT sid, measure_type_id
	FROM measures
	INNER JOIN common_version_groups	
		ON measures.trackedmodel_ptr_id = common_version_groups.current_version_id
	WHERE measures.validity_end IS NULL OR measures.validity_end > DATE('now')
	)
	
SELECT measure_types.sid AS SID,
	measure_types.description AS Description,
	COUNT(live_measures.sid) AS 'Number of Active Measures'
FROM measure_types
        INNER JOIN common_version_groups
            ON measure_types.trackedmodel_ptr_id = common_version_groups.current_version_id
LEFT OUTER JOIN live_measures ON live_measures.measure_type_id = measure_types.trackedmodel_ptr_id
	WHERE (measure_types.validity_end IS NULL OR measure_types.validity_end > DATE('now'))
	AND measure_types.measure_type_series_id = 186
GROUP BY live_measures.measure_type_id
ORDER BY sid

B - Entry into free circulation or exportation subject to conditions

Measure types in this series are used to implement conditions, typically the requirement for certification or licencing. These are used to implement policies realted to credibility checks and restrictions and prohibitions. Read more on import and export controls

The below table indicates the active measure types in this series

WITH live_measures AS (
	SELECT sid, measure_type_id
	FROM measures
	INNER JOIN common_version_groups	
		ON measures.trackedmodel_ptr_id = common_version_groups.current_version_id
	WHERE measures.validity_end IS NULL OR measures.validity_end > DATE('now')
	)
	
SELECT measure_types.sid AS SID,
	measure_types.description AS Description,
	COUNT(live_measures.sid) AS 'Number of Active Measures'
FROM measure_types
        INNER JOIN common_version_groups
            ON measure_types.trackedmodel_ptr_id = common_version_groups.current_version_id
LEFT OUTER JOIN live_measures ON live_measures.measure_type_id = measure_types.trackedmodel_ptr_id
	WHERE (measure_types.validity_end IS NULL OR measure_types.validity_end > DATE('now'))
	AND measure_types.measure_type_series_id = 68
GROUP BY live_measures.measure_type_id
ORDER BY sid

C - Applicable Duty

Measure types in this series are used to implement regulations relating to preferential and non-preferential duties, quotas and suspensions. read more on unilateral preferences, MFNs and trade agreements.

The below table indicates the active measure types in this series.

WITH live_measures AS (
	SELECT sid, measure_type_id
	FROM measures
	INNER JOIN common_version_groups	
		ON measures.trackedmodel_ptr_id = common_version_groups.current_version_id
	WHERE measures.validity_end IS NULL OR measures.validity_end > DATE('now')
	)
	
SELECT measure_types.sid AS SID,
	measure_types.description AS Description,
	COUNT(live_measures.sid) AS 'Number of Active Measures'
FROM measure_types
        INNER JOIN common_version_groups
            ON measure_types.trackedmodel_ptr_id = common_version_groups.current_version_id
LEFT OUTER JOIN live_measures ON live_measures.measure_type_id = measure_types.trackedmodel_ptr_id
	WHERE (measure_types.validity_end IS NULL OR measure_types.validity_end > DATE('now'))
	AND measure_types.measure_type_series_id = 157
GROUP BY live_measures.measure_type_id
ORDER BY sid

D - Anti-dumping or countervailing duties

Measure types in this series are used to implement regulations relating to various trade remedies relating to anti-dumping and countervailing duties. Read more about trade remedies.

The below table indicates the active measure types in this series.

WITH live_measures AS (
	SELECT sid, measure_type_id
	FROM measures
	INNER JOIN common_version_groups	
		ON measures.trackedmodel_ptr_id = common_version_groups.current_version_id
	WHERE measures.validity_end IS NULL OR measures.validity_end > DATE('now')
	)
	
SELECT measure_types.sid AS SID,
	measure_types.description AS Description,
	COUNT(live_measures.sid) AS 'Number of Active Measures'
FROM measure_types
        INNER JOIN common_version_groups
            ON measure_types.trackedmodel_ptr_id = common_version_groups.current_version_id
LEFT OUTER JOIN live_measures ON live_measures.measure_type_id = measure_types.trackedmodel_ptr_id
	WHERE (measure_types.validity_end IS NULL OR measure_types.validity_end > DATE('now'))
	AND measure_types.measure_type_series_id = 122
GROUP BY live_measures.measure_type_id
ORDER BY sid

E - Levies, export refunds and other agricultural amounts

Measure types in this series are used to implement Meursing duties on agricultural goods. Read more on agricultural instruments.

The below table indicates the active measure types in this series

WITH live_measures AS (
	SELECT sid, measure_type_id
	FROM measures
	INNER JOIN common_version_groups	
		ON measures.trackedmodel_ptr_id = common_version_groups.current_version_id
	WHERE measures.validity_end IS NULL OR measures.validity_end > DATE('now')
	)
	
SELECT measure_types.sid AS SID,
	measure_types.description AS Description,
	COUNT(live_measures.sid) AS 'Number of Active Measures'
FROM measure_types
        INNER JOIN common_version_groups
            ON measure_types.trackedmodel_ptr_id = common_version_groups.current_version_id
LEFT OUTER JOIN live_measures ON live_measures.measure_type_id = measure_types.trackedmodel_ptr_id
	WHERE (measure_types.validity_end IS NULL OR measure_types.validity_end > DATE('now'))
	AND measure_types.measure_type_series_id = 55
GROUP BY live_measures.measure_type_id
ORDER BY sid

F - Additional duty on sugar, flour

Measure types in this series are used to implement Meursing duties on sugar and flour. Read more on agricultural instruments.

The below table indicates the active measure types in this series

WITH live_measures AS (
	SELECT sid, measure_type_id
	FROM measures
	INNER JOIN common_version_groups	
		ON measures.trackedmodel_ptr_id = common_version_groups.current_version_id
	WHERE measures.validity_end IS NULL OR measures.validity_end > DATE('now')
	)
	
SELECT measure_types.sid AS SID,
	measure_types.description AS Description,
	COUNT(live_measures.sid) AS 'Number of Active Measures'
FROM measure_types
        INNER JOIN common_version_groups
            ON measure_types.trackedmodel_ptr_id = common_version_groups.current_version_id
LEFT OUTER JOIN live_measures ON live_measures.measure_type_id = measure_types.trackedmodel_ptr_id
	WHERE (measure_types.validity_end IS NULL OR measure_types.validity_end > DATE('now'))
	AND measure_types.measure_type_series_id = 102
GROUP BY live_measures.measure_type_id
ORDER BY sid

J - Countervailing charge

Measure types in this series are used to implement additional charges relating to safeguards and emergency regulations. read more on safeguards.

The below table indicates the active measure types in this series.

WITH live_measures AS (
	SELECT sid, measure_type_id
	FROM measures
	INNER JOIN common_version_groups	
		ON measures.trackedmodel_ptr_id = common_version_groups.current_version_id
	WHERE measures.validity_end IS NULL OR measures.validity_end > DATE('now')
	)
	
SELECT measure_types.sid AS SID,
	measure_types.description AS Description,
	COUNT(live_measures.sid) AS 'Number of Active Measures'
FROM measure_types
        INNER JOIN common_version_groups
            ON measure_types.trackedmodel_ptr_id = common_version_groups.current_version_id
LEFT OUTER JOIN live_measures ON live_measures.measure_type_id = measure_types.trackedmodel_ptr_id
	WHERE (measure_types.validity_end IS NULL OR measure_types.validity_end > DATE('now'))
	AND measure_types.measure_type_series_id = 33
GROUP BY live_measures.measure_type_id
ORDER BY sid

M - Unit price, standard import value, representative price (poultry, sugar)

Measure types in this series are used to implement regulations associated with agricultural safeguards. Read more on agricultural instruments.

The below table indicates the active measure types in this series.

WITH live_measures AS (
	SELECT sid, measure_type_id
	FROM measures
	INNER JOIN common_version_groups	
		ON measures.trackedmodel_ptr_id = common_version_groups.current_version_id
	WHERE measures.validity_end IS NULL OR measures.validity_end > DATE('now')
	)
	
SELECT measure_types.sid AS SID,
	measure_types.description AS Description,
	COUNT(live_measures.sid) AS 'Number of Active Measures'
FROM measure_types
        INNER JOIN common_version_groups
            ON measure_types.trackedmodel_ptr_id = common_version_groups.current_version_id
LEFT OUTER JOIN live_measures ON live_measures.measure_type_id = measure_types.trackedmodel_ptr_id
	WHERE (measure_types.validity_end IS NULL OR measure_types.validity_end > DATE('now'))
	AND measure_types.measure_type_series_id = 167
GROUP BY live_measures.measure_type_id
ORDER BY sid

N - Posterior surveillance

Measure types in this series are used to implement surveillance and monitoring regulations.

The below table indicates the active measure types in this series.

WITH live_measures AS (
	SELECT sid, measure_type_id
	FROM measures
	INNER JOIN common_version_groups	
		ON measures.trackedmodel_ptr_id = common_version_groups.current_version_id
	WHERE measures.validity_end IS NULL OR measures.validity_end > DATE('now')
	)
	
SELECT measure_types.sid AS SID,
	measure_types.description AS Description,
	COUNT(live_measures.sid) AS 'Number of Active Measures'
FROM measure_types
        INNER JOIN common_version_groups
            ON measure_types.trackedmodel_ptr_id = common_version_groups.current_version_id
LEFT OUTER JOIN live_measures ON live_measures.measure_type_id = measure_types.trackedmodel_ptr_id
	WHERE (measure_types.validity_end IS NULL OR measure_types.validity_end > DATE('now'))
	AND measure_types.measure_type_series_id = 13
GROUP BY live_measures.measure_type_id
ORDER BY sid

O - Supplementary unit

Measure types in this series are used to implement SAD guidance regulations. Read more on supplementary units.

The below table indicates the active measure types in this series.

WITH live_measures AS (
	SELECT sid, measure_type_id
	FROM measures
	INNER JOIN common_version_groups	
		ON measures.trackedmodel_ptr_id = common_version_groups.current_version_id
	WHERE measures.validity_end IS NULL OR measures.validity_end > DATE('now')
	)
	
SELECT measure_types.sid AS SID,
	measure_types.description AS Description,
	COUNT(live_measures.sid) AS 'Number of Active Measures'
FROM measure_types
        INNER JOIN common_version_groups
            ON measure_types.trackedmodel_ptr_id = common_version_groups.current_version_id
LEFT OUTER JOIN live_measures ON live_measures.measure_type_id = measure_types.trackedmodel_ptr_id
	WHERE (measure_types.validity_end IS NULL OR measure_types.validity_end > DATE('now'))
	AND measure_types.measure_type_series_id = 43
GROUP BY live_measures.measure_type_id
ORDER BY sid

P - VAT

Measure types in this series are used to implement VAT charges. Note that VAT charges are implemented by HMRC, and as such there are no VAT measures in the tariff database.

The below table indicates the active measure types in this series.

WITH live_measures AS (
	SELECT sid, measure_type_id
	FROM measures
	INNER JOIN common_version_groups	
		ON measures.trackedmodel_ptr_id = common_version_groups.current_version_id
	WHERE measures.validity_end IS NULL OR measures.validity_end > DATE('now')
	)
	
SELECT measure_types.sid AS SID,
	measure_types.description AS Description,
	COUNT(live_measures.sid) AS 'Number of Active Measures'
FROM measure_types
        INNER JOIN common_version_groups
            ON measure_types.trackedmodel_ptr_id = common_version_groups.current_version_id
LEFT OUTER JOIN live_measures ON live_measures.measure_type_id = measure_types.trackedmodel_ptr_id
	WHERE (measure_types.validity_end IS NULL OR measure_types.validity_end > DATE('now'))
	AND measure_types.measure_type_series_id = 4
GROUP BY live_measures.measure_type_id
ORDER BY sid

Q - Excises

Measure types in this series are used to implement excise duties. Note that excise charges are implemented by HMRC, and as such there are no excise measures in the tariff database.

The below table indicates the active measure types in this series.

WITH live_measures AS (
	SELECT sid, measure_type_id
	FROM measures
	INNER JOIN common_version_groups	
		ON measures.trackedmodel_ptr_id = common_version_groups.current_version_id
	WHERE measures.validity_end IS NULL OR measures.validity_end > DATE('now')
	)
	
SELECT measure_types.sid AS SID,
	measure_types.description AS Description,
	COUNT(live_measures.sid) AS 'Number of Active Measures'
FROM measure_types
        INNER JOIN common_version_groups
            ON measure_types.trackedmodel_ptr_id = common_version_groups.current_version_id
LEFT OUTER JOIN live_measures ON live_measures.measure_type_id = measure_types.trackedmodel_ptr_id
	WHERE (measure_types.validity_end IS NULL OR measure_types.validity_end > DATE('now'))
	AND measure_types.measure_type_series_id = 176
GROUP BY live_measures.measure_type_id
ORDER BY sid

S - Supplementary amount

Measure types in this series are used to implement duties based on representative prices.

The below table indicates the active measure types in this series.

WITH live_measures AS (
	SELECT sid, measure_type_id
	FROM measures
	INNER JOIN common_version_groups	
		ON measures.trackedmodel_ptr_id = common_version_groups.current_version_id
	WHERE measures.validity_end IS NULL OR measures.validity_end > DATE('now')
	)
	
SELECT measure_types.sid AS SID,
	measure_types.description AS Description,
	COUNT(live_measures.sid) AS 'Number of Active Measures'
FROM measure_types
        INNER JOIN common_version_groups
            ON measure_types.trackedmodel_ptr_id = common_version_groups.current_version_id
LEFT OUTER JOIN live_measures ON live_measures.measure_type_id = measure_types.trackedmodel_ptr_id
	WHERE (measure_types.validity_end IS NULL OR measure_types.validity_end > DATE('now'))
	AND measure_types.measure_type_series_id = 135
GROUP BY live_measures.measure_type_id
ORDER BY sid

Measure type fields

Field
measure.type.id The unique ID of the measure type, as referenced in the measure. This is always exactly 3 digits long. For measure types sourced from the EU, this is a numeric string; for UK national measures (VAT, excise and national P&R, this is a 3-digit alphabetical string).
validity.start.date The date from which a measure type is valid
validity.end.date The date on which a measure type is terminated – suggestion is that this gets left as NULL unless absolutely required to change
trade.movement.code Determines if the measure type is intended to be attached to an import or export (or both). Possible values are: 0 Import – majority of measure types concern import, as the tariff primarily deals with import 1 Export – most of these are export controls (e.g. sanctions) 2 Import/export – there are very few measure types which are applicable to both import and export
origin.dest.code This field is an exact duplicate of trade.movement.code (above), but it is required in Taric. Also, ignore the definition of the options that are listed in the Taric Elements guide: it is wrong – there are three options that are possible, as above: 0 Import 1 Export 2 Import/export – (omitted in the Elements guide)
priority.code This appears to be a redundant field, as literally all EU-sourced measure types have a priority.code of “1” – if we are managing measure types in the Tariff Application, we should use always set the value to 1. There are national measure types (set in CHIEF) that have a priority.code of 5.
measure.component.applicable.code Determines if measure components (or measure condition components) can be attached to this measure type – things like 3rd country duty (103) and preferential tariff quota (143) require measure components, whereas things like import / export controls must not have them (e.g. Veterinary control 410). This rule needs to be checked when creating measures
order.number.capture.code Determines whether a quota order number should be assigned to a measure of this type: there are two options: 1 Mandatory – e.g. 122 (Non preferential quota), 143 (Preferential quota) 2 Not permitted – e.g. 142 (Tariff preference) This rule needs to be checked when creating measures
measure.explosion.level This field determines how far down the hierarchy a measure can be ‘exploded’ according to the less than helpful elements guide. Essentially this means that the number of digits in the hierarchy to which measures of this type can be assigned. Always set this to 10 for import measures and to 8 for export measures (in declaring exports, traders are only required to declare at 8 digit level).
measure.type.series.id The ID of the series – single alphabetical character; acts as foreign key into the measure type series table, where additional properties that relate to the execution of the measure types is set.

How the data is structured

image

Validation rules

Code Description
MT1 Uniqueness rule for measure type code.
MT10 Validity contained rule for measure type series used by measure types.
MT3 Validity contained rule for measure types used by measures.
MT4 Mandatory subrecord rule for referenced measure type series.
MT7 Deletion while in use rule for measure types used in measures.
MTS1 Uniqueness rule for measure type series.
MTS2 Deletion while in use rule for measure type series used in measure types.

Read more in the system documentation.