Saturday, February 28, 2009

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

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

Wednesday, February 25, 2009

Some Dynamics GP humor

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

Monday, February 23, 2009

Developing for Dynamics GP weekly summary

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

Thursday, February 19, 2009

Displaying Hijri dates in Microsoft Dynamics GP

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

Wednesday, February 18, 2009

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

"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

Saturday, February 14, 2009

Effects of disabling Multicurrency Management

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

Monday, February 9, 2009

Leslie Vail presents "Dynamics GP Distribution Cost Savings" at Convergence 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

Mark Polino's "50 tips in 50 minutes" goes prime time at Convergence 2009

"Gather information on how to get more out of your existing implementation without a lot of cost or effort"

Folks, I have been working on Dynamics GP since 1,996 and I would never dear trying what fellow MVP Mark Polino is about to do. Picture this: the stage... Convergence 2009, the audience... 200 - 300 people, the objective... deliver 50 Dynamics GP tips in 50 minutes. This is no game! However, Mark will turn it into one of the most exciting presentations you will ever want to attend during this year's Microsoft Convergence event. Make sure you separate some time for this and I would suggest you bring a camcorder to this one.

Related Articles:

For all Convergence 2009 articles on this site, click here.

Until next post!

Mariano Gomez, MIS, MCP, MVP, PMP
Maximum Global Business, LLC

Panoramic of New Orleans
The home of Convergence 2009

Thursday, February 5, 2009

The importance of linking your fields to their prompts in Microsoft Dexterity

When you have been doing Dexterity development for as long as I have been, a lot of things are automatically assumed and taken for granted when developing an add-on solution.

A recent article by Patrick Roth over at Developing for Dynamics GP got me thinking on a common mistake that Dexterity developers (novice and experienced!) run into when developing add-ons for Microsoft Dynamics GP, or even in their own standalone solutions.

In his article, Patrick points out the fact that you can change the caption of a field -- in Dexterity lingo, this is called a prompt -- by using VBA. The code he published can be generalized as follows:

Generic Private Sub Window_AfterOpen()

Private Sub Window_AfterOpen()
fieldname.Caption = "Some Prompt Here"
End Sub
So, why the need to link fields with their corresponding prompts? -- I will get back to Patrick's article later and it's relation to this topic.

The answer is simple. Because they are a number of field properties that directly affect the behavior of the linked prompts. These properties are:

Visible. This property allows a developer to establish whether a field will be shown or hidden on a window interface. Visibility can be controlled via the Dexterity statements hide field and show field. When the hide field statement is executed the field's Visible property is set to false and the linked prompt is automatically hidden along with the field. The reverse effect will occur with the show field statement.

Editable. This property allows a developer to establish whether a field will allow data entry or not. Editability can be controlled via the Dexterity statements lock {field} and unlock {field} -- the keyword field is optional. When the lock statement is executed the field's Editable property is set to false and the linked prompt is automatically grayed out along with the field. The reverse effect will occur with the unlock statement.

Required. This property allows a developer to establish whether a field will force the user to enter data in it or not. Since the font color and style of a required field can be controlled via Dexterity with the Field_SetRequiredFormat() function, it is absolutely necessary to link the field to it's prompt for the visual effects to take place when toggling the Show Required Fields mode under User Preferences.

NOTE: This applies to integrating applications. For standalone applications please check the Dexterity help file for the Field_SetRequiredStatus() function.

This brings me back to Patrick's article and the generic code posted above. If you don't link your fields to your prompts, you will not be able to change the caption via VBA! fieldname.Caption allows a VBA developer to control a field's linked prompt created with Dexterity.

This simple ommission can turn an ordinary customization request into a semi-development project, since most likely, you will have to go back to Modifier, link the field to the prompt, not to mention wrangling with the Dynamics GP systems administrator for security permissions to your modified object. If you are talking about 5 users, this may not be an issue, but in environments with 100's of users and SOX compliance issues you may end up kissing your contract goodbye!

So the next time you start dragging fields to a window and adding prompts, think... "Have I linked all my fields and prompts?"

Until next post!

Mariano Gomez, MVP
Maximum Global Business, LLC

