This week, free Visual Basic for Applications workshop with the Dynamics GP Blogster

February 28, 2009

Hi folks!

I have been asked a number of times about some of the Modifier with Visual Basic for Applications (VBA) customizations featured on my blog and those over at Developing for Dynamics GP. It’s no secret that I co-author a number of development posts with my friend David Musgrave in the spirit of educating and delivering some of the best articles to the end-user and development communities alike.

In light of this, this week I will deliver a 3-day Online Modifier with Visual Basic for Applications workshop, featured right here on this blog, that will step through a real-life customization from end to end.

What you will need

For the workshop, you will need a registered copy of Microsoft Dynamics GP v10, the Fabrikam sample company, and familiarity with the overall Dynamics GP navigation.


This workshop assumes you have some familiarity with Modifier and have prior programming experience in Visual Basic or any other development environment. If you are an end-user just looking to understand some of the advance Modifier principles, tag along and why not, try it for yourself.

The project

I love the newsgroups because they address real-life situations faced by real-life individuals. In this post, the developer wants to add a VBA customization to the Equipment Maintenance window in the Field Service module, which requires opening the Customer Lookup window, a part of the Smartlist dictionary. The goal is to return the Customer Number from the lookup window to a custom field added to the Equipment Maintenance window. This custom field is used to track a regulatory entity setup as a customer. The customization will need to store the regulatory entity associated to the equipment.

Workshop Agenda

Hope to see the hit counters climb this week so pass the word along and let your friends and coworkers know about this workshop.

NOTE: All links will become available at 8:00 AM EST (GMT -5:00) on the date the article is schedule to post.

Until next post!

Mariano Gomez, MVP
Maximum Global Business, LLC


Some Dynamics GP humor

February 25, 2009

It’s not often that I publish some humor on the blog, but I thought this would be a good one. I have been working on a few projects at my current Dynamics GP customer for the last 8 months now and walked up to one of the buyers in the Purchasing department to ask an EDI related question, with my eyes wondering around his cubicle walls, and came across this hilarious picture with the following caption.

I guess after all, this is how some users feel despite our upbeat efforts to help them day in and day out.

Until next post!

Mariano Gomez, MVP
Maximum Global Business, LLC

Developing for Dynamics GP weekly summary

February 23, 2009

Over the past weeks I have neglected publishing the Developing for Dynamics GP weekly summary you have come to rely on for a breakdown of some of the coolest articles around the blogosphere, but this obeys a bit to a bit of breakdown in my own health — late nights writing are not helping the case either :-). So lets get to work:

First, my personal story…

My dear friend, David Musgrave has been very hard at work on the topic of translating Dexterity applications, delivering some nice articles on the subject and showing how Microsoft Dexterity can help you in the process. This is a topic that brings a lot of good memories of my early days with the Dynamics GP system and Dexterity. As many of you know, I am the original architect and developer of the Microsoft Dynamics GP Spanish release and back in 1996 the tools were available, but the details on the translation process were very sketchy. The “does” and “dont’s” were pretty much built on the fly and based on experiences already accumulated by the Polish and German IAPs development teams at the time — Back in the days, the former Great Plains Software operated with International Alliance Parners (IAPs) which did not share much information among themselves and were geographically dispersed making the knowledge transfer process even less efficient.

While I had the opportunity to work hand to hand with Tom Irsfeld, former project manager with the then Great Plains Software International Team, and Dave Gaboury, former Engineer on the Dexterity platform development team, and two of the best in the business, getting the first release of the Spanish version to run trouble-free took almost 8 months of hard and continuous work. I must mention that the translation team put together for this project consisted of 25 people. Our mistake at the time was not to hire individuals with an accounting background to assist with the process of translating all the strings and message resources.

The above leads me to this… Translating Dynamics GP may prove to be one of the most extensive (and expensive) undertakes. It’s a project that involves decoding some of the idiosyncrasies of your specific region or country, knowing the accounting terminology — those widely accepted anyways, and adding localizations specific to the country or region, such as taxation issues, disbursement, and credit issues, etc. However, at the end of the journey, it’s a very rewarding and career advancing opportunity.

