Showing posts with label Product Information. Show all posts
Showing posts with label Product Information. Show all posts

Tuesday, 12 August 2014

Bank Reconciliation 4.2.917.2930 is available

It can be downloaded from the Twenty57 website.

Release Notes:
  • If a bank statement belongs in an accounting period that has closed, it will be created in the next open period instead of failing
    • It is best practice to ensure all transactions for a period have been imported before closing the period but you won't be punished if it happens
  • Work has been done to ensure BankRecon works correctly with different Server Date and Number formats
  • Install won't fail if the Reports cannot be inserted into the Database. This usually happens when the database was not selected as part of a clean install

Thursday, 1 September 2011

Best practices for good Recon Rule design

I have been focusing on recon rules and how they perform for the last few months. Some great dev work has been done to improve the auto matching, but it is also possible to get significant performance gains by implementing good rule design.

To give you an idea of how impressive the gains can be:
The 'worst' performing Domain in our testing only showed an improvement of 14% between the old and new code. After applying some of the tips below to the rules, there was a 50% improvement in the time taken for the rules to execute. These rules were run on large data sets, but the gains are equally noticeable on recon counts of 1000 and less.

New Code, original rules
(hh:mm:ss) m1.Large Instance
New code, tweaked rules
(hh:mm:ss) m1.Large Instance
% Improvement
4:00:302:01:1649.5%

General Guidelines (in no particular order):
  • Specify exact matches in the Command SortOrder for both LHS and RHS rather than in the match Section of the rule.
  • Try include at least one exact match criteria - even just the AccountId match
  • Sort your SQL queries in the same order you specify the matches.
  • Always sort the SQL queries and always sort LHS and RHS in the same way.
  • Use (noLock) in the SQL.
  • Only return the columns you need, not everything.
  • Filter your data sets to exclude blank values, zero amounts and other records which won't produce a match for that rule.
  • Use @CurrentDomainID (case-sensitive).
  • Limit the data sets to recent transactions. If a record hasn't auto-matched in the last 90 days (or less) it is unlikely to recon now.
  • When working with grouped data sets exclude 'groups' of 1 transaction. Grouped data sets make use of the GetKeys command whether the group is one or many and this takes more time. Rather do a separate rule for 1-1 matches.
  • Set the priority of your rules - this helps ensure the best matches are made first.
  • If values have changed fields ( eg from Details to Reference1), after an initial phase in period, remove the old matching criteria. 'Or' command in the regex will slow down the rule.
  • Try get the matching value in SQL and use SortOrder to make the match rather than use Regex in a match definition.
  • Limit the number of Recon Rules.
  • Review the rule performance periodically. I can provide scripts to do this.
  • Make use of Helper Rules.
  • Make use of the TemporaryTableCommand.
Not all of the above can be applied to all rules and sometimes a change may make things worse. Use your discretion and always test a tweak first to make sure that you are still matching the correct stuff and that there is actually a performance gain. There are those rules where very specific matching criteria may mean a trade off with performance but try limit them!

If you have other tips please let me know about them. I am always trying to grow the Bank Recon knowledge base.

Tuesday, 30 August 2011

The Bench-marking journey and results

We have finished bench-marking and it has been an interesting journey into the world of Amazon servers and  'cloud computing'. I will give the highlights (and low lights) and the final results. You are more than welcome to contact me if you want more details as to our findings and the procedure followed. Please note that all results and recommendations are subjective. We ran Bank Recon on one server (Application, service and database) and we were only running Bank Recon, no other applications. Amazon servers are also virtual so the performance will most likely differ to a real hardware setup with similar specs.

We also only tested the recon rules and cashbook imports. Testing of the manual screen as well as load testing may be conducted at a later stage.

