flocking character encoding from a PDF to eConnect

In Dynamics GP SOP line detail entry we have a custom helper window whose task it is to automatically create a new inventory item for our sales staff, when they need one for special orders.

The work flow is that the details (as shown in screenshot) of the item to be created are copied and pasted from our supplier’s documentation into the window fields and then the assign button is clicked. A new items and price is created by eConnect in the background and that newly created item is added to the current order window.

I was called to look at an exception caused by the add-in window, it turned out to be eConnect moaning about invalid XML characters. 


Here is the text that was being copied into the item description field of the form.flock

I retyped the dashes and removed and reinserted the spaces, as they were obvious candidates to be outside normal character ranges. Still it was failing with invalid XML character exception. I manually typed it all and it worked. Next move was to paste the text into notepad++.


Notice the [US] block, look again at the fl in the above text, it turns out that it is a character ligature! Really easy to miss when under pressure to get an issue resolved. The “fl” is actually one special character.

The real lesson here is to clean the user input when accepting it to be used by eConnect. As these kind of characters should not be allowed into GP (in my opinion), perhaps it should cause a validation error on the field? An alternative is to replace the odd characters with a question marks in the onvalidate event, a convention seen in some other applications. This would draw the attention of the user to the unusual character(s).

I’ve added a validator and all is now well.

ReIMAGINE 2016 - GP 2016R2 Preview of possible new features

Image result for reimagine 2016

The professional GP community are all converging on Fargo, ND in US as I write this for the partner only conference, ReIMAGINE. We are all anticipating more detail on some of the teaser features for Dynamics GP 2016R2 that were released earlier in the year at the Amplify conference in LA. ReIMAGINE is also about helping the GP partners by equipping them with the necessary tools to sell the product, this area of partner support is receiving some specific focus during the course of this year. I would also expect a lot of conversations and content to be considering Dynamics365 that is the new branding/product used to wrap up the various business tools in the Microsoft portfolio into a coherent on-line cloud provisioned offering. Particularly noting  the new kid on the block, Madeira, the online ERP offering targeted around the NetSuite market.

More information on the conferences for Dynamics GP can be found in this post Dynamics GP Conferencecs - which should I attend?


So out of ReIMAGINE we expect more detail on what has made it into GP2016R2. The following list I am certain will have changed by this time next week and more information about what some of the bullet point features actually translate into will be known. No doubt there will be other unexpected announcements and some juicy stuff under non-disclosure that we will just have to wait for.


Photo from Twitter, with permission from Jen Kuntz

Draft Possible Features announced at Amplify were:


  • Add Bar Code field to Item Maintenance
  • Link Credit Card Invoices To Original Invoices
  • Cancel PO when linked to a Requisition
  • Do not automatically unapply other documents if one is voided
  • POP Invoice Match Batch Approval
  • Display Tax Percent for Historical Transactions
  • Adjust customer balance calculation to use unapplied credit amount instead of whole credit amount.
  • PM Aged Trial Balance with Options - print transactions where the Document Number has a special character in it



  • Intercompany Bank Transfers
  • Payables EFT payments to hit Bank Reconciliation module in lump sum amount
  • Add history tables for voided and posted deposits in Bank
  • G/L distribution line to open expanded
  • Include taxes for POP to FA Link
  • Enables users to save a new Asset ID with a suffix other than '1'
  • Have the Safepay file pull the CHECK NAME used on the actual check and not from the Vendor Master file


  • Track history on Termination / Rehire Dates
  • GP - Print W2 allow payroll user to print using self service W2 report
  • Turn off Garnishment reports in Posting Setup
  • Option to roll down changes from setup to inactive records
  • Change department code in all files including history - support tool


  • Multi tenant support for OData services
  • PowerBl in Web Client Home Page
  • Make SmartList Designer SmartLists available in Advanced Lookups
  • Show user name in message "Batch is being edited by another User”
  • One Drive for emailing documents from GP


Out of these lists lets look at two:

  • Show user name in message "Batch is being edited by another User”
  • One Drive for emailing documents from GP

The message “Batch is being edited by another user”, is a classic message in GP, the problem is who is editing it? – there are people that have intercepted the message using GP add ins, to present an alternative message with the user name that is editing the batch. I guess this feature will bake that in into the core product, such a simple move that will remove so much frustration from users.

Batch is being edited by another user


One Drive is an online storage folder provided as a service by Microsoft. It has a programming API or can be used via web browser. Why use one drive for document storage as part of GP? There are two good reasons I can see.

One Drive

Firstly Dynamics GP can be provided as a service, over the internet via web browser, this means document storage needs to be shared too. Although document attach in GP allows documents to be placed into the GP database, this is not ideal for all circumstances, as many organisations will not be comfortable at using expensive SQL server storage for large document stores. It also locks the document away inside the database with a very limited user interface provided in GP to manage the documents. One Drive makes document management easy and open to online users with a rich user interface. The second reason is that some companies no longer have file servers for users. A growing number of distributed companies have moved this responsibility of the enterprise file system to One Drive. This makes sense if you have, say ninety offices around the country. Sharing documents is better placed in the cloud.



Also expecting an updated GP product roadmap!


I hope everyone enjoys ReIMAGINE 2016, and can’t wait to find out more about these kinds of new features and more!

Visual Studio Duplicate Menu Items

Visual Studio Duplicate Menu Items

Launching Visual Studio with a full drive caused the menus to duplicate, even after restart and making space they remained.

I had to use a Visual Studio reset to clear the problem, be warned it messes up your config, you will need to reinitialise your VS extensions.

Devenv.exe /resetuserdata

Dynamics GP eConnect taIVCreateItemPriceListHeader & item pricing defaults in IV00101

It should be noted that creating/updating a price list header record using eConnect updates the following item card default field values;
  • Price level,
  • Pricing method
  • Price group
  • Default selling unit of measure

These fields are reflected in the GP GUI here:

taIVCreateItemPriceListHeader shown in Dynamics GP GUI

The taIVCreateItemPriceListHeader is not the clear name for this when you go looking for it, if like me you know it lives in the item table, but naming is one of those subjective and difficult matters developers struggle with.
When using eConnect to create/update the price list header, if no price level is passed to eConnect, then eConnect will look at the item master to get a value (aka table IV00101). If none has been defined then error occurs.
If a value is passed in through eConnect, then those values for these fields will always over write the values in the Item Master (IV00101).
Here is the SQL fetching the price level…
FROM IV00101(nolock)

That price level is then much later on used to update the item master table IV00101, this is similar to the way the other fields work too.
There is no condition on running this update, IV00101 will always be updated with existing values or passed in values. This is the only update that occurs from using this eConnect method, note that the item record needs to exist already.
PriceGroup = @I_vPriceGroup,

This is a little confusing as thinking from a SQL table perspective, you would have expected the default price level to be part of the item create/update eConnect method. Instead it follows the GUI where default price level is part of price list editing rather than item maintenance.