So, what’s on?

Dexterity: Designed for Translation – David exposes some of the Dexterity platform design principles that make the magic of translation possible — all without modifying your application after it’s built. Click here to read more.

Writing Translatable Dexterity Code – These are the basics, also known as “Software Engineering 101”. These are some of the top considerations when designing Dexterity applications that will make it outside the US. Click here to read more.

Writing Multi-lingual Dexterity Code – Come and learn the “does” and “don’ts” of writing a world class Dexterity solution. If you are a developer writing add-ons for Microsoft Dynamics GP and you are planning on expanding your market to overseas, this article is for you. Click here to read more.

Translating Dexterity Code – In reality, you translate the strings and messages you seen on screens and on reports, along with the application messages displayed by warning dialogs. Nonetheless, this is the bulk of the work and you may require a team of translators working with application developers to work within the language and development constraints. Click here to read more.

How to Horizontally Flip the Windows – Believe it or not, at one time there was an Arabic version of GP. I do remember my friend David Gaboury working on this in Fargo when I first visited in October of 1996. As you know Arabic is read and written from left to write and there was functionality built into Dexterity to address this. Click here to read more. Also, check my article on Displaying Hijri dates.

Dexterity and Double Byte Languages – Dexterity has many capabilities, but double-byte support is certainly not one of them. The primary issue? Design. It was never written to address double-byte sets. Click here to read more.

Other topics that made it to the blog

MVPs presenting at Convergence – If you heading down to the Crescent City in March, please be sure to stop over to check out fellow MVPs Mark Polino and Leslie Vail sessions. Click here for more details.

Tools sessions at Convergence – Are you a developer in the looks for more information about Modifier with VBA, Web Services, or eConnect? Do you ever wonder how to chose the right tool for your Dynamics GP development project? Then you need to check into these sessions for more information.

Time for a change!Developing for Dynamics GP is sporting a new look, please stop over and let the team know if you like the new presentation of the blog.

Until next post!

Mariano Gomez, MVP
Maximum Global Business, LLC

Displaying Hijri dates in Microsoft Dynamics GP

February 20, 2009

In the last few days, many of my friends in the Middle East have been asking how to display Hijri dates — as opposed to Gregorian dates — in Microsoft Dynamics GP. It has been among the latest topic on the Microsoft Dynamics GP Developer Community newsgroup as well, and of course, the object of my curiosity for the last few days.

First, a bit of background!

The Hijri calendar is used to date events and celebrate Islamic holidays and festivities. It is based on the lunar cycle, having 12 lunar months in a year of about 354 days. Because this lunar year is about 11 days shorter than the solar year, Islamic holidays, although celebrated on fixed dates in their own calendar, usually shift 11 days earlier each successive solar year, such as a year of the Gregorian calendar. Islamic years are also called Hijra years because the first year was the year during which the Hijra occurred—Islamic prophet Muhammad’s emigration from Mecca to Medina. Thus each numbered year is designated either H or AH, the latter being the initials of the Latin anno Hegirae (in the year of the Hijra).

Microsoft Dexterity does not have native support for Hijri, but Microsoft SQL Server does out of the box. Support for Hijri in SQL Server is surrounded by legends, myths, and the stuff of science fiction. Legend has it that Microsoft sent an army of software engineers and architects to the Middle East to collect records and conduct statistical analysis on the Hijri calendar records from Kuwait and Saudi Arabia. The resulting algorithm embedded in many Microsoft products was denominated the Kuwaiti Algorithm. Whether this is truth or not is left to the folks at Microsoft.

The Solution

SQL Server Convert function provides support for Arabic style dates by using the Kuwaiti algorithm. The following query will return an Arabic style date for today’s Gregorian date:


-- Hijry conversion of today's date

select convert(varchar, getdate(), 131)

The query result is as follows:

24/02/1430 10:34:02:710PM

(1 row(s) affected)

Given this, we can create a Visual Basic for Applications (VBA) user form in Microsoft Dynamics GP that will in turn format a query. We can then execute this query via ActiveX Data Objects (ADO). For this example, we will use the Receivables Transaction Entry window and will be adding a push button next to the date field with Modifier. Once we have the form changed, we will then add the window, Document Date field and the newly added push button to VBA. The user form will have the necessary code to convert the Gregorian transaction date to Hijri.