We tested two different database setups. Both databases are real world databases with actual cashbook and bank transactions in them. The recon rules are in use at clients and were not changed in anyway for the testing.
1. 170 GB database where the Cashbook Transaction table has been partitioned and the Recon ID is the clustered index. Ran the rules on one domain for all transactions matched on one day.
2. 7 GB database with the standard Bank Recon schema. Ran the rules for all the domains for all transactions in the database.

The m1.Large instance has 7.5 GB memory and 2 virtual cores with 2EC2 units each. The underlying processor is an Intel Xeon E5430 (according to the Windows Server 2008 System information)
The m2.xLarge instance has 17.1 GB memory and 2 virtual cores with 3.25 EC2 units each. The underlying processor is an Intel Xeon X5550 (according to the Windows Server 2008 System information)
1 EC2 unit is approximately equal to the CPU capacity of a 1-1.2 GHz 2007 Opteron or 2007 Xeon Processor. More information on the instances is available here.
All instances are running Windows Server 2008 R2 64 bit.

And the results:

Cashbook Imports:
Only imported data into the 170 GB database, using the SQL BCP process. There were no code changes made.

Import File sizeNo of Txns Importedm1.Large Time (hh:mm:ss)m2.xLarge Time (hh:mm:ss)% Improvement
777,039 KB1 033 39500:53:3400:38:1829%
779,603 KB1 003 10400:52:0200:39:2225%


Recon Rules

m1.Large (old vs New code)m2.xLarge (new code)m2.xLarge (new code)
best time
DatabaseDomainRecon Count for all rules (approx)% Improvement code change% Improvement: increased hardware as compared to m1.Large new codeTime taken
(hh:mm:ss)
170 GB1 24 60085%20%00:16:28
7 GB137 00014%44%01:37:44
2315 60069%47%02:46:22
335 90035%26%02:59:39
412 68074%32%00:03:15
What really jumps out from the above results is the wide swing in recon performance improvement. All domains tested show an improvement but it varies between 14% and 85% when looking at the code changes and between 20% and 47% when looking at the hardware scaling. 

What this seems to indicates, is the effect that rule design has on the performance. We didn't change the matching logic, only the reconciling logic. The matching code has to work harder to find matches when the data isn't fully filtered or the sorting isn't consistent, and the reconciling portion is then a smaller percentage of the overall process. We may make changes to the matching logic in the future but you can get further rule improvements now by looking at your rules and tweaking them where necessary. But rule design is a subject for another blog post. 

Why these instances?
We tested on the m1.Large, m1.xLarge, m2.xLarge and m2.2xLarge instances. m1.Large is the smallest instance which made sense in our case - it allowed us to scale the 'hardware' and provided enough power to test on. We then upgraded to the m1.xLarge instance. On paper this is double the m1.Large instance and very similar to the m2.xLarge instance. But to our surprise we didn't get the expected improvements. Research led us to the conclusion that not all Amazon instances are created equal. It is likely you are sharing the underlying hardware when using a m1 instance. So you can find yourself in a 'noisy neighbourhood' and suffering from 'CPU steal cycle'. The m2 instances do not seem to experience the same issues to as large a degree.

We tested the scalability of Bank Recon by running the rules on the m2.2xLarge (double the m2.xLarge instance) instance but did not see noticeable improvements. Bank Recon does not make use of parallelism so the additional cores were of no benefit. There is also a limit to the amount of memory Bank Recon can currently utilise.

Summary and Guidelines
The results indicate that the optimum configuration for Bank Recon is 18 GB RAM and a 2-3 GHz dual core processor. This is required for both the Application and Database server. Your hard disk size we be determined by the size of your database and application. Please note that this guideline is based on running Bank Recon on one server with NO other applications. If you run multiple applications or databases on the same server you will benefit from more cores and memory which allow for parallel execution of processes and multiple threading.

A big thank you to the development team for the code improvements and all the time spent in bench-marking and analysing the results. We are busy with some small tweaks to the Manual Recon screen to make it more user friendly and then we will release everything in one bumper release

Tuesday, 16 August 2011

