FpML 4.5 Validation Rules - Rules for Shared Elements
This is the shared element part of the validation rule set accompanying the FpML 4.5 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
Namespace
default element namespace = http://www.fpml.org/2008/FpML-4-5
namespace xs = http://www.w3.org/2001/XMLSchema
Functions
The following shared functions are used in the rules.
Rules
Unique contexts:
shared-1 (Mandatory)
English Description:
Context: BusinessDayAdjustments (complex type)
businessCentersReference or businessCenters must exist if and only if the value of businessDayConvention is not equal to "NONE" or "NotApplicable".
shared-4 (Mandatory)
English Description:
Context: RelativeDateOffset (complex type)
If dayType equals to "Business", then the businessDayConvention must be equal to "NONE".
shared-5 (Mandatory)
English Description:
Context: payerPartyReference
DirectionalLeg (complex type)
EquityPremium (complex type)
ExerciseFee (complex type)
ExerciseFeeSchedule (complex type)
FeaturePayment (complex type)
FxOptionPremium (complex type)
GrossCashflow (complex type)
IndependentAmount (complex type)
InitialPayment (complex type)
InterestRateStream (complex type)
PassThroughItem (complex type)
Payment (complex type)
PaymentBase (complex type)
PaymentMatching (complex type)
PrePayment (complex type)
PrincipalExchangeDescriptions (complex type)
QuotablePayment (complex type)
ReturnSwapAdditionalPayment (complex type)
ReturnSwapLeg (complex type)
SimplePayment (complex type)
payerPartyReference/@href must not be equal to receiverPartyReference/@href.
Formal Description:
Context: payerPartyReference
DirectionalLeg (complex type)
EquityPremium (complex type)
ExerciseFee (complex type)
ExerciseFeeSchedule (complex type)
FeaturePayment (complex type)
FxOptionPremium (complex type)
GrossCashflow (complex type)
IndependentAmount (complex type)
InitialPayment (complex type)
InterestRateStream (complex type)
PassThroughItem (complex type)
Payment (complex type)
PaymentBase (complex type)
PaymentMatching (complex type)
PrePayment (complex type)
PrincipalExchangeDescriptions (complex type)
QuotablePayment (complex type)
ReturnSwapAdditionalPayment (complex type)
ReturnSwapLeg (complex type)
SimplePayment (complex type)
payerPartyReference/@href ne receiverPartyReference/@href
shared-6 (Mandatory)
English Description:
Context: AmericanExercise (complex type)
If latestExerciseTime exists, the earliestExerciseTime/hourMinuteTime must be before the latestExerciseTime/hourMinuteTime.
shared-7 (Mandatory)
English Description:
Context: BermudaExercise (complex type)
If latestExerciseTime exists, the earliestExerciseTime/hourMinuteTime must be before the latestExerciseTime/hourMinuteTime.
shared-8 (Mandatory)
English Description:
Context: DateRange (complex type)
unadjustedFirstDate must be before unadjustedLastDate.
shared-9 (Mandatory)
English Description:
Context: BusinessDateRange (complex type)
If and only if neither businessCentersReference nor businessCenters exists, businessDayConvention must be equal to "NONE" or "NotApplicable".
shared-10 (Mandatory)
English Description:
Context: CalculationAgent
The values of calculationAgentPartyReference/@href attributes shall be unique.
shared-11 (Mandatory)
English Description:
Context: Trade (complex type)
If businessDateRange exists within any descendant element of the trade, then businessCentersReference/@href, if present in any descendant element of the trade, must match some businessCenters/@id within any descendant of the same trade.
shared-12 (Mandatory)
English Description:
Context: Document (complex type)
For buyerPartyReference anywhere in the document, @href shall match the @id attribute of a party element or the @id attribute of a tradeSide element.
shared-13 (Mandatory)
English Description:
Context: Document (complex type)
For sellerPartyReference anywhere in the document, @href shall match the @id attribute of a party element or the @id attribute of a tradeSide element.
shared-14 (Mandatory)
English Description:
Context: Document (complex type)
For calculationAgentPartyReference/@href anywhere in the document, @href shall match the @id attribute of a party element.
shared-15 (Mandatory)
English Description:
Context: Offset (complex type)
dayType must only exist if and only if period is "D" and periodMultiplier is non-zero.
shared-16 (Mandatory)
English Description:
Context: Document (complex type)
If trade exists, for party/@href anywhere within the tradeSide element, @href shall match the @id attribute of an /FpML/party element.
shared-17 (Mandatory)
English Description:
Context: Document (complex type)
If trade exists, for account/@href anywhere within the tradeSide element, @href shall match the @id attribute of an /FpML/party/account element.
shared-18 (Mandatory)
English Description:
Context: AcceptQuote (complex type)
AllocationAmended (complex type)
AllocationCancelled (complex type)
AllocationCreated (complex type)
AmendmentConfirmed (complex type)
CancelTradeCashflows (complex type)
CancelTradeConfirmation (complex type)
CancelTradeMatch (complex type)
ConfirmationCancelled (complex type)
ConfirmTrade (complex type)
ContractCreated (complex type)
ContractFullTermination (complex type)
ContractFullTerminationCancelled (complex type)
ContractIncreased (complex type)
ContractIncreasedCancelled (complex type)
ContractNovated (complex type)
ContractNovatedCancelled (complex type)
ContractPartialTermination (complex type)
ContractPartialTerminationCancelled (complex type)
ContractReferenceMessage (complex type)
CreditEventNotification (complex type)
DataDocument (complex type)
DrawdownNotice (complex type)
IncreaseConfirmed (complex type)
InterestPaymentNotice (complex type)
ModifyTradeConfirmation (complex type)
ModifyTradeMatch (complex type)
NovationMessage.model
OneOffFeeNotice (complex type)
OnGoingFeeNotice (complex type)
PositionReport (complex type)
PositionsAcknowledged (complex type)
PositionsAsserted (complex type)
PositionsMatchResults (complex type)
Quote (complex type)
QuoteAcceptanceConfirmed (complex type)
QuoteUpdated (complex type)
RepaymentConfirmationNotice (complex type)
RepaymentNotice (complex type)
RequestAllocation (complex type)
RequestAmendmentConfirmation (complex type)
RequestIncreaseConfirmation (complex type)
RequestPortfolio (complex type)
RequestPositionReport (complex type)
RequestQuote (complex type)
RequestQuoteResponse (complex type)
RequestTerminationConfirmation (complex type)
RequestTradeConfirmation (complex type)
RequestTradeMatch (complex type)
RequestTradeStatus (complex type)
RequestValuationReport (complex type)
TerminationConfirmed (complex type)
TradeAffirmation (complex type)
TradeAffirmed (complex type)
TradeAlleged (complex type)
TradeAlreadyMatched (complex type)
TradeAlreadySubmitted (complex type)
TradeAmended (complex type)
TradeAmendmentRequest (complex type)
TradeAmendmentResponse (complex type)
TradeCancelled (complex type)
TradeCashflowsAsserted (complex type)
TradeCashflowsMatchResult (complex type)
TradeConfirmed (complex type)
TradeCreated (complex type)
TradeErrorResponse (complex type)
TradeExecution (complex type)
TradeExecutionCancelled (complex type)
TradeExecutionModified (complex type)
TradeIncreaseRequest (complex type)
TradeIncreaseResponse (complex type)
TradeMatched (complex type)
TradeMismatched (complex type)
TradeNotFound (complex type)
TradeStatus (complex type)
TradeTerminationRequest (complex type)
TradeTerminationResponse (complex type)
TradeUnmatched (complex type)
ValuationReport (complex type)
Each party/partyId must be unique. Each party/partyName must be unique.
shared-19 (Mandatory)
English Description:
Context: AcceptQuote (complex type)
AllocationAmended (complex type)
AllocationCancelled (complex type)
AllocationCreated (complex type)
AmendmentConfirmed (complex type)
CancelTradeCashflows (complex type)
CancelTradeConfirmation (complex type)
CancelTradeMatch (complex type)
ConfirmationCancelled (complex type)
ConfirmTrade (complex type)
ContractCreated (complex type)
ContractFullTermination (complex type)
ContractFullTerminationCancelled (complex type)
ContractIncreased (complex type)
ContractIncreasedCancelled (complex type)
ContractNovated (complex type)
ContractNovatedCancelled (complex type)
ContractPartialTermination (complex type)
ContractPartialTerminationCancelled (complex type)
ContractReferenceMessage (complex type)
CreditEventNotification (complex type)
DataDocument (complex type)
DrawdownNotice (complex type)
IncreaseConfirmed (complex type)
InterestPaymentNotice (complex type)
ModifyTradeConfirmation (complex type)
ModifyTradeMatch (complex type)
NovationMessage.model
OneOffFeeNotice (complex type)
OnGoingFeeNotice (complex type)
PositionReport (complex type)
PositionsAcknowledged (complex type)
PositionsAsserted (complex type)
PositionsMatchResults (complex type)
Quote (complex type)
QuoteAcceptanceConfirmed (complex type)
QuoteUpdated (complex type)
RepaymentConfirmationNotice (complex type)
RepaymentNotice (complex type)
RequestAllocation (complex type)
RequestAmendmentConfirmation (complex type)
RequestIncreaseConfirmation (complex type)
RequestPortfolio (complex type)
RequestPositionReport (complex type)
RequestQuote (complex type)
RequestQuoteResponse (complex type)
RequestTerminationConfirmation (complex type)
RequestTradeConfirmation (complex type)
RequestTradeMatch (complex type)
RequestTradeStatus (complex type)
RequestValuationReport (complex type)
TerminationConfirmed (complex type)
TradeAffirmation (complex type)
TradeAffirmed (complex type)
TradeAlleged (complex type)
TradeAlreadyMatched (complex type)
TradeAlreadySubmitted (complex type)
TradeAmended (complex type)
TradeAmendmentRequest (complex type)
TradeAmendmentResponse (complex type)
TradeCancelled (complex type)
TradeCashflowsAsserted (complex type)
TradeCashflowsMatchResult (complex type)
TradeConfirmed (complex type)
TradeCreated (complex type)
TradeErrorResponse (complex type)
TradeExecution (complex type)
TradeExecutionCancelled (complex type)
TradeExecutionModified (complex type)
TradeIncreaseRequest (complex type)
TradeIncreaseResponse (complex type)
TradeMatched (complex type)
TradeMismatched (complex type)
TradeNotFound (complex type)
TradeStatus (complex type)
TradeTerminationRequest (complex type)
TradeTerminationResponse (complex type)
TradeUnmatched (complex type)
ValuationReport (complex type)
Each party/account/accountId must be unique. An account is identified by party/account/accountId or by party/account/accountName
shared-20 (Mandatory)
English Description:
Context: AdjustableDates (complex type)
Each unadjustedDate must be distinct.
shared-21 (Mandatory)
English Description:
Context: BusinessCenters (complex type)
Each businessCenter must be unique. A business center is identified by businessCenter.
shared-22 (Mandatory)
English Description:
Context: CalculationAgent (complex type)
Each calculationAgentPartyReference/@href must be unique
shared-23 (Mandatory)
English Description:
Context: CashSettlementReferenceBanks (complex type)
Each referenceBank must be unique. A referenceBank is identified by referenceBank/referenceBankId or by referenceBank/referenceBankName
shared-24 (Mandatory)
English Description:
Context: RoutingIds (complex type)
Each routingId must be unique
shared-25 (Mandatory)
English Description:
Context: Schedule (complex type)
If there is more than one step, step/stepDate must be unique.
shared-26 (Mandatory)
English Description:
Context: Bond (complex type)
The currency of the parValue is the currency element. When the parValue exists therefore the currency must also exist. This is a workaround because parValue is not defined as a Money type.
shared-27 (Mandatory)
English Description:
Context: Document (complex type)
All timezones must be the same. +00:00, -00:00, and Z are considered equivalent.
shared-28 (Mandatory)
English Description:
Context: Document (complex type)
All dates and times must have a timezone or none of them must.
Deprecated rules
Removed rules
shared-2 (Mandatory)
REMOVED:
Context: Offset; Description: If the dayType element exists then the period must be "D".
shared-3 (Mandatory)
REMOVED:
Context: Offset; Description: If the dayType is "Business" then the periodMultiplier must be non-zero.