openbankingspace / tpp-issues

34 stars 1 forks source link

Standing Order Frequency Documentation is Incorrect in Multiple Specification Versions #91

Open tobypinder opened 5 years ago

tobypinder commented 5 years ago

Standing Order Frequency Documentation is Incorrect in Multiple Specification Versions

The Standing Order Frequency definition is documented incorrectly in most versions of the Account and Transaction Specification.

The specifications correctly document the following regex:


v1.0

(EvryWorkgDay)|(IntrvlWkDay:0[1-9]:0[1-5])|(WkInMnthDay:0[1-5]:0[1-5])|(IntrvlMnthDay:(0[1-6]|12|24):(-0[1-5]|0[1-9]|[12][0-9]|3[01]))|(QtrDay:(ENGLISH|SCOTTISH|RECEIVED))

regex_v1

v1.1, v2.0, v3.0, v3.1

^(EvryDay)$|^(EvryWorkgDay)$|^(IntrvlWkDay:0[1-9]:0[1-7])$|^(WkInMnthDay:0[1-5]:0[1-7])$|^(IntrvlMnthDay:(0[1-6]|12|24):(-0[1-5]|0[1-9]|[12][0-9]|3[01]))$|^(QtrDay:(ENGLISH|SCOTTISH|RECEIVED))$

regex_current

(Hereafter I will only refer to versions 1.1+ as v1 is pretty deprecated at this point and not deployed by the CMA9 as far as I know)


As was highlighted in OBSD-5408, TPPs have and continue to experience multiple outsized disruption due to misimplementation of the Frequency field.

We have subsequently discovered that there are multiple documentation issues that might have resulted in this misinterpretation.

v1.1

The Standing Orders - Bulk example in v1.1 contains the following example.

  "AccountId": "22289",
  "StandingOrderId": "Ben5",
  "Frequency": "WkinMnthDay(2)",
  "Reference": "Golf - We Love Golf",
  "FirstPaymentDateTime": "2017-06-12T00:00:00+00:00",
  "FirstPaymentAmount": {
    "Amount": "23.00",
    "Currency": "GBP"
  },

The string WkinMnthDay(2) is not conformant with the Frequency Regular Expression. WkInMnthDay:01:01 would be an example of a valid regex.

v2.0

As above

v3.0

As above, with the addition of the below issue.

Currently the documentation contains the following table of Frequency Regex examples:

Frequency Example Details
EvryDay EvryDay Every day
EvryWorkgDay EvryWorkgDay Every working day
IntrvlMnthDay IntrvlMnthDay:1:-1 Every month, on the last day of the month
IntrvlMnthDay IntrvlMnthDay:6:15 Every 6th month, on the 15th day of the month
IntrvlWkDay IntrvlWkDay:1:3 Every week, on the 3rd day of the week
IntrvlWkDay IntrvlWkDay:2:3 Every 2nd week, on the 3rd day of the week
QtrDay QtrDay:ENGLISH Paid on the 25th March, 24th June, 29th September and 25th December
WkInMnthDay WkInMnthDay:2:3 Every month, on the 2nd week of the month, and on the third day of the week

Please note that MANY of these examples are invalid and will not match the documented format. Specifically,

are all invalid. Note generally the lack of leading 0s for each digit: IntrvlWkDay:1:3 is invalid, while IntrvlWkDay:01:03 is valid.

v3.1

As above

Impact

Very Significant. At this point in the ecosystem, it is likely that all ASPSPs have implemented these fields in disparate ways. I strongly recommend OBIE review this topic with all ASPSP stakeholders, and backport the outcome of those discussions to ALL relevant specifications rather than just the most recent one.

TPPs should be advised of expected behaviour going forward such that we can safely parse this information.

Links:

Standing Order Documentation:

tobypinder commented 5 years ago

This has been confirmed as a defect. OBIE working on how best to update impacted stakeholders.

tobypinder commented 5 years ago

Still awaiting an update on this, as far as I know no communications have been sent.