Benchmarking Performance on Amazon Servers

Bank Recon benchmarking is underway with the goal of providing measurable information as to what the optimal setup is, as well as to quantify the improvements gained from the recon rule changes that have been made. Remember, we are testing in a very specific environment so we can only give guidelines to maximise performance. Factors such as the number of applications running on your servers and the number of users will affect performance in your environment in ways we haven't tested. 

We decided to use the Amazon EC2 servers for the benchmarking exercise. The benefit of the Amazon setup is that hardware can be easily scaled to measure the effect of upgrading the processors, memory and disk space without the physical cost of buying and housing the servers . Amazon provides a number of 'instances' which have differing CPU's, cores and memory. Amazon uses the EC2 Compute Unit (ECU) to measure CPU output. One ECU unit is roughly equivalent to a 1.0-1.2 GHz 2007 Opteron or 2007 Xeon processor. More information about the Amazon EC2 servers can be found here.

Thus far we are testing on the following configurations

Instances Used
EC2 Large: 4 ECUs, 2 cores, 7.5 GB memory
EC2 Extra Large: 8 ECU's, 4 cores, 15 GB Memory

Server Setup
Windows Server 2008 R2 64 bit.
SQL Server 2005. 
Database and application running on the same server.

Databases:
160 GB with the Cashbook Transaction Table partitioned on Recon Id
6 GB with a standard schema

I will detail the testing done and the results in a later blog post when it is all completed, which should be in the next week or so. We have tested the recon performance improvement of the new code vs the old code as well as benchmarked the Import process on the Large instance. We are now testing how scaling the hardware affects the performance by running the recon rules and imports on the Extra Large Instance using the new code only. We may test on other instances as well to get a better idea of scalability. Every time we release a new version going forward we will benchmark it to ensure the performance is as good or better. 

And as soon as the testing is complete we will release the new build - watch this space!



Thursday, 7 July 2011

Bank Recon Release 4.1.303.1673

Bank Recon 4.1.303.1673 can be downloaded from http://www.twenty57.com/Twenty57/BankRecon/Download.aspx?product=BankRecon

It is the last version to be released on .net Framework 3.5. All new features are being developed on .net Framework 4. We will continue to support the older versions, limiting development to bug fixes.

What is in this version?
  • Bug Fix: Edit tag screen: CB transaction frame size has been increased to make viewing easier
  • Features: Added setup information, guidelines and a test button to the Cashbook and Bank Details Import Definition screens. 
  • Reports: Updates to the Age Analysis of Outstanding Deposits, Unreconciled Item Summary Report and Unreconciled Transaction Detail with Summary reports. Improve the layout and ensure meaningful data is returned in all situations.
As always, all feedback is wanted - let me know what you think. I hope you are using Suggest and getting great value out of it.

Friday, 24 June 2011

Auto-recon enhancements: infrastructure upgrade to .Net Framework 4

As part of the Auto recon performance enhancements, we are upgrading Bank Recon to .Net Framework 4. You will need to have .Net Framework 4 installed on your Bank Recon Application server if you want to install the version once it is released and take advantage of the performance improvements.

.Net Framework 4 can be installed on Windows Server 2003 SP2, Windows Server 2003 R2, Windows Server 2003 R2 SP2, Windows Server 2008, Windows Server 2008 R2 and Windows Server 2008 R2 SP1 and supports both x86 and x64 bit architecture. More information  and the downloads can be found here: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=17718 (standalone installer) and
here: http://www.microsoft.com/download/en/details.aspx?id=17851 (web installer)

Support for the .Net Framework 3.5 versions will be limited to bug fixes going forward.

Please let me know if any of this is an issue for you so we can manage the releases and support accordingly.

Tuesday, 21 June 2011

Suggest Release

I am very excited to present the new Suggest functionality. I truly believe it is going to add value to Bank Recon and make it a more dynamic product.


