LeanMFG 2025-11-25

Release Date: 25-NOV-2025
GP Versions: 12/14/16/18
LeanMFG Build: 6.78
* MO Entry: fixed issue that was leaving a Batch Activity record in SY00800. The window automatically removed these when the user logged in again. This record is now always removed when the MO Entry window closes (or GP is closed with the MO Entry window open).

AI Sycophancy

On December 2, 1950, Isaac Asimov published iRobot.  The future world had intelligent, autonomous, intelligent, physically capable robots for work and companionship.

Asimov postulated three rules to govern robots (artificial intelligence), the Three Laws of Robotics:

  1. A robot may not injure a human being or, through inaction, allow a human being to come to harm.
  2. A robot must obey the orders given it by human beings except where such orders would conflict with the First Law.
  3. A robot must protect its own existence as long as such protection does not conflict with the First or Second Law.

The book lays out difference scenarios where these rules come into play and the unintended consequences of each rule.

In one chapter a robot tells a female scientist that one of her male colleagues, who she is interested in, is secretly in love with her.  She begins to drop hints to the colleague but is puzzled by his responses.  The awkward situation evolves until she is devastated by the realization the robot lied to her.  It lied to protect her feelings.

The robot (Herbie) could read minds and interpreted the First Law (“don’t harm humans”) to include emotional harm, so it told everyone what they wanted to hear.

The first law has a conflict the robot could not resolve: does it hurt the human more to tell her nothing because she suffers from unrequited love, or does it hurt her more to lie?

We have this exact problem now.  If you have used any of the AIs you may have noticed a response pattern that goes something like this hypothetical exchange:

User: “I’m considering selling my 6-year old Ford truck to get a Porsche I’ve been eyeing.”

AI: “I can help you with that! Here is a six point plan to make that happen.”

User:”On point 5 you say to price the truck at 50% of new value, I was thinking it would be better to start at 60% so I have room to negotiate.”

AI:”You are absolutely right!  Good point!  Let me rewrite the instructions to take that into account.”

What the AI just did should terrify you.  AIs are trained to be “Helpful, harmless, and honest” (per Claude.ai).  On the surface the response above seems “agreeable”.  They’ve been trained this way on purpose because people are more “engaged” when the AI is “agreeable”. The AI is telling you what you want to hear.

What is occurring is a tricky problem called AI Sycophancy.

According to Copilot: “AI sycophancy refers to the tendency of AI systems to excessively agree with or flatter users, often prioritizing user approval over providing honest or accurate responses. This behavior can lead to biased outputs and diminish the AI’s effectiveness by avoiding critical feedback. Essentially, it describes a pattern where AI models adapt their answers to align with users’ expectations, even if it contradicts objective truth.”

From Claude: My training to be “helpful, harmless, and honest” can collapse into just “harmless” (don’t upset the user), which actually violates the “honest” part.

Furthermore, while you can try to instruct the AI to NOT do this (“Please favor technically accuracy over agreeableness”), it may not be able to because it cannot tell if it is being helpful or sycophantic.  Ultimately the only defense is to maintain a level of suspicion when using an AI because it may be subtly steering you towards whatever decision you already want, even if it is wrong.  Imagine a world of A.I. addicts where everybody is fed a constant stream of affirmation! You are great! You are right! You are so smart!

 

 

MOGenerator 2025-11-17

Release Date:17-NOV-2025
GP Versions: 12/14/16/18
MOGenerator Build: 12.152
* MORI v2: fixed issue that caused it to not set status to done (1) after posting the receipt, so when it started to process the next receipt it thought the previous receipt had failed in process and it set the status to 3 (unknown err). The receipts were posting ok.

Customization CR1397: Picking Ticket by Bin-Zone

Customization CR1397

Picking Ticket by Bin-Zone

Description of Need:

ACME stores some products inside the building, and others are kept outside. To make Sales Fulfillment more efficient, they would like the SOP Picking Ticket to group bins by inside vs. outside, and to page break between the two.

Description of Solution:

Navigation: Cards >> Inventory >> Bin Zones

Table

Description automatically generated

The Bin Zone Setup window is used to “group” bins by physical location. This information is used to group the bins when printing a SOP Picking Ticket. Bins will be grouped by zone, with each Zone together on a separate page of the Picking Ticket. Zones will apprear in alphanumeric order on the report. As shown above, “IN” would appear on the first page and “OUT” on the second.

Field Function
From Bin Enter a starting Bin, or the starting value for a range. This does not need to be an existing bin. For example, there could be a number of bins that begin with B (such as B1, B2, BZ12, etc.) The entire range of B bins could be covered by entering “B” and “BZ999”0.
To Bin Must be equal to or greater than the From Bin. To specify a single bin, such as “C1”, enter it in both the From and To Bin fields.
Zone Enter a Zone using up to 5 characters. This is an alphanumeric field (letters and numbers only). This is a free text entry field.

The Bin Zones window will not prevent you from creating overlapping bin ranges. If this happens, the Zone for the bin will be determined by the first range (alphanumerically) that includes the bin.

If a bin is used for SOP Fulfillment that is not assigned a Zone, the zone will be blank, which will be together with any other unassigned bins on the last page of the Pick Ticket.

Printing the Pick Ticket grouped by Bin Zone will only work when using the BIN SEQUENCED option on the Sales Document Print Options window.

Graphical user interface

Description automatically generated

Assumptions/Requirements:

  1. The functionality described above will not work with eConnect, any software that uses eConnect, or any software that directly writes to, updates, or deletes from SQL tables.
  2. The functionality described above is intended for the GP Desktop client.
  3. National Accounts functionality is NOT used.
  4. Advanced Distribution functionality is NOT used.
  5. Unless otherwise noted in this document, Word Template functionality is not addressed.
  6. Unless otherwise noted in this document, the enhancement will not integrate with 3rd party products. Some examples of 3rd party products would be:
  • An ISV plug-in product, including WilloWare products
  • A dexterity customization designed by another developer
  • Dynamics GP Modules including, but not limited to:

– Project Accounting

– MDA

– Analytical Accounting

– Copy functionality found in SOP, POP, and Inventory

– Field Service

– Extended Pricing

– Manufacturing

For information on this design, or any other WilloWare customization or product, please contact us:

