Fixing a Stuck Batch in Dynamics GP

All users of Dynamics GP will eventually come across this issue.  One of the most common questions we get “How do I fix a stuck batch?” You’ve built up your batch, and you post it, and then, nothing happens.  You do a lookup in your batch window, and you see your batch, but you see it’s status says one of:

  • Posting

  • Receiving

  • Busy

  • Marked

  • Locked

  • Edited

Going to the Batch Recovery won’t work.  Either you won’t see your batch there, or the recovery process doesn’t work.  You’re out of ideas.  Now what?

Microsoft has recognized this issue.  The official reason for this is that there may have been a power surge or network disruption.

EXPERT TIP:  If this happens frequently, we suggest two options for you.

(1)    Consider setting up a “Process Server.”  A processing server handles resource-intensive operations such as posting calculations or report calculations in large batches instead of your local computer.  If other users suffer when you print or post a large batch, this might be the answer for you.

(2)    Also, you might consider moving your Dynamics GP online.  There are excellent solutions for this, including GP365.ca.  From there, you shouldn’t have any more “network disruption” or “power surge” related GP issues.  In fact, you’ll find GP runs blazingly fast from then on.

We will now walk you through the condensed version of what works “most” of the time to fix the issue. Before we get started you will need administrative access to the SQL server and some knowledge of SQL statements. All right, so now we understand something external to GP disrupted the posting process.  But what do we do now?

Step 1: Take a backup of the company database in SQL, just in case – it will be easy to restore! We aren’t doing anything risky, but, you never know!

Step 2: Have everyone log out!

Step 3: Login to SQL Management Studio and delete the following tables. Generally speaking, what these SQL statements are doing is making sure that if GP thinks someone is in any batch, then that information should be removed.

DELETE DYNAMICS..ACTIVITY

DELETE DYNAMICS..SY00800

DELETE DYNAMICS..SY00801

DELETE TEMPDB..DEX_LOCK

DELETE TEMPDB..DEX_SESSION

In my experience, this step works 20% of the time.

Step 4: Go to the SQL table called Posting Definitions Master (SY00500).  This table lists all the batches in the company, regardless of module, and some basic information around them.  The SQL statement “resets” the batch in two ways:

  • It makes sure the batch is not “marked to post.” Think of the series post or master post window in GP, where you can checkmark the batch to post.  That’s what this statement unchecks.

  • Also, it sets the status of the batch back to “Available.” It may be marked to a different status, such as one related to an error message, or where GP incorrectly thought it was in the process of posting.

UPDATE SY00500 SET MKDTOPST=0, BCHSTTUS=0 where BACHNUMB=’XXX’

This is the solution the vast majority of the time.  I would estimate this is the appropriate fix 75% of the time.

BUT WAIT! Do you want your batch go back to “Available”?  That’s the very first step of a batch, where you are just setting it up.  The answer is not always Yes.

There is a specific situation where you need to set your batch to a different status.  The situation is whenever you are working with an AP payment batch.

Think about payment batches.  First, you set it up.  That’s one status.  Then you print cheques (or take some steps towards processing EFT payments).  Finally, you post the batch.  There are three statuses we went through. If you have already printed cheques (or processed EFT remittances… etc), then you do NOT want to reset the batch back to “Available.”  You want to set it to “Cheques Printed,” or maybe “Remittances Processed.”

To summarize, before running that SQL statement on the SY00500 table, ask, “What kind of batch is this?  Is this an AP cheque batch?  Is it an AP EFT payment batch??”

If it’s neither, you can run the Microsoft statement against the Company SQL database:

UPDATE SY00500 SET MKDTOPST=0, BCHSTTUS=0 where BACHNUMB=’XXX’

If it is an AP Cheque batch, run this statement against the Company SQL database:

UPDATE SY00500 SET MKDTOPST=0, BCHSTTUS=110 where BACHNUMB=’XXX’

If it is an AP EFT Payment batch, run this statement against the Company SQL database:

UPDATE SY00500 SET MKDTOPST=0, BCHSTTUS=130 where BACHNUMB=’XXX’

Microsoft has written a knowledgebase document that covers a more detailed process if interested or our steps didn’t work from you.  Here it is:

https://support.microsoft.com/en-us/help/850289/a-batch-is-held-in-the-posting-receiving-busy-marked-locked-or-edited

You can also reach out to us at any time by clicking the contact us or chat functions, and we can assist!

Thank you!

-GP365 Team

Help us with your feedback!

This blog is for you – the GP users of today. We are always looking for your feedback and questions to help create relevant content. As GP365 continues to develop, our customer feedback loop must continue to evolve at the same pace.

Did you like this blog and wish to receive future blogs like it? Sign up to our user group by going to www.gp365.ca, scroll to the bottom of the page and enter your email in the Stay in Touch with GP365. We will keep you posted of new blogs, training event’s and lot’s more!

You can find and interact with us on Facebook, Twitter, and LinkedIn.

If you want to get in touch with us, you can email us at info@gp365.ca or reach out here!

Thanks for reading, and we look forward to hearing from you soon!

We provide a seamless Dynamics GP hosted experience. If you are looking to host your Microsoft Dynamics Great Plains (GP) system in the cloud, look no further! We are the leader and only provider truly providing GP in a SaaS experience. No version upgrade fees, no headaches, enterprise security, and  a better GP experience. We are The Future of Dynamics GP!