The following is the outcome of our project:

1) Custom window with push button to load user form

* click image to enlarge

2) User form displaying Gregorian date to Hijri


The following links will allow you download the package files for this project:

v10 – DisplayHijri.Package: contains the modified Receivables Transaction Entry screen and the custom user form.

v10 – References.Package: contains references for Microsoft ActiveX Data Objects 2.6

Related Articles

How to Horizontally Flip the Windows – From the Translating Dexterity Applications series at Developing for Dynamics GP, by David Musgrave.

Until next post!

Mariano Gomez, MVP, MCP
Maximum Global Business, LLC

New Article on MSDynamicsWorld: "Customizing for the wrong reasons"

February 19, 2009

When carefully planned, customizations can be the difference between a successful and smooth business operation and a system that only gets you 80% of the way..

Once more I have managed to publish a new article over at This time around, I address 5 (wrong) reasons used by companies to begin customizing the system. Please take a look at the article and let me know your thoughts.

Until next post!

Mariano Gomez, MVP
Maximum Global Business, LLC

Effects of disabling Multicurrency Management

February 14, 2009

If not working for a company that does business outside of the United States, it is difficult to understand all of the implications of the Multicurrency Management module. In fact, I would venture to say that it is one of the least understood functions in GP despite it’s obvious name.

For those of you however using the module, you may find that in these times of organizational downsizing and consolidation, Multicurrency may no longer be necessary and perhaps may need to be disabled to prevent entering transactions in other currencies. This is just what happened to a user seeking some advise on the issue on the Microsoft Dynamics GP newsgroup.

Disabling Multicurrency

Let’s start by saying that once transactions have been entered in other currencies, you may no longer use the Multicurrency Access Setup window to disable these currencies for a Dynamics GP company. This would be, if it were possible, my preferred method to prevent a user from entering transactions in other currencies.

The only other option is to disable the module, but this is where the scare factor comes into play because the unknowns. Lets remember that the only condition to enter transactions in GP is to have a functional currency in place, and for companies not requiring multicurrency, the reporting currency is the same as the functional currency.

With this in mind, disabling Multicurrency should not cause any harms (beyond the necessary actions outlined below) to your transaction system. To disable Multicurrency, we will need to go to the Registration window and uncheck the module option.

Since the distribution modules are extremely sensitive to Multicurrency, you will first need to run Check Links on the Multicurrency Setup tables to adjust the system’s transaction tables for the new settings to avoid receiving the following message:


Upon deactivating the Multicurrency module, you will still be able to see information in originating and functional currency for transactions previously entered in other currencies, however, you will not be able to record new transactions in other currencies and the system will default to functional currency for these new transactions. All Currency ID fields will be disabled throughout the entire system, as shown here for the Sales Transaction Entry screen, preventing the selection of any currency assigned to the company.

What happens to unposted transactions?

Unposted transactions will need to be deleted and re-entered in functional currency, so it is recommended to post these before hand.

What happens to posted transactions?

If you have open transactions in originating currency in the Payables Management and Receivables Management modules, you wil not be able to apply functional currency to these — unless you are using the Cashbook Management module, a feature available to customers outside of the United States.

If you have performed this operation in the past and you feel I left out something, please feel free to drop your comments and let me know about your experiences.

Until next post!

Mariano Gomez, MIS
Maximum Global Business, LLC

Leslie Vail presents "Dynamics GP Distribution Cost Savings" at Convergence 2009

February 10, 2009

Fellow MVP Leslie Vail will be presenting a jammed packed, money saving tips session on Microsoft Dynamics GP distribution modules, at the upcoming Microsoft Convergence 2009 in New Orleans. Leslie is a Microsoft Certified Trainer and has years upon years of experience delivering quality presentations at Microsoft technical and non-technical events.

Leslie’s presentation is coded GP33 in the Convergence agenda.

Until next post!

Mariano Gomez, MVP
Maximum Global Business, LLC