QuickBooks 2014 R5 under the Hood

Written by Charlie Russell

QuickBooks 2014 R5Recently, Intuit issued QuickBooks 2014 R5, the third round of revisions since the 2014 product was released last fall. Intuit publishes release notes, but doesn’t always include information about all of the changes that have been implemented, which I often find frustrating. Let’s take a look “under the hood” of the QuickBooks 2014 R5 release at some of the changes that were made, which weren’t publicized in the initial documentation. There are some fixes that relate to speed, some for multiuser locking, and several that affect third-party add-on programs.

It’s very good that Intuit is paying attention to these kinds of things, cleaning up problems that have either been around for a while or were introduced recently.

Multiuser Performance

As a software developer myself, I know that the issue of dealing with multiple users updating the database at the same time can be a sticky one. There are many different ways of dealing with this, and all of them create some form of inconvenience for the users of the program.

If one user is updating a record, there usually has to be some sort of “lock” to prevent another user from trying to update that same piece of information at the same time. Sometimes it will be a lock just on the record that’s being updated, but that gets complicated when you’re dealing with complex transactions that involve multiple records, such as an invoice. Locking has to be done in a way that prevents data from being updated incorrectly, avoids problems that can crash the program like a deadlock, but also doesn’t slow the program down or present too many “locked record” messages to the user.

The QuickBooks database structure has been around for a long time, and it still has many of the characteristics of the original ’90s design. I was surprised to hear that QuickBooks still does a full database lock when one user is writing to any list or transaction record. That is, instead of locking just the record that’s being updated, everything is locked – the entire database. It has been something like 22 years since Intuit added multiuser access to QuickBooks, and this same approach is still being used today? This approach greatly simplifies the programming problem, but it can introduce annoying delays and lock messages.

If a user wants to update some information but can’t because of this lock, QuickBooks will generally wait up to about 20 seconds to see if the lock will be released, which really makes the program seem sluggish. If the lock still exists after that 20 seconds, then you’ll see one of those annoying messages about another user having a lock on the data.

Given this situation, the goal is to minimize the amount of time this lock is in place. You also want to avoid forgetting to unlock the database.

Releasing Locks Earlier

In many cases, when you finish updating a record, QuickBooks will “refresh” the user interface. If, for example, you save a transaction that changes the quantity on hand of an item, QuickBooks has to update that value for every window (transaction, report, center, etc.) that’s currently open. This is a “refresh” of the data being displayed. The more windows you have open, the longer the refresh will take, and this can add up to a noticeable amount of time.

The problem was, QuickBooks had a database lock that wasn’t being released until after that refresh. The lock was placed, the record was updated, the open windows were refreshed, then the lock was released. This could have a big impact on other users waiting to update a record. In 2014 R5, Intuit changed this so that the lock was released before the refresh, so it was less likely that other users would run into a problem.

Fixing Lock Problems

There are times in QuickBooks when the program places a lock and doesn’t release it promptly, usually because it’s waiting for a user response. Remember, as I said earlier, locks are placed on the entire database, so if there is a lock, it can interfere with any other user who is trying to update anything.

A user would be doing something that would open a small window where the user was being asked some simple questions, like filling in a W-2 or just answering a yes/no kind of question. For some reason, the program would place a lock on the file when the window was opened and wouldn’t release the lock until the window was closed. This is a situation that should be avoided, where a lock is placed and then the program waits for the user to answer a question or fill out a form. At best, the other user is going to see sluggish performance – remember that 20-second wait? At worst, the other user will see a message that another user has a lock on the record.

These bugs have crept in at a number of locations, such as with employee records and custom fields, and Intuit engineers have been working to remove them. Every instance they could find of this was resolved in the 2014 R5 release.

Managing Large Lists

Back in the ’90s, the QuickBooks database engineers didn’t anticipate how large “lists” would get in QuickBooks. Here we are in 2014, and QuickBooks still has the same basic underlying database structure and philosophy as back then, but lists have become much larger. The result is that the Item List, Inventory Center, Customer Center, and Vendor Center can be very slow to open up, very slow to search, and very slow to sort when these lists become large.

Last year, in an attempt to speed things up in these locations, a decision was made to remove custom fields from the searches in these lists. Although that may have improved speed, excluding custom fields from these searches created problems for many users.

Intuit addressed this in the 2014 R5 release. Custom fields are again included in the search, and searching speed has been greatly improved. A search on a list of 50,000 names should now only take a few seconds.

Sorting speed (by clicking a column heading to sort the list or using the re-sort feature) has also been greatly improved in general. You may find that sorting on a custom field or an address field is slow the first time you try it, but speed should improve for later sorts.

QuickBooks SDK Updates