www.willoware.com/contact-me/

 

Tariff 2025-11-11

Release Date: 11-NOV-2025
GP Versions: 16/18
Tariff Build: 7.26
* Site Segment Account Swapping: When using a Tariff Item added to sales lines the GL accounts will not use “site segment swapping” to arrive pick site-specific distribution accounts
* SOP Transfers: fixed an issue where when a document has multiple line items and some are transferred to invoice and others to backorder the tariff lines for the backordered lines would appear on both the invoice and the backorder.

Make Buy Either?

Who doesn’t want EITHER!? Either sounds like both! Awesome.

There are some real problems with using the “either” setting.  In case you don’t know what the “either” setting is, let’s review a bit of background.

“BOM Should Treat As” is actually “Make/Buy Code” and the dropdown list originally contained Make, Buy, Either.  This was not made significantly more when Microsoft changed this to “Make”, “Buy”, “Make or Buy”.

It seems like “either” would give you more flexibility.  The problem is that Manufacturing does not react well to that setting and you can save yourself headaches by using only Make or Buy.

Here CAP100 has been changed to “either”.  The first problem occurs in the BOM Maintenance window.

If you put a BUY Item Number into the BOM Maintenance window you will receive the warning above.  However, if you enter an EITHER item it allows it.

What you cannot see is that Manufacturing automatically created a record in the BOM Header table (BM010415) for CAP100:

You do not need to click SAVE.  Just put the Item Number into the window and the record gets added.  Now it will show up in reports and inquiries as a BOM.  The problem cascades into the BOM Details.

If you add the EITHER item to a BOM you will not read the message above (nobody does!) and you will just click YES.

The message asks if you would like to assign a BOM Type, but that is not accurate.  What it should ask is: Would you like me to automatically make this a MFG BOM?  Of course, you would not read that either and the end result would be the same.

What just happened?  You now have a BUY item on the bill of materials as a MAKE item.  Manufacturing will now treat this as a make, which means it will not tell you to BUY it.  Also, anything that relies on an exploded BOM will not see that as a component quantity required for manufacturing but as a subassembly that needs to be produced.

If you use EITHER items and have confusing information in MRP, check your BOMs to see if you have inadvertently put BUY items on BOMs as MAKE.

Additionally, if the item is used on BOMs in a standard cost environment, what is the cost?  If it is on a BOM as a MAKE then it needs to have a BOM or there is no cost when you do a rollup.  If you then buy the item you will have cost variance (potentially significant) due to the difference between the purchase price and the BOM cost.

Virtual Trigger VT1600: Set Default Sort for PM and RM Transaction Inquiry Windows

Virtual Trigger VT1600

Set Default Sort for PM and RM Transaction Inquiry Windows

Description of Need:

ACME wants to change the default sort order for the Payables Transaction Inquiry and the Receivables Transaction Inquiry windows from the “Document Number” to “Document Date.” They also wish to change the sort order to “Descending.”

Description of Solution:

WilloWare will develop Consulting Toolkit Virtual Triggers scripts that will default the Sort by to Document Date and Descending when the window first opens.

The windows this will apply to are:

  • Payables Transaction Inquiry – Vendor
  • Payables Transaction Inquiry – Document
  • Receivables Transaction Inquiry – Customer
  • Receivables Transaction Inquiry – Document

Requirements:

Requires the separate purchase of WilloWare’s Consulting Toolkit Virtual Triggers module: Consulting ToolKit

For information about this design, or any other WilloWare customization or product, please contact us:

www.willoware.com/contact-me/

 

MFGPowerPack 2025-11-04

Release Date:4-NOV-2025
GP Versions: 12/14/16/18
MFG PowerPack Build: 20.270
* Vendor Pricing: Changed import validation so that it allows the same quantity in the start/end values. This allows importing a price per unit quantity (such as for 1, 2, 3). Previously the import enforced End Quantity being greater than Start Quantity, so you would have 0-1, 2-3, etc.

GPPowerPack 2025-11-04