Internet Explorer scripting errors on Microsoft Dynamics GP Home Page

Microsoft Dynamics GP home page is a relatively new and fascinating feature. While users are becoming more and more familiar with its use, it is still puzzling when errors show up inadvertly. The following error was reported by a user of Dynamics GP a few days ago:

Home Page Error

Line: 335
Char: 6
Error: The data is invalid
Code: 0
URL: file:///c:/Documents%20and%20Settings/[user_folder]/Local%20Settings/Temp/tmp16A.tmp

Each time the user refreshed the home page, the same error would manifest with a different temporary file.

In fact, the line number, character, and temp file may vary from machine to machine in this case. However, the resolution to this problem is relatively simple:

1. Close all applications on the user desktop
2. Open Microsoft Windows Explorer and go to the folder indicated, c:\Documents and Settings\[user_folder]\Local Settings\Temp.
3. Highlight all files and delete them
4. Launch Dynamics GP and log on into the system.

This should take care of the error!

Related Articles:

KB article 913822 - The home page displays the XML code for the home page when you start Microsoft Dynamics GP

KB article 916673 - Error "Metrics are not available because Microsoft Office Chart Components ..."

KB article 917998 - How to disable the home page feature in Microsoft Dynamics GP

KB article 918313 - Frequently asked questions about the home pages and area pages features in Microsoft Dynamics GP

Related articles on this site:

- Restricting Access to Metrics on Microsoft Dynamics GP 10 Home Page. Click here.
- Changing Microsoft Dynamics GP 10.0 Home Page Background Color. Click here.

Until next post!

Mariano Gomez, MVP
Maximum Global Business, LLC

Dynamics GP upgrade from 8.0 to 10.0 and Year End closing

My friend Doug Pitcher over at Rose Business Solutions has more information on GL year end closing after upgrading from Dynamics GP 8.0 to Dynamics GP 10.0. Apparently, there is an issue with the GL_Account_SUM_HIST_View not being updated correctly after the upgrade, causing a failure near the end of the closing process. Doug also has some recommendations on overcoming this issue. Please click here to read more.

Until next post!

Mariano Gomez, MIS, MCP
Maximum Global Business, LLC

Sunday, February 1, 2009

Developing for Dynamics GP weekly summary

This is the part my 3-year old loves the most... David Meego!

Over at Developing for Dynamics GP the week went by with a common topic: "think before you customize!". We are all familiar with customizations and why we do them. However, I have seen customizations made for all the wrong reasons:

a) This is how it used to work in our old system
b) This will save us hours of processing time
c) Our business is very complex
d) Our requirements are unique and there is no one doing it like us out there
e) The person who has this function in the company refuses to work in GP without the customization

I have an answer for each of these, but you will have to read it in my next MSDynamicsWorld article. :-). So here are the articles that made the headlines this past week:

1. Before you write a customization, check Solution Finder. That's correct! Solution Finder is the leading source for ISV third party products and customizations and chances are, there is a product out there that already does a great deal of what you need it to do. I can also tell you that most ISVs are willing to workout the additional 10% of what you need to meet all your requirements, because most likely, your requirements can enhance their product making it a more interesting proposition for the overall community. Click here to read more.

2. Customizations that you do not need to do. Patrick Roth tackles the issue from a different perspective: existing functionality! The truth is, Dynamics GP is such an extensive product that they are many little pieces of code and functionality that goes ignored by customers (and frankly speaking Partners too). However, Patrick brings a few of these customizatios that you should avoid. Click here to read more.

Other topics

Developing for Dynamics GP, takes a look at Mohammad Daoud's method for Controlling a VST Window Position. Pssst, I have gotten words that this guy is seriously being considered for the July MVP roadster. Bottom line, he deserves it!

The Dynamics GP world will never be the same again without the Fabulous Matt G. Matt has made a name for himself by presenting some of the most complex pieces of code in front of thousands of customers at past Convergence events. I remember a presentation he did with Steve Balmer in Fargo at one of the tech conferences. That was outstanding!

Until next post!

Mariano Gomez, MIS, MCP, MVP, PMP
Maximum Global Business, LLC