Thank you to Anand, Ameet and Amol for the fantastic development work done; and to Franz and Carien for the usability guidance and design input. A special thanks to all the users who made themselves available for the prototype testings and provided the feedback to ensure we are delivering what you need.


Please download Version 4.1.298.1661 from http://www.twenty57.com/twenty57/BankRecon/Download.aspx?product=BankRecon


What is Suggest?
Users are presented with possible matches based on common words, date ranges and amounts which they can either reconcile or ignore.  Matching words are highlighted and the user can decide whether words give useful matches and should be used for future suggestions or not.


Franz's post gives more information on how Suggest works and the usablity testing and the Bank Recon webhelp also includes information on using the Suggest functionality.


Installation Notes:
If you are upgrading from a previous version '4.1.xxx' of Bank Recon, the following needs to be added to the config files:
    appSettings section of web.config:
        <add key="ConfigManagerURL" value="tcp://localhost:8087/ConfigManager"/>
    service secion of App.config of ProcessService:
        <wellknown type="Twenty57.BankRecon.API.ManualReconSuggestions.ConfigManagerProxy, Twenty57.BankRecon.API" mode="SingleCall"objectUri="ConfigManager" />


Microsoft Distributed Transaction Coordinator must be installed on the application server and the Database server.


Setup Notes:
You need to have Site Administrator rights to access the Suggest Configuration Setup screens. The default settings applied when the version is installed are optimised for most environments. Simply make the process active. You may want to add additional match criteria according to the business needs.


I recommend running the process for the 1st time outside of core business hours because a large dictionary of keywords is loaded and the initial run may process a large number of unreconciled transactions. Thereafter it will run in the background continually while activated.


If you experience performance degradation, adjust the config settings as described in the webhelp. Additional setup information is also available on the page.


The 'Suggest Reconciliation' Menu right will need to be given to the appropriate user groups so that they can see the screens.


I am looking forward to hearing about your experiences using Suggest and all ideas on extending the functionality. Please let me know about any issues you experience and thoughts you have 

Monday, 30 May 2011

Bank Recon Web Services

Bank Recon uses simple SOAP web services ( find more on SOAP here: http://en.wikipedia.org/wiki/SOAP) which allow for the bi-directional transfer of data.

All methods and their details can be found by navigating to the web services url: http://localhost/bankrecon/WebServices/WebServices.asmx on the server hosting the web site, or replace localhost with the server name if browsing remotely.

The methods defined perform many of the standard Bank Recon functions including imports, reconciliations, cashbook transfers, general ledger export and viewing, editing and deleting detail. They require a username, password and Domain Group Id, Domain Id or Account Id. Some also require a particular Transaction Id or definition name (recon rule name, GL Export definition name etc) in order to execute.

Monday, 23 May 2011

Bank Statements

I am after information around the different bank statements that are imported into Bank Recon, particularly ABSA and Nedbank statements.

If you have specification documents, statement samples and details about how the statements are received from the bank (an automated process, download from the bank's website etc) please email it to me.

Do you ever rollback imports?

  • How often do you need to rollback Bank Statement, Cashbook or Bank Details imports?
  • Why do you need to rollback?
  • Do you rollback an entire statement/import definition or just for the affected accounts?
  • If you need to rollback how do you do it? Adhoc script; standard script; Delete the affected Bank or Cashbook Batches per account from the UI?

Let me know in the comments or by email. We are looking at ways to make it easier to manage.

Tuesday, 17 May 2011

Bank Recon Help Pages

If you are running version  4.1.143.1399 (Released August 2010)  or later you can setup the help. The help is hosted on the Twenty57 website and can be accessed directly from Bank Recon. 


To set it up you need to be a site administrator:

The Contents menu item will now be visible under the Help parent menu and is accessible to all users.


Bank Recon help includes both Daily User content as well as setup information. If you have any ideas on how to improve the help or think something is missing from it please let me know.