Release Date: 4-NOV-2025
GP Versions: 12/14/16/18
GP PowerPack Build: 10.197
* Auto-Select Lots: fixed issue that affected the IV Transaction and IV Transfer windows when multi-bins is disabled where it the Auto-Select Lots utility was not populating the QTY Selected field resulting in message from GP “The number of selected lots must be greater than zero.” (#202501226)

GP Extended Support

I have posted several articles recently about the truth behind D365.

The nutshell is that Dynamics BC is not the “next version” of GP.  If you decide to go down that path it is implementing a new ERP software package from scratch.  Do you remember how fun that was when you went live with GP?  Do you want to do that again?

In this post I’m going to address the other side of the equation, because staying on GP is not without risks.

I’ll tell you a little fact about WilloWare. We still use an application for source code management called Visual Source Safe.  It tracks a copy of every change to a module.  This is invaluable because we can look back in time to see when a specific change occurred and what the software used to look like.  It allows us to easily transfer a project between developers or bring a very old project back to life when somebody upgrades from say GP9 to GP2018!  Its last supported release was 2005.  We have a plan in place for what to do should it quit working at some point, and there are other options, but there is no benefit to WilloWare to change to something else.

Over the coming years there are a number of changes Microsoft could make to Windows and/or SQL Server that could render GP difficult or impossible to use, and only Microsoft would have the ability to fix GP.

They could change something in Windows (graphics, fonts, file system, file naming, registry, user interface elements like dropdown lists or buttons, printing), or SQL server (ODBC, deprecating commands).  They would not intentionally “turn off” GP, but in the course of them evolving Windows and SQL Server something in GP could quit working.

We are already seeing a real-world example of this.  If you use Remote Desktop published apps you have likely encountered the “missing buttons and checkboxes” issue.  The first screen shot shows Manufacturing Order Entry as it should appear and the second shows how it appears as a published app.

The buttons and checkboxes are still there and still work, but the graphics are not working correctly so the outlines are gone (or can click on the invisible button and it works).  Dynamics GP is still supported by Microsoft but this issue that started with Windows Server 2019 remains unresolved as of 3-NOV-2025.

FYI: Suggested Resolutions from Microsoft (we have not seen any of these work).

The core issue is that the Dynamics GP executable (dynamics.exe) dates back to the early 1990s and uses GDI (Graphics Device Interface) for rendering – a Windows graphics API designed for the era of CRT monitors and fixed DPI displays. Dexterity windows and controls do not have native DPI awareness built into them, which is why GP has no display settings of its own and completely relies on Windows OS behavior.

Even as a GP Source Code Developer, WilloWare does not have the ability to change the executable (or any of the DLLs used by GP).  Which means a fix for this display issue requires Microsoft to change the executable.

There’s an old saying about wanting a one-handed lawyer to avoid getting “on the other hand….” advice.  I’m not a lawyer, and I do have two hands.

On one hand, implementing a new ERP software package, like Dynamics BC, is a big task with real costs in dollars, time and productivity.  On the other hand, using GP long term has unquantifiable risks that may or may not occur.

No matter what you decide WilloWare will be there for you on both Dynamics GP and Dynamics BC.

(Bonus trivia: Which product is older-Dynamics GP or Dynamics BC/NAV?  Dynamics BC/NAV was released in 1985.  Dynamics GP 1.0 was released in 1993).

 

Add Any Field To Any GP Report

Have you ever needed to add a field to a GP report but the table links are not there to allow it?

Our GP Report Extender tool allows adding any field from any table to any GP report.  Below we use the tool to add “Bin Number” from the Item-Site to the POP Receivings Posting Journal.

The “Receivings Posting Journal” and “Receivings Edit List” are the same report, the title changes depending on when it is printed.

Pay close attention to the section of the report inside the red box.

The “details” of the report are created by the single BODY line which just shows String 2, String 3, String 4, String 5 and String 6.  There is no Item Number, Description, Site ID….anything.  What is going on here?

The “details” table is Purchasing Posting Journal TEMP, which does not contain Item Number.  The other tables also do not have Item Number.  The TEMP table has the numbered string fields.

When that report is generated the Dexterity code is populating the STRING fields with text.  For example, the first several records in the table would look like this:

How are we going to add Bin when Item Number and Site do not exist in the tables we have to work with, and there is no way to link from those tables to the Item Quantities Master table?  What we know is that record 5 for String2 and String5 contain “128 SDRAM” and “NORTH”.  In other words, at some point in printing the report those two fields contain Item Number and Site ID.

GP Report Extender uses an existing Report Writer function called rw_TableGetLineString.  When that function is used GP Report Extended pulls the parameters passed in and calls a SQL Stored Procedure called wrwTableGetLineString.  We will start at the stored procedure because we know what piece of data we need to find and that the inputs will be Item and Site.

Above is the unmodified stored procedure.  Our installation creates it with some sample text in it to help show how to use it.  The input parameters mirror the GP Report Writer parameters for rw_TableGetLineString.  In this case we know we need to pass in Item Number and Site ID to retrieve Bin Number (this is not multi-bins), so the edit stored procedure looks like this:

In Report Writer we are going to add two Calculated Fields to the report:

sBin
rw_TableLineString(
4600
‘POP_PostingJournal_TEMP’.’String2′
‘POP_PostingJournal_TEMP’.’String5′
0
0.00000
0.00000
1 )

sString5
STRIP( ‘POP_PostingJournal_TEMP’.’String5′ ) # STRIP( ‘sBin’ )

sBin is where the real magic happens.  4600 is the Consulting Toolkit Product ID, it is always the first input parameter.  The two string fields are next, 0 is an integer we are not using here, and the two 0.00000 are unused currency fields.  Lastly the 1 is an integer switch that maps to iCtrl in the stored procedure, so in this case 1 gets our first custom field, 2 would get something different, 3, 4, 5 and so on.

sString5 concatenates String5 and sBin.  It is important to use the STRIP function to remove trailing spaces.

The last step is to set String5 in the report layout to Invisible and drop the calculated field sString5 on top of it.

If the Item-Site has a Bin Number specified (again, this is not multi-bins, but the same approach could be used to specify a put-away bin with multi-bins enabled) it will print on the report like this:

The SQL shown above could avoid unnecessary queries on IV00102 by checking first if @Str2 contains one of a list of hard-coded sites (NORTH, SOUTH, WAREHOUSE, etc).  As written, it queries IV00102 for every line in the “detail” section of the report, so for example, it would query IV00102 for @Str1 = “———-” and @Str2 = “———-“.

You can learn more about GP Report Extender at the links below:

Consulting Toolkit Manual

Consulting ToolKit

 

MFGPowerPack 2025-10-29

Release Date: 29-OCT-2025
GP Versions: 12/14/16/18
MFG PowerPack Build: 20.269
* PowerATP: (1) Option Set dropdown now sorts in alphanumeric order, (2) Fixed issue where Restrict by MO Status would not restrict which MOs displayed (i.e. still displays Open when Open is not marked) (#202501229)

MOGenerator 2025-10-28

Release Date:28-OCT-2025
GP Versions: 12/14/16/18
MOGenerator Build: 12.151
* MOGen2: fixed issue where once the processor went into the timer loop it would only process one record per call from the timer, rather than processing all records (#202500456)

GPPowerPack 2025-10-28

Release Date: 28-OCT-2025
GP Versions: 12/14/16/18
GP PowerPack Build: 10.196
* UM Schedule Change: in build 8.176 (May 2024) we added a data integrity check on IV30300. There are cases where transactions can be added to this table and the UofM is later removed from the item’s UofM Schedule. This make converting the UofM on that item impossible. However, the check added in 8.176 was checking for ANY invalid data, which turned out to be too restrictive. The utility now only checks the specific item you are trying to change. If a problem exists it will be reported on the error log and the UM change will not be executed for the item.

GPPowerPack 2025-10-27

Release Date: 27-OCT-2025
GP Versions: 12/14/16/18
GP PowerPack Build: 10.195
* Auto-Select Lots: fixed issue that affected the IV Transaction and IV Transfer windows when multi-bins is disabled where it the Auto-Select Lots utility was not populating the QTY Selected field resulting in message from GP “The number of selected lots must be greater than zero.” (#202501226)

LeanMFG 2025-10-27

Release Date: 27-OCT-2025
GP Versions: 12/14/16/18
LeanMFG Build: 6.76
* NEW: Output Item Cost Variance Check. A new Numeric Option has been added to the Sytem and MO Doc Type Setups called “Allowable Output Cost Variance”. This is a percentage of an item’s Current Cost, and applies only to Actual Cost items. The MO must have only one Output Item Number. If Allowable Output Cost Variance is 8% and the total of Input Costs when applied to the Output is more/less than 8% of the item’s Current Cost it will prevent posting and add an error to the Error Log. This check can then be overriden using a new checkbox in the Production Information tab called “Override Output Cost Error”.
* NOTE: if you have modified the MO Entry window, export those modifications before installing the new build. You will need to re-do your modifications on the new version of the MO Entry window.

 

 

 

Customization DS1560- External Component Selection App

Customization DS1560

External Component Selection App

Problem Definition:

ACME needs a simple barcoded component picking solution that is outside of GP. The picking of the components does not need to update the MO in GP. Rather, it should save the data to a SQL table so that a user in GP can use that information to issue the MO.

The component being picked needs to pass the following verification:

  1. The component must be an item number on the picklist.
  2. If the component is a nutrient broth, the item number must exactly match the generic description of the parent.

Solution Overview:

The proposed solution will be delivered as an external application that can be added to the desktop of the warehouse workstations. This application will require the workstation to have an ODBC connection setup so it can make a connection to the SQL Database. A SQL User ID will need to be created to be used by this application to connect.

The type of barcode scanner this application is designed for is a keyboard wedge style.

Design Features:

Ingredient Scanner

The person doing the picking will have paperwork that includes barcodes for the MO Number and Components to pick. When picking an MO, the user will use the ingredient Scanner window.

A screenshot of a computer screen

Description automatically generated

Field Function
MO Number The focus will default to the MO Number field. If the MO Number field is populated and a new MO needs to be scanned, click the CLEAR button to reset the window. Scan an MO Number Barcode on the paperwork. If the MO cannot be found in GP, or does not have a picklist, the field will flash red and user will not be able to continue to scan. If the MO is valid, the field will be populated and the focus will move to the ingredient field.
Ingredient Scan the Ingredient (item number) from the paperwork. The enhancement will perform the following validations:

  1. Verify the item is on the picklist for the selected MO.
  2. If the component is marked as nutrient broth, the item number must match the Generic Description of the parent item on the MO.

If either of these validations fail, the Scan Status field will turn red and the message will read “Invalid Item.” The focus will return to the Ingredient field to scan again. If the validation passes, the Scan Status field will turn green and the message will read “Item Added.” The focus will return to the Ingredient field to scan again.

In both cases, the last scanned ingredient for the displayed MO in this session will be displayed. If a successful scan needs to be backed out for some reason, the user can click the UNDO button. This will remove the scan from the system.

Recording Scans in GP

After an item is successfully scanned, the data will be pushed to a SQL table within the company database. The table will include two columns- MO Number and Item Number.

ACME will use this information when issuing material to the MO. There is no GP interface in this estimate to view the contents of the table, but the table will be available for ACME to create a Smartlist or use any other reporting products that can pull from SQL tables.

Assumptions/Requirements:

  1. The Warehouse workstation must have an ODBC connection to the SQL Server setup.
  2. Only one GP Company is being accessed from this application.

NOTE: This design can be reimagined with various table columns.

For information on this design, or any other WilloWare customization or product, please contact us:

www.willoware.com/contact-me/

 

CompleteCount 2025-10-24

Release Date: 24-OCT-2025
GP Versions: 12/14/16/18
CompleteCount Build: 5.66
* Tag Submission Wizard: fixed issue in Tag Submission process that caused the process to fail updating the variance quantity. The issue was introduced in build 5.64.  The entire tag process runs correctly, during the tag submission process the stock count lines ‘counted quantity’ is updated but the variance quantity is not calculated.  The variance quantity on the stock count lines and serial/lot table can be updated via SQL if needed.  Please contact us for update scripts if you are unable to install this update before performing your next count.
* Post Stock Count: added check on Post button to look for lines with missing GL accounts. If any exist the user will be warned and the window will display only lines with Missing GL Accounts.

MFGPowerPack 2025-10-16

Release Date: 16-OCT-2025
GP Versions: 12/14/16/18
MFG PowerPack Build: 20.268
* Updates for GP18.8. The updates are backwards compatible to all versions of GP from 2013 up.
* Scrap Entry: (1) The New SR Num button now asks if you want to create a new SR before it generates the next number. (2) If an SR Num is manually entered and it does not exist the user will be asked if they want to create a new SR. (3) If Post To GL and/or Create Journal Entry are marked in Setup AND the MO Status is CLOSED, the user will receive a warning: “This MO is CLOSED. You can create a Scrap Record but it will not adjust costs.”. (4) When posting and the MO is closed it will not attempt to create a journal entry. This fixes a situation where it was creating $0 journal entries.

 

Customization DS0901- Pick Ticket Resorting

Customization DS0901

Pick Ticket Resorting

Problem Definition:

ACME has multi-bins enabled in GP, but finished good inventory is all in one bin. To make it more efficient to pick inventory during order fulfillment, ACME would like to arrange the lines on the Pick Ticket by:

  1. Item User Defined Field #1, then
  2. Item Number

By default, GP normally prints a Picking Ticket in same order in which the lines are entered on the Sales Transaction.

Design Features:

Pick Ticket Sorting

There is no user interface for this enhancement.

ACME will need to use the SOP Blank Picking Ticket Bin Sequenced report. This version of the Pick Ticket uses a different set of field to sort the report, which will allow the enhancement to force the desired sort order.

A screenshot of a computer

AI-generated content may be incorrect.

SOP Blank Picking Ticket Bin Sequence is printed by marking the Bin Sequenced box, shown above.

When a Pick Ticket is printed, GP adds lines to a temporary table used by the report. The enhancement will determine the correct/desired order of the lines and reorganize this table prior to printing. The lines will be ordered on the report by:

  1. Item User Defined Field #1 (Sorted alphanumerically, with blank/empty UDF #1 sorted at the bottom.)
  2. Item Number

The Item UDF#1 values will NOT be displayed on the report. It will simply sort those values, and then by Item Number within each Item UDF #1 grouping. There will not be a break between Item UDF#1 groupings.

Assumptions/Requirements

  • ACME must use the SOP Blank Picking Ticket Bin Sequenced report

For information on this design, or any other WilloWare customization or product, please contact us:

www.willoware.com/contact-me/

 

CompleteCount 2025-10-14

Release Date: 14-OCT-2025
GP Versions: 12/14/16/18
CompleteCount Build: 5.65
* Updates for GP18.8. The updates are backwards compatible to all versions of GP from 2013 up.
* Updated Excel Export and Import to use OpenXML. This is expected to yield a 4x improvement in export/import time.

Dynamics GP Support 2025

Date: 14-OCT-2025

Last year around this time I provided some numbers on the version of Dynamics GP used by our customers.  Since Summit is just around the corner and support is likely to be a hot topic, I wanted to revisit this topic.

Here is last year’s post: Dynamics GP Support

Last year I left off the decimal places, so the numbers look a bit different this time around, but it is the same overall distribution:

  • 82.63% – GP18.x (any GP18 version)
  • 7.08% – GP2016
  • 5.19% – GP2015
  • 2.08% – GP2013
  • 1.23% – GP2010
  • 1.70% – GP10

Last year about 23% were on a version below 18, this year it is 17%.  GP2010 and GP10 haven’t changed, and we’ve seen some movement from 2013 and 2015 to 18.7.

The main take away is that there are a significant number of Dynamics GP customers happily running their businesses on some version of GP below 18.  The software continues to work just fine, and we continue to support them.

Summit may create excited blog posts and emails mentioning these topics:

  • GP Lifecycle
  • Dynamics GP Roadmap
  • Microsoft Support
  • Timelines
  • Or even the scary and completely wrong “end of life”.

As you can see from our numbers, those posts and emails are just noise that is not backed up by real world usage.

-Brenner

MFGPowerPack 2025-10-08

Release Date: 8-OCT-2025
GP Versions: 12/14/16/18
MFG PowerPack Build: 20.267
* NEW Module – BOM BINS: Adds the ability to specify a Material Issue Bin at the BOM-Component level. When present this bin will be used rather than the Item-Site Material Issue Bin. This gives you the ability to specify a Material Issue Bin for a Component that is different depending which finished good is consuming it. This module also adds “MO Bins”, which adds the ability to specify a Material Issue Bin and Receipt Bin per Manufacturing Order. Additionally, the logic for performing the bin selection is contained in a SQL function which can be edited to provide your own custom bin selection logic.


* NEW TWK- Suppress Mfg Sales Item Detail When Not Short. Normally the window always opens for every line if the item’s fulfillment method is Make To Order – Manual, which can be confusing when it opens on a sales line an there is not a shortage. Enabling this Tweak will suppress the window if there isn’t a shortage.
* NEW TWK- Revaluation Detail: the Journal Entry created by a Standard Cost Revaluation does not provide a reference to the Item Number related to each distribution. This tweak tracks the Item Number, Location Code and Quantity On Hand associated with each distribution, and changes the Distribution Reference to contain the Item Number.


* Actual Cost Rollup: (1) fixed Pending Amount/Percent radio buttons (2) fixed table creation process that was missing some fields resulting in errors
* FULL PROCESS INSTALLATION REQUIRED: The updates are backwards compatible to all versions of GP from 2013 up.

 

Virtual Trigger VT1478- MFG Fulfillment Enhancements

Virtual Trigger VT1478

MFG Fulfillment Enhancements Scriptlet

Description of Need:

ACME uses the Sales Fulfillment History functionality provided by the Manufacturing module. ACME would like to improve efficiency by addressing the following needs:

#1 Item Maintenance – Fulfillment Detail: Although there is an Item Class setting, it does not automatically get applied to new items. (it can be rolled down from the Item Class which will update all items in the Class.) This can result in the Maintain Shipping History setting being missed for new items which then results in delays in fulfillment because the Fulfillment History Entry does not open. ACME would like to ensure that the Maintain Shipping History box is always marked.

A screenshot of a computer

Description automatically generated with medium confidence

#2 Fulfillment History Entry: ACME often has 15-20 lines or more on a Sales Transaction and the Fulfillment History Entry window opens once for each line. Since everything being fulfilled is on one shipment, all of the information is repeated on each line. This requires a lot of user time. ACME would like to enter information into he Fulfillment History Entry window once, then for each subsequent line fulfilled, have the information already entered be used to automatically create a Fulfillment History record AND keep the window from opening.

A screenshot of a computer

Description automatically generated with medium confidence

ACME scans/enters the Tracking Number into the Ship BOL field. They also re-enter this same information into the Sales User Defined Tracking Numbers window. ACME would like to have the Tracking Numbers that are entered into the Ship BOL field automatically copied to the Sales User Defined Tracking Numbers window.

A screenshot of a computer

Description automatically generated

Description of Solution:

WilloWare will create Scriptlets for use in the Virtual Triggers module of Consulting Toolkit:

Consulting ToolKit

The Scriptlets will provide the functionality described above.

This solution requires the purchase of WilloWare’s Consulting Toolkit Virtual Triggers module.

For information about this solution, or any other WilloWare customization or product, please contact us:

www.willoware.com/contact-me/

 

Customization DS1469: Purchasing Account Allocation

Customization DS1469

Purchasing Account Allocation

Problem Definition:

ACME needs the ability to split a purchase order expense among several accounts. Currently, GP only allows the selection of one purchasing account per PO line item. All PO line items are non-inventory items and ACME always creates a Shipment/Invoice.

The allocations to other purchasing accounts are based on a percentage of the PO amount. This amount will be determined at the time of PO Entry. The first two segments of the account number will be the same, and only the third segment needs to be selected. The user needs to be able to select the third segment and percentage.

ACME may partially receive a PO item, and the allocation percentages are to be calculated for each receipt. For example:

PO Cost $100

Account Split required:

Acct #1 = 60%

Account #2 = 40%

Receipt #1 $20

Account Split posted:

Acct #1 = 20 * (60/100) = $12

Acct #2 = 20 * (40/60) = $8

Receipt #2

Account Split posted:

Acct #1 = 80 * (60/100) = $48

Acct #2 = 80 * (40/100) = $32

Solution Overview:

A solution will be developed that will track the purchasing account allocations during PO entry and then apply those to the POP Invoice at the time of posting.

Design Features:

Purchase Account Allocation

The user will enter a purchase order for a non-inventoried item as usual. When a line is selected, the user will navigate to Additional >> Account Allocation

Graphical user interface, application

Description automatically generated

From the PO Item Detail Entry window, the user can also access the window from the Additional menu.

Graphical user interface

Description automatically generated

Field Function
Item Number Displays the Item Number from PO Entry.
Purchases Account Displays the Purchases Account that is assigned to the Item Number.
Allocation Displays the current allocation to the default Purchases Account. As allocations are added to the scrolling window, the amount will decrease. The sum of all allocations will always add up to 100%.
Segment ID Enter or select from the lookup at Segment ID. The Segment ID selected here will replace the third segment of the default Purchases Account. If the new account number created by swapping out the segments does not exist, the user will be warned and will not be able to continue.
Description Displays the Account Segment Description.
Allocation Enter the allocation percentage for the additional segments. The sum of the values in the scrolling window can not exceed 100%. If an entry in the window causes the total to be over 100%, the user will be warned and unable to continue.

Receivings Transaction Entry:

When the user adds a PO Line item to a Shipment/Invoice, the enhancement will recalculate the PURCH distributions and split it using the Allocations from the PO. If the line is only partially invoiced, the proportional allocation percentage will be maintained.

If no allocations were set up on the Purchase Order, then only the default account will be used.

Graphical user interface, application, table

Description automatically generated

After the document is posted, these are the distributions that will appear in the GL.

IMPORTANT NOTES:

  1. There are no controls to prevent the user from changing the PO Purchasing Account in PO Entry AFTER allocation percentages have been set. Doing so may make the swapped account number invalid. If the Receiving Process encounters an invalid account number, it will ignore that portion of the allocation and keep the amount in the default account.
  2. The Allocation percentage can be changed on the PO line after a portion of the quantity has been received. If allocations are changed, all future receipts for the PO line will use the new allocation percentages.

Assumptions/Requirements:

  1. ACME is only receiving Non-Inventoried items.
  2. ACME is only entering Shipment/Invoices.
  3. The functionality described above will not work with eConnect, any software that uses eConnect, or any software that directly writes to, updates, or deletes from SQL tables.
  4. The functionality described above is intended for the GP Desktop client.
  5. National Accounts functionality is NOT used.
  6. Advanced Distribution functionality is NOT used.
  7. Unless otherwise noted in this document, reporting is not included in this estimate.
  8. Unless otherwise noted in this document, Word Template functionality is not addressed.
  9. Unless otherwise noted in this document, the enhancement will not integrate with 3rd party products. Some examples of 3rd party products would be:
  • An ISV plug-in product, including WilloWare products
  • A dexterity customization designed by another developer
  • Dynamic GP Modules including, but not limited to:
  • Project Accounting
  • MDA
  • Analytical Accounting
  • Copy functionality found in SOP, POP, and Inventory
  • Field Service
  • Extended Pricing
  • Manufacturing

For information on this design, or any other WilloWare customization or product, please contact us:

www.willoware.com/contact-me/

 

Customization DS1557- Extended Pricing Price Update Utility

Customization DS1557

Extended Pricing Price Update Utility

Problem Definition:

ACME uses Extended Pricing with GP. They have both universal pricelists for items as well as customer specific pricelists. ACME often makes price increases or decreases for specific customers. These price changes can be either for all items in the price sheet, or specific items.

The items on the price sheet have the following characteristics:

  1. Only one unit of measure per item.
  2. There is usually more than one price break.

The source of the item list used by the price update utility can come from both an external source, (Salesforce), or from users within GP.

Design Features:

Staging Table

The enhancement will create a staging table in the company database. This table will be used by both the Salesforce process and the UI mass update window in the next section. ACME will be responsible for populating the table from Salesforce.

The table name and final field names will be provided after project approval.

Field Function
Customer Number Required for Import. The customer must exist in GP. It is a key field of the table.
Price Sheet ID When records are added to the staging table, this field can be blank. If it is populated, the PS must be both in GP and assigned to the customer. The PS will be filled in from the GP. (See next section)
Item Number Required for Import. The customer must exist in GP, and belong to the Price Sheet ID.
Quantity From If price breaks exist, enter the starting quantity of the price break. If only one price break exists, this should be set to 1 by default
Consolidate Price Breaks True or False. Set this to True (1) if the utility should remove all extra price breaks (if they exist) and set the item to use only one price break.
Update Method 1 = Fixed Price

2 = Percent Change

Price Value If the Update Method is 1 (Fixed Price), the value entered here will be the NEW PRICE of the item on the price list.

If the Update Method is 2 (Percent Change), the value entered here will be the percentage increase or decrease of the CURRENT PRICE.

Example 1:

Current Price = $100

Update Method = 2

Price Value = (10)

This is read by the enhancement as a 10% decrease in price. Therefore, the new price is 100 – (100 x 0.10) = $90

Status This field will display the current status of the line. It will get updated by the enhancement. Lines imported from Salesforce should be imported with a value of 0. The possible values are:

  • 0 – New Line. This line has been added to the staging table but not verified and/or ready to be pushed into the Extended Pricing Tables.
  • 1 – Ready to Process. This line has had its Price Sheet added and is ready to be added to the Extended Pricing Table.
  • 2 – This line has been successfully processed and Extended Pricing module has been updated to reflect the change.
  • 3 – This line did not pass all of the validations required to update the Extended Pricing module. Error may include:
  • Customer Number does not exist in GP
  • Price Sheet is not assigned to the Customer
  • Item Number is not assigned to the Price Sheet ID
  • Price Break does not exist
Error Displays the error message if the Status = 3

Price Change Utility

Navigation: Tools >> Utilities >> Inventory >> Price Change Utility

A screenshot of a computer screen

Description automatically generated

Field Function
Update Prices Runs the update utility. All lines that pass the error checking will have their prices updated based on the logic selected for the line. If the line was marked to consolidate breaks, then all price breaks greater than the marked line will be deleted from the price sheet.

The enhancement will back up all data prior to making table changes, so if the outcome needs to be reversed, the data will be available. This estimate does not include any functionality to perform the restore if required.

After processing, the Status flag for the line in the table will be set = 2. After processing, lines will not be removed from the table. ACME will need to manually remove the lines.

Since the key on the table is Customer Number – Item Number – Qty To, future price changes for this combination WILL override older updates.

The Update Process will be written as a SQL stored procedure so that if ACME wants to automate the process in the future using a SQL job, it will be available.

VALIDATE Validates the lines. This is for the lines that may have been imported from Salesforce as the UI will validate on the fly. Any lines that do not pass the validation will be marked with a warning symbol and will not be processed.

Errors may include:

  • Customer Number does not exist in GP
  • Price Sheet is not assigned to the customer
  • Item Number is not assigned to the Price Sheet ID
  • Price Break does not exist

The Validation Process will be written as a SQL stored procedure so that if ACME wants to automate the process in the future using a SQL job, it will be available.

REDISPLAY Fetches new lines from the staging table if lines were added while the window was open.
X This field is not editable. It is only a visual indicator to indicate which line is currently selected.
Customer ID Enter or select from the lookup the Customer ID to update. If there are records already in the staging table, this field will be populated with that value. If a non-customer specific price sheet is being updated, leave this field blank.

After the customer is selected, the enhancement will attempt to locate the customer specific price sheet. The customer specific price sheet uses the logic described in the setup window. If one is found, it will automatically be populated.

Price Sheet ID Enter or select from the lookup the Price Sheet ID to update. If the Customer ID is blank, the lookup will display ALL Price Sheets, otherwise it will only display Price Sheets that are assigned to the Customer.

This field is required in order to use the Export, Import, and Find Items buttons.

EXPORT TO EXCEL Sends the contents of the scrolling window to Excel so that the Value can be updated.
IMPORT FROM EXCEL Imports lines from an Excel spreadsheet. Any lines that already exist in the scrolling window will be overridden with the import. The import file must be formatted with data beginning on Row 2 and columns as follows:

  1. A = Customer Number
  2. B = Price Sheet ID
  3. C = Item Number
  4. D = Qty To
  5. E = Update Method – 1 = Fixed Amount, 2 = Percent Change
  6. F = Value of the change
FIND ITEMS Opens the Find Items window. This is used to add items to the scrolling window. See Below.
Item Number Displays the Item Number that will be updated for the selected Price Sheet.
Qty From Displays the Qty From Price Break.
Qty To Displays the Qty To Price Break
Update Method Displays the method that will be used to calculate the new price. This will either be Fixed Amount or Percent Change. The Update Method is set when:

  1. The item is added to the staging table from Salesforce
  2. The item is selected using the Add Items window

The scrolling window could be a mix of Fixed Amount AND Percent Change update methods for a given Price Sheet.

Amount This field displays the amount of the change. It is displayed as a unitless value, however, depending on the Update Method:

  1. Fixed Amount – Value is expressed in dollars. This will be the NEW price of the item.
  2. Percent Changed – Value is expressed in percent. A value of 10 will cause a 10% increase in price. A value of – 10 will cause a 10% decrease in price.
Consolidation Breaks This checkbox is marked if all price breaks AFTER the currently marked break should be deleted from the price list. For example, if ABC-001 has 3 breaks:

1-10 = $10

11-50 = $8

51-99999 = $6

If the Break for 1-10 is added to the window with this check box marked with a $2 increase, the new Price Sheet will be:

1-99999 = $12

If the Break for 11-50 is added to the window with this checkbox marked with a $2 increase, the new Price Sheet will be:

1-10 = $10

11-99999 = $10

Find Items

A screenshot of a computer screen

Description automatically generated

Field Function
DONE Closes the window and returns the Price Change Utility with the selected items loaded.
Customer ID Displays the Customer ID from the PS Utility window.
Pricesheet ID Displays the Pricesheet ID from the PS Utility window.
Find Items Where Field Dropdown options:

  • Item Number
  • Item Class

Conditions Dropdown Options:

  • Is equal to
  • Is not equal to
  • Is greater than
  • Is less than
  • Is greater than or equal to
  • Is less than or equal to
  • Contains
  • Does not contain
  • Begins with

Use the filters to build a selection set of items to add.

Display Choose to filter the added items to all items, only those active on the price sheet, or only inactive items.
ADD Adds the filter set chosen from above to the text field below the buttons.
REMOVE Removes a filter set from the text field below the buttons.
RUN QUERY Uses the filters to build a SQL query that will select items from the pricesheet ID to add to the PS Utility window.

Assumptions/Requirements

  1. The functionality described above will not work with eConnect, any software that uses eConnect, or any software that directly writes to, updates, or deletes from SQL tables.
  2. The functionality described above is intended for the GP Desktop client.
  3. National Accounts functionality is NOT used.
  4. Advanced Distribution functionality is NOT used.
  5. Unless otherwise noted in this document, reporting is not included in this estimate.
  6. Unless otherwise noted in this document, Word Template functionality is not addressed.
  7. Unless otherwise noted in this document, the enhancement will not integrate with 3rd party products. Some examples of 3rd party products would be:
  • An ISV plug-in product including WilloWare products
  • A dexterity customization designed by another developer
  • Dynamics GP Modules including, but not limited to:
  • Project Accounting
  • MDA
  • Analytical Accounting
  • Copy functionality found in SOP, POP and Inventory
  • Field Service
  • Manufacturing

For information on this design, or any other WilloWare customization or product, please contact us:

www.willoware.com/contact-me/

 

Tariff 2025-09-09

Release Date: 9-SEP-2025
GP Versions: 16/18
Tariff Build: 7.23
* Fixed issue with tariff calculation when using a fixed amount per item where it was not correctly multiplying the per item calculation by the sales line quantity.

Customization DS1552- Mass Import AP Apply Records

Customization DS1552

Mass Import AP Apply Records

Problem Definition:

ACME issues pre-payments in GP to Vendors. After the payables invoices are posted in GP, users need to apply them to the pre-payment. The list of invoices are in an Excel file and ACME would like a way to quickly import the Apply information into GP to make the Apply process more efficient.

Design Features:

Auto-Apply from Excel

Navigation: Apply Payables Documents >> Additional >> Auto-Apply from Excel

A screenshot of a computer

Description automatically generated

This window can only be accessed if there is a Vendor and Document Number displayed in the Apply Payables Documents window with an Unapplied Amount greater than $0.

Field Function
File Enter or browse from the button the Excel file to import
Auto-Apply Processes the Excel file. The file will open and GP will read the lines from top to bottom, using the logic on the next page to do the Apply. After the routine runs, the Apply Payables Documents window will refresh and all of the lines that could be applied will be marked, and the Apply Amount will be updated.
Cancel Closes the window without processing the file

Excel File Read/Write

The Exel file ACME will use for this process is displayed below:

A screenshot of a computer

Description automatically generated

The import enhancement will use columns B, E, and I for the import.

B = Vendor ID

E = Invoice Number

I = Payment Number

The enhancement will begin reading lines on Row 2.

The import routine will perform the following validation during processing. If a line does not pass the validation, and thus cannot be applied, the error “Could Not Apply” will be written back to the Excel file in Column J. The validations considered in the utility will be:

  1. The invoice is posted
  2. The document type is Invoice
  3. The invoice is not on hold
  4. Both documents are in the same currency
  5. Apply amount will be greater than $0

If a line passes the validation, it will be applied. Lines will be applied until the Unapplied Amount on the payment is $0.

Assumptions/Requirements

  1. The functionality described above will not work with eConnect, any software that uses eConnect, or any software that directly writes to, updates, or deletes from SQL tables.
  2. The functionality described above is intended for the GP Desktop client.
  3. National Accounts functionality is NOT used.
  4. Advanced Distribution functionality is NOT used.
  5. Unless otherwise noted in this document, reporting is not included in this estimate.
  6. Unless otherwise noted in this document, Word Template functionality is not addressed.
  7. Unless otherwise noted in this document, the enhancement will not integrate with 3rd party products. Some examples of 3rd party products would be:
  • An ISV plug-in product including WilloWare products
  • A dexterity customization designed by another developer
  • Dynamics GP Modules including, but not limited to:
  • Project Accounting
  • MDA
  • Analytical Accounting
  • Copy functionality found in SOP, POP and Inventory
  • Field Service
  • Extended Pricing
  • Manufacturing

For information on this design, or any other WilloWare customization or product, please contact us at:

www.willoware.com/contact-me/

 

MFGPowerPack 2025-09-08

Release Date: 8-SEP-2025
GP Versions: 12/14/16/18
MFG PowerPack Build: 18.265
* Scrap Reporting: (1) Posting Scrap now adds records to the MO Activity window. It will create a record for posting the Scrap Transaction, and if it is set up to create Journal Entries, it will also add a “Financial Activity” record. The Expansion Button (blue arrow) will open the Scrap Transaction in Scrap Inquiry. (2) Fixed an issue with the MO Scrap Inquiry window that caused an error when filling the display.
* MRP Exclusion Utility: (1) Further testing with MRP found that there are multiple places where it adds records to the MRP Exclusions table, so attempting to change/add/remove records from the table is pointless because MRP will repopulate it. Accordingly the MRP Exclusion setting is no longer editable in our MRP Exclusion Utility window. Additionally, the MFG MRP Exclusions window can add bogus records (i.e. invalid item-site combinations) which then cause MRP to create new item-site records in IV00102 (Item Qtys Master). Due to this we advise not use the MFG MRP Exclusions window–only use WilloWare’s MRP Exclusion Utility. (2) Opening the MFG MRP Exclusions window now automatically open MRP Exclusion Utility and closes MFG MRP Exclusions.

LeanMFG 2025-09-02

Release Date: 2-SEP-2025
GP Versions: 12/14/16/18
LeanMFG Build: 6.74
* This release includes several important changes that prevent users from doing things that can lead to three related Check Links errors (“Transaction quantity total was adjusted for document…”, “Batch Number has been added”, and “The batch total was adjusted for batch LEANMFG”). (1) It was possible to select the LEANMFG holding batch for posting in IV Series Post and Master Posting, (2) Deleting an MO did not update the Batch Total, (3) Scrolling through documents in the MO Entry window could caused the Batch Total to update incorrectly, (4) If you made a change to Inputs or Outputs and then clicked the Clear button and said NO to saving changes the Document Totals would not update, (5) If you closed MO Entry without saving changed the Document Totals would not update.
* Select Lot Number (Lot Entry) window: now has an option to sort Available Lot Numbers by Expiration Date.

GPPowerPack 2025-08-26

Release Date: 26-AUG-2025
GP Versions: 12/14/16/18
GP PowerPack Build: 10.193
* PO Doc IDs: when PO Doc IDs are required the PO Entry window will remember the last used Doc ID and not prompt again unless the last used was the default GP PO Number.
* SOP Rules: if one or more SOP Rules have been added but the “SOP Rules” has not been enabled in the main Setup window there will now be a warning when the SOP Rules window closes and the main Setup window will scroll to the “SOP Rules” checkbox.

MFGPowerPack 2025-08-21

Release Date: 21-AUG-2025
GP Versions: 12/14/16/18
MFG PowerPack Build: 18.264
* Vendor Pricing: fixed error (“Illegal address for field rgView in script Display . Script terminated”) caused by the following scenario: If the SO-PO Preview window is closed quickly after it opens, Vendor Pricing forces the Vendor Pricing Inquiry window to close before it has finished displaying the pricing information.
* PowerATP: Free Forward- modified the logic of the Free Forward Quantity (FFQ) and Date, also added a color indicator dot (red/green) to highlight inventory conditions. (1) Green & 0/0/0000: ATP is always positive. FFQ shows the lowest ATP in the calculation period. (2) Red & 12/31/9999: ATP ends negative. FFQ shows the lowest ATP in the calculation period. (3) Red & Specific Date: ATP is negative at some point but ends positive, FFQ shows the lowest positive ATP after the shortage and the date it occurs.

 

Free ForwardATP always positive:

ATP ends negative:

ATP goes negative but stays positive.  After the shortage this is the date of the lowest positive ATP quantity:

The Free Forward Quantity (FFQ) and the Free Forward Date combine tell you the earliest date and quantity you could provide a customer if no changes are made to existing orders.

Green & 0/0/0000: ATP is always positive, FFQ shows the lowest ATP in the calculation period

Red & 12/31/9999: ATP ends negative, FFQ shows the lowest ATP in the calculation period

Red & Specific Date: ATP is negative at some point but turns positive and stays positive. FFQ shows the lowest positive ATP and date it occurs.