Design Recon Rules

Which Recon Rule Editor should I use?
The Easy Rule editor should be powerful enough for 95% of the rules you want to write, including rules that require grouping. The advanced Rule Editor is needed for the following types of rules
  • Helper Rules where you use a second source of data to make the match. 
  • If you want to perform any logic in the Select Statement (Case Statement, Substring, etc)
  • Often the logic in the Select statement can be done in an 'Other Match' Definition instead using Regex or any C# or VB function

Easy Rules

Adding other matches to an Easy Rule
  • If you need to match 2 fields with a tolerance, or strip a value out of a string using Regex (or any C# or VB function), do it in the other match section
  • Examples of basic expressions can be found by clicking the Help Button on the Other Matches editor.
Using Regex in C#
  • Has the format Regex(Field,@"Expression") e.g. Regex(Right.Details,@"(?<=\s)\d{9}")
  • This matches a 9 digit character string after a space e.g. 12345678 in 456785334545 123456789 which is a value found in the Details Field of the Right Dataset
  • To match this extracted value to a field in the Left dataset would require the following match definition Left.Details==Regex(Right.Details,@"(?<=\s)\d{9}")

Advanced Rules
  • Advanced rules require you to write the rule in XML format. You specify the SQL for the Datasets, decide what the unique identifiers for the datasets are and define both the exact and other matches
  • Converting an Easy Rule to an Advanced Rule will expose the XML structure of the rule
  • Every rule needs a LeftDataset and a RightDataset. One can be Bank, one Cashbook or a match can have left and right from the same side. The name must be Bank or Cashbook
  • Command - the body of the SQL Query to return the fields and data to be matched
  • This is the Dataset Selection and Criteria in the Easy Rule interface
  • OrderFields - The Exact matches that are made. Specified using the Ordinals of the Command Fields
  • This is the Exact Matches from the Easy Rule Interface
  • UniqueFields - the Ordinals that return a unique value per row of data. Can be the ID or a combination of fields where Grouping is used
  • GetKeysCommand - this section is required if the rule uses Grouping to make many-many or many-one matches. Must return the underlying ID's of the transactions making up the Group in order to match them
  • Matches - this section defines matches that have a tolerance or contain VB or C# functions
  • This is the Other Matches section of the Easy Rule interface
  • Helper - this section identifies the helper transactions (usually in the ReconHelper tables) that are used to make the match, so that they can also be updated with the applicable Recon ID
Run Rules across accounts
  • You can configure any rule, easy or advanced, to run across accounts
  • This allows you to automate matches that need to happen between transactions in different accounts
  • Remember to remove any exact amount match on accountid from the rule to allow this to happen
  • See here for more info on what happens when a match across accounts is made

Best Practices 
  • Use @CurrentDomainID (case-sensitive) to run the rule on the current domain
  • Filter the datasets to only return columns you need and data that will match. Exclude zero values and blank columns
  • Sort the datasets and Sort LHS and RHS the same way
  • Specify exact matches in the Command SortOrder
  • Try specify at least one exact match, even if it is just accountid (if you're doing a Recon across accounts them AccountId is not an exact match!)
  • Specify the matches in the same order you sort the data
  • Exclude 'groups' of 1 transaction from Grouped rules (1-many, many-many). Set up a separate rule for 1-1 matches
  • Limit the datasets to recent transactions. If it hasn't matched in 90 days, it is unlikely to match now