In my initial article on the R5 update, I said I was disappointed that Intuit didn’t include any updates to problems with the QuickBooks SDK, which developers use to create third-party add-on programs. Subsequently I was told that, indeed, there were a few changes (and Intuit updated its release notes after a while). It’s always good to see Intuit is addressing these kinds of problems.

The following QuickBooks SDK issues were fixed in QuickBooks 2014 R5:

  • Transaction Reference Numbers will now be updated correctly. This was a big problem for some add-on products. One example of this was that if the add-on was adding an invoice with a specific invoice number, QuickBooks would ignore that invoice number and then assign the next sequential automatic number. I believe this was introduced in the 2014 R4 update.
  • Inventory Adjustments with Bin Locations (using the Advanced Inventory addition for Enterprise) will now calculate correctly. This was a nasty one for any add-on that was adjusting inventory. Glad it’s fixed.
  • Turning off Advanced Inventory will no longer prevent a program from writing to the invoice table.


The QBWin.log file provides us with a wealth of information about what’s going on in the program and the database, particularly if you’re working with the rebuild feature. We’ve talked about how you can decipher this file in earlier articles. There are tons of messages in the file sometimes, and when a new message shows up, it can be confusing. With the QuickBooks 2014 R5 release, some new usage tracking/diagnostic messages have been added that I’ll mention here, in case you run across them.

TaskTracking.cpp (764) : CHECKPOINT: 10188: Tue Mar 18 16:53:14 Cumulus:’Admin’ Menu Item (Customer Center: Steve Box Home Builder:Easy Street) &Vendor Center

That’s an example of a new tracking message. ‘Admin’ is the user name, the text in parentheses is the title of a window that was opened, and then there’s some information on what was done (the Vendor Center was opened in this case). These don’t imply any problem, they’re just tracking what’s going on. This message can help you determine what the user was doing when a subsequent error message shows up.

TaskTracking.cpp (764) : CHECKPOINT: 10188: Tue Mar 18 16:50:58 Cumulus:’Admin’ Form (QuickBooks Information) Message:This is the QuickBooks sample file. Use it as an example or for practice while learning QuickBooks.\r\n\r\nWhile using this file QuickBooks will set today’s date to 12/15/2017.\r\n\r\nDo not use this file as your company file.

That’s an example of the ‘Admin’ user opening a dialog window and seeing a warning or error message. This message was added to help with diagnosing problems the user has run into.

PerformanceMeasure.cpp (111) : CHECKPOINT: 10188: Tue Mar 18 16:51:00 Event:{“Form”:”Message:”,”Extra”:”This is the QuickBooks sample file. Use it as an example or for practice while learning QuickBooks.\r\n\r\nWhile using this file QuickBooks will set today’s date to 12\/15\/2017.\r\n\r\nDo not use this file as your company file.”,”Window”:”QuickBooks Information”}; wall time: 2328.16 ms, busy: 2280.76 ms.

Most of the new messages will be paired with a performance message like the one above that will indicate how long the event took. That may be important to note if a report (for example) is taking a long time to display.

About the author

Charlie Russell

Charlie Russell has been involved with the small business software industry since the mid 70's, and remembers releasing his first commercial accounting software product when you had an 8-bit microcomputer with one 8 inch floppy disk drive. He has a special interest in inventory and manufacturing software for small businesses. Charlie is a Certified Advanced QuickBooks ProAdvisor with additional certifications for QuickBooks Online and QuickBooks Enterprise, as well as being a Xero Certified Partner. Charlie started blogging about QuickBooks in 2008 (Practical QuickBooks) and has been writing for the Accountex Report (formerly the Sleeter Report) since 2011. He retired from accounting and QuickBooks activities in early 2018.

