# FpML 4.2 Validation Rules - Rules for Shared Elements

This is the shared element part of the validation rule set accompanying the FpML 4.2 Trial Recommendation. The introductory section in the draft contains background information and documentation for this page.

The rules contained on this page contain links to cut down versions of valid and invalid test cases. These test cases have been analysed using Systemwire's xlinkit rules to highlight relevant document portions accessed by a rule. These cut down test cases are non-normative and are provided for the purpose of documentation only.

## Content

- Rules

## Rules

#### Unique contexts:

- BusinessDayAdjustments (data type): shared-1
- RelativeDateOffset (data type): shared-4
- payerPartyReference: shared-5
- AmericanExercise (data type): shared-6
- BermudaExercise (data type): shared-7
- DateRange (data type): shared-8
- BusinessDateRange (data type): shared-9
- calculationAgent: shared-10
- Trade (data type): shared-11
- FpML: shared-12 shared-13 shared-14
- Offset (data type): shared-15
- TradeSide (data type): shared-16 shared-17
- Deprecated rules

#### Context: BusinessDayAdjustments (data type)

shared-1 (Mandatory)
businessCentersReference or businessCenters must be present if and only if the value of businessDayConvention is not equal to NONE or NotApplicable.
Test cases: [Valid] [Valid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid] [Invalid]

#### Context: RelativeDateOffset (data type)

shared-4 (Mandatory)
If the dayType is Business then the businessDayConvention should be NONE.
Test cases: [Valid] [Invalid]

#### Context: payerPartyReference

shared-5 (Mandatory)
If ../receiverPartyReference is present, then the @href attributes of the two elements must not be equal.
Test cases: [Valid] [Invalid] [Invalid]

#### Context: AmericanExercise (data type)

shared-6 (Mandatory)
earliestExerciseTime < latestExerciseTime, if latestExerciseTime exists.
Test cases: [Valid] [Invalid] [Invalid]

#### Context: BermudaExercise (data type)

shared-7 (Mandatory)
earliestExerciseTime < latestExerciseTime, if latestExerciseTime exists.
Test cases: [Valid] [Valid] [Invalid]

#### Context: DateRange (data type)

shared-8 (Mandatory)
unadjustedFirstDate < unadjustedLastDate.
Test cases: [Valid] [Valid] [Invalid] [Invalid] [Invalid]

#### Context: BusinessDateRange (data type)

shared-9 (Mandatory)
businessDayConvention is NONE or NotApplicable if and only if neither businessCentersReference nor businessCenters is present.
Test cases: [Valid] [Valid] [Invalid]

#### Context: calculationAgent

shared-10 (Mandatory)
The values of calculationAgentPartyReference/@href attributes shall be unique.
Test cases: [Valid] [Valid] [Invalid]

#### Context: Trade (data type)

shared-11 (Mandatory)
If businessDateRange exists within any descendant element of the trade, then businessCentersReference/@href, if present, must match some businessCenters/@id within the same trade.
Test cases: [Valid] [Valid] [Invalid]

#### Context: FpML

shared-12 (Mandatory)
For buyerPartyReference anywhere in the document, @href shall match the @id attribute of a party element or the @id attribute of a tradeSide element.
Test cases: [Valid] [Invalid]
shared-13 (Mandatory)
For sellerPartyReference anywhere in the document, @href shall match the @id attribute of a party element or the @id attribute of a tradeSide element.
Test cases: [Valid] [Invalid]
shared-14 (Mandatory)
For calculationAgentPartyReference/@href anywhere in the document, href shall match the @id attribute of a party element.
Test cases: [Valid] [Invalid]

#### Context: Offset (data type)

shared-15 (Mandatory)
dayType must only be present if and only if period is D and periodMultiplier is non-zero.
Test cases: [Valid] [Invalid] [Invalid]

#### Context: TradeSide (data type)

shared-16 (Mandatory)
For party/@href anywhere within the tradeSide element, href shall match the @id attribute of a FpML/party element.
shared-17 (Mandatory)
For account/@href anywhere within the tradeSide element, href shall match the @id attribute of an FpML/party/account element.

#### Deprecated rules