Visit his CCRSoftware web site for information about his QuickBooks add-on products. He is also the author of the California Wildflower Hikes blog.


  • Charlie, excellent article, as always. Good to know Intuit is addressing long-standing database issues that impact performance when ‘many’ concurrent users are working with large company files. Also good to see some attention paid to QBWIN.LOG, which can be ‘painful’ to work with.

    • Thanks, Frank. Note that most of the QBWIN.LOG stuff helps Intuit people diagnose problems more easily, I mostly wanted to report on it because people will see this and say “what the heck is this new message” and wonder what it means.

  • This is a great article. I’m surprised that they haven’t worked on making it more multi-user-friendly quicker. I feel like that would be something a lot of people would get upset or complain about. Being locked out of a system is never a fun experience.

  • I was one of those users who had a problem exporting a report to Excel 2003 and was wondering why. I followed the instructions above and the problem was solved. I am puzzled why I had to do a manual update to apply the fix.

    • Because that is the way that these “critical fix” or ULIP patches work in 2014. Your system would, I believe, at some point install this if you have automatic updates enabled, but you want to apply it sooner than that. Somewhat similar (although a different mechanism) as to how an R-level release first is available as a manual release, later an automatic release (although for different reasons).

  • A great read overall! This is Intuit at its very best. They’ve always been followers of the mantra – “Evolution is the name of the game” as every year, they bring forth new editions and up-to-date versions with cutting edge services satisfying their clientele on a cellular level. Finally, users won’t ever need to worry about those recurring database issues.

  • Good Evening Charlie,

    Thank you for your continued update on QBs. Our company did an update from QBES 12.0 to QBES 14.0 R5 (big jump I know :-)). We had lot of things going on as there were few PCs that had XP system. We pass through that and installed about 15-20 PCs. But now each user is having a problem at startup (log in). It takes between 12-15 minutes for each user to log in and that’s every time we log in and out. It is super fast than 12.0 once we are in, but very painful at the beginning. Especially because we have third party ad-on/plug ins like Fi-Soft and True commerce that we need to re-register and it takes like at least 30mins to log in twice, which most software require you to log back in after you do some updates/installs/registrations.

    Can you please please please let me know if you (or anyone in this blog) have come across this problem and found a solution for it?

    Thank you,

    • I’ve not run into that, and without hands on the system there isn’t much that I can add. The main thing would be if you have users set up to “save their desktop”, so that the next time that they start up there are a bunch of windows and reports that have to open? That is the most typical culprit in slow startups – a bunch of windows, and more importantly reports, that QB has to open and freshen on startup.

  • Sorry I thought I lost the whole txt and I had it copied so I pasted. I realized I posted that I had both pages open. I have checked the settings and looks like users don’t save their desktops. And what’s even more funny is that, once we are all able to log in, the system is super fast. Well, thanks for the tip. Appreciate it.

  • I have not seen anyone else complain about this – so it may only be within our program, please let me know…

    We purchased the 2014 QuickBooks Pro because our payroll deadline was approaching and our 2011 would no longer be supported. I have a serious issue with how the new program handles Customers/Jobs. QB will take a Job and put it under another Customer. When you pull up the drop down box for Customers – the information is correct, but when you use the drop down box to make an invoice or process a payment – the Job is not under the Customer – it is under a different Customer. When you pull up the Customer and go to fix the Job back to where it should go – it is correct. It is somehow taking the correct information and misdirecting it.

    This is not just inconvenient – it is making it impossible to bill estimated Jobs and process payments correctly! Has anyone else experienced this?

  • I have a new problem that just started yesterday, Monday, July 7th.
    When I pull up a report for Unpaid Bills I see all the information perfectly. When I print it, the titles – such as the company names – are mostly all abreviated! There may be the full name for the first and last company on the page, but the rest are all one to four letters followed by …
    Please – how do I get this to print correctly? I have tried changing printers, doing a PDF instead of printing – and that comes up just like the printed pages. This is so frustrating!
    I would think it is my computer, but we have a separate computer for payroll, which is not connected to the server and has it’s own QB program and it is doing the same thing when I pull up Certified Payrolls.
    I am using the new QB Pro 2014 which I installed the update last week that was recommended when I opened the program.
    Please help………

  • Hello Charlie,

    After updating to QBE v14 r7 this summer, we have noticed in multi-user mode that periodically when one user gets into the employee center, runs payroll or pays bills, it does not unlock the database after the user completes the task and closes that window. In fact that user has to close the QBE file entirely in order for anyone to access the database again.

    I have renamed and copied the file, but it still occurs.

    Any ideas what might be causing this or how to fix it?

    Thank you,
    Any thoughts on what could be causing this?

      • We updated to QBE 15 and the issue persists. I do not recall the exact error message, but the gist of it is that the function cannot be completed because another user is making changes to the same data (payroll, bills, etc.). Even after that other user completes their task, the error persists until they log out of QBE completely, which is ridiculous.

  • Well, here we are using Enterprise 2015 R5, and am having still persistent problems with QB locking the whole file. Happens when the bookkeeper is doing billing transactions usually. But other 15 users get locked out completely. Very aggravating. Tech support says problem could be with roles, that even though it’s designed that way, and Intuit’s documentation says so, they are telling me that a user should have only one role–yes, one role per user. Crazy.
    (Are you going to post on R5?)

    • Jim, I’ve not run into that specific problem, so I can’t say much about it. I would have to have hands on the system (when the issue is occurring) to be able to do any investigation. None of my clients have reported this. You make it sound as if it is a random thing, sometimes the bookkeeper is doing billing transactions and it happens, sometimes not? That doesn’t sound like an issue with roles.

      • Doesn’t to me either….and I don’t expect the “solution” to work. Just wanted to report that I’m having the issues you describe here with 2015 R5

Leave a Comment