Friday, April 30, 2010

Testing Framework for Microsoft Dynamics GP now available for download

If you happened to have attended the past Microsoft Dynamics GP Technical Conference 2009 in Fargo, North Dakota, USA (David Musgrave and I co-presented 2 sessions at this conference) and also attended the Microsoft Dynamics GP Testing 101 session presented by Rob Bernhardt and Grant Swenson you may remember that they showcased a number of tools to assist in the testing of Microsoft Dynamics GP.

You will be glad to know that the toolset is now available for download on the MSDN code library, here.

If you are a Microsoft partner, ISV partner, or even a customer who happens to have a product developed, you will want to take these tools for a test drive.

Until next post!

Mariano Gomez, MVP
Maximum Global Business, LLC

Wednesday, April 28, 2010

Microsoft Dynamics Convergence 2010 - Wrap Up and Materials

Microsoft Dynamics Convergence 2010 is now gone and I am certainly looking forward for what's next. This Convergence happens to be the first I attended since the days of Stampede and the stats are even more impressive: 8,500 attendees and 400+ sessions, 84 Microsoft Dynamics GP specific sessions, 100+ presenters.

Thanks to all of you who went to our sessions and showed your support and encouragement for the work we've done over the years in the Microsoft Dynamics GP community. We sincerely appreciate it. On our end, we will continue to encourage you to fill out your evaluations, use the tools we demonstrated, visit the Microsoft Dynamics Community site, use the forums and newsgroups, and ask the hard questions.

Note: Evaluation forms will be open until Tuesday, May 11, 2010 11:59pm PDT. Convergence will continue to donate $1 to UNICEF for every attendee who completes an evaluation.

It was finally great to meet MVP Mark Polino in person, who delivered one of the most acclaimed sessions, CSGP07 Getting More Out of Microsoft Dynamics GP: 50 MORE Tips in 50 Minutes. You can download Mark's session material here.

To my friend David, this will certainly not be the last of our adventures and as always, it was the highest honor to co-present with you. I hope you have a safe trip home and that we soon find our selves working on the "next big thing". Support Debugging Tool has come a long way from the nights and days we've spent discussing its numerous features and I am sure we will always find something else to add to make the life of Microsoft Dynamics GP customers and partners easier. Keep up the good work!

The Dynamics GP Blogster's Convergence 2010 Coverage

Microsoft Dynamics Convergence 2010 - Day 1
Microsoft Dynamics Convergence 2010 - Day 2
Microsoft Dynamics Convergence 2010 - Day 3
Microsoft Dynamics Convergence 2010 - Day 4
The Dynamics GP Blogster Facebook Pictures

David Musgrave's Convergence 2010 articles

Microsoft Dynamics Convergence Atlanta 2010 - Day 0
Microsoft Dynamics Convergence Atlanta 2010 - Day 1
Microsoft Dynamics Convergence Atlanta 2010 - Day 2
Microsoft Dynamics Convergence Atlanta 2010 - Day 3
Microsoft Dynamics Convergence Atlanta 2010 - Day 4
Microsoft Dynamics Convergence Atlanta 2010 - Wrap Up

Sessions Material Downloads

CSGP28 Microsoft Dynamics GP Customization Tools Unravelled - download here.
CSGP29 Tools for Administering Microsoft Dynamics GP like the Pros - download here.

Until next post!

Mariano Gomez, MVP
Maximum Global Business, LLC

Microsoft Dynamics Convergence 2010 - Day 4

Tuesday- Microsoft Dynamics Convergence 2010 day 4 marked the beginning of the end. However, it wasn't looking like that for David and I. After all, this would be the day we would be repeating both sessions, CSGPR28 - Microsoft Dynamics GP Customization Tools Unravelled and CSGPR29 - Administering Microsoft Dynamics GP Like the Pros.

First up was CSGPR28. The session went down well with attendees demanding more time given the number of tools involved. David and I reckon an hour is definately short for this type of topic, but the overall idea of showing the capabilities of the various tools is there, highlighting there is not one "best" tool to get the job done.

We took a break to go to lunch in the Meal Hall, we were joined by Mr. Beat Bucher from Forensic Technology. Lunch was short lived and off we went to catch MVP Mark Polino's session CSGPR07 - Getting more out of Microsoft Dynamics GP: 50 MORE Tips in 50 Minutes. Mark wowed the auditorium with useful tips for everyday users and also invited them to attend our closing session.

At this point, David and I were extremely drained. We sat at the end of level 4 in building A just to take our minds off the conference activities for a bit. We quickly regrouped and off we were to do tech check for our upcoming and final session, CSGPR29.

I have to admit that the break prior to our session was very energizing, as we delivered what I consider yet our best session of Convergence. Here are a couple of pictures I snatched away from Michael Johnson, the MBS Guru's Facebook page.

Kickoff Slide

David and Mariano on stage

After the session, David and I went back to the Expo Hall only to find the entire area almost dismantled. It's amazing to think that an area almost the size of 5 American football fields (the Expo Hall and the Meal Hall) can be taken down completely in less than 4 hours. We then decided to run over to to the Presenters Support room to take one final look at our sessions' stats. Our CSGP29 and CSGPR29 were both still ranked in the top 10 among all sessions delivered at Convergence.

We then went over to the Omni Hotel's bar area to relax for a bit. On the way there we caught up with the Dart Enterprises team, Todd McDaniel from Dynavistics. We sat down for a while to remember the days of early computing with Commodore Amigas and 64s, Ataris, and so forth and digressed to past projects and acquaintances.

David and I then went to dinner at South City Kitchen in midtown, were we met up with MVP Leslie Vail and her friends, Sheila Jefferson-Ross, Catherine Jacobs, Jackie Smith.

Sheila Jefferson-Ross, Catherine Jacobs, Jackie Smith,
David Musgrave, MVP Leslie Vail, MVP Mariano Gomez

As a final thought, Microsoft Dynamics Convergence 2010 is probably one of the best Convergence events ever! With its 8,500 attendees, with a large number being Microsoft Dynamics GP partners and customers anticipating the release of Microsoft Dynamics GP 2010 made it all that much special.

Please stay tuned for the wrap up post (to follow) as it will include the conference materials with all the demos and documentation we prepared.

Until next post!

Mariano Gomez, MVP
Maximum Global Business, LLC

Tuesday, April 27, 2010

Microsoft Dynamics Convergence 2010 - Day 3

Monday - Microsoft Dynamics Convergence 2010 day 3 began with a bang. David and I would be on stage at 10:30 AM to present our second session, CSGP29 - Administering Microsoft Dynamics GP like the pros. We had high expectations for this session since it was our chance to present the Support Debugging Tool.

We attended a security session presented by Microsoft's Lucas Miller which would serve as entrée to our session. Very interesting to note is that most attendees in the security session showed up immediately after to our session.

CSGP29 went down very well with the attendees, as Support Debugging Tool one again proved that it can centralize a great deal of Microsoft Dynamics GP administrative tasks. I believe the feature that attendees appreciate the most is the powerful security administration via Security Profiler

Our session concluded with a round of applauses and did our presenters duties for the day. We are now both very hopeful that our session will lead customers and partners to install Support Debugging Tool across the board.

Off we were to get some lunch -- have to say that presenting a session can make you very very hungry. After lunch we joined in to the GPUG Security conduit session. Being there was extremely exciting as customers attending the session had a number of interesting real life scenarios that Dave and I were able to provide answers to.

Following the Security conduit session, we returned to the Expo Hall where I was able to catch up with the Microsoft Dynamics Community team. I was able to get a preview of the new Community features which I must say have been dramatically improved over the current offering. The new features are currently being beta tested and should be out sometimes in June. The Expo was busy as ever.

After the Expo Hall, David and I went to the Presenters Support room (B-314) to check on our sessions (CSGP28, CSGP29) eval progress where we met up with the person who made it all happen for all presenters, Ace Martin. I must say that Ace and her team provided valuable behind the scenes assistance to make sessions go as smooth as possible for all presenters.

David, Ace, and Mariano

What would be a Convergence without a party? After a long successful day, David and I went to crash a party being hosted by the Tribridge folks. It was also an opportunity to meet up with my wife who I hadn't seen in all day and some of our friend in town. We also took pictures with some interesting characters.

Fay Camargo, Bono (U2), Marina Dzyura

Bono (U2), David

Bono (U2), Marina Dzyura, Lucille Ball

Lucille Ball, David

David, Marina and I were at the party for close to 2 hours and were off to have a quiet dinner. After dinner, my wife and I dropped David off at the Omni Hotel and went home. After all, the final day of Convergence would prove even more grueling than the previous 3.

Until next post!

Mariano Gomez, MVP
Maximum Global Business, LLC

Monday, April 26, 2010

Microsoft Dynamics Convergence 2010 - Day 2

Sunday - Microsoft Dynamics Convergence 2010 day 2 began as a big day for David and I. After all, today is our first session (CSGP28) presentation.

Today, I had the opportunity to drive down to the Georgia World Congress Center with my wife. Not a bad thing considering the long day ahead. Taking one car was also a smart move as we figured it would be quite a long day and we both would need the other to talk to stay awake on our way back home.

The big event of the day was the opening keynote sessions with Stephen Elop and Kirill Tatarinov. I had the opportunity to update The Dynamics GP Blogster Facebook page with the highlights of the event. If you were there, you will have to agree with me that one of the coolest moments of the Keynote was the introduction of the New Orleans Saints superbowl champion coach Sean Payton.

New Orleans Saint's coach, Sean Payton

Following the keynote session, we attended the General Session, presented by Errol Schoenfish and Chad Sogge. These two gentlemen put on quite a show demonstrating some of the new features of Microsoft Dynamics GP 2010 with the team members of the Product Management team. To note was Errol's closing remarks: "Everyone in the organization needs a Katie"... Katie is Errol's dog, which pushes him to run every morning.

Errol Schoenfish

It was now time to catch up with fellow bloggers and MVPs. This was a very exciting moment as I finally get to put a name to the faces I have been chatting online with for the last couple of years. We all gathered for lunch and went to the Meal Hall, where we were later joined by MVP Frank Hamelly.

In this picture (left to right)
David Musgrave (Microsoft), MVP Leslie Vail, MVP Mark Polino, and Mr. Beat Bucher

Following lunch, David and I went to catch up with other partners and ISVs presenting at the Expo hall. It was great seeing the effort that went into some of these booths, for example Rockton Software's.

Rockton Software's booth

We caught up with the eOne Business Solutions team and spent some time talking about the product.

David and I were off to find a quiet location to discuss a few last minutes adjustments for a session, CSGP28 - Microsoft Dynamics GP Customization Tools Unravelled. Then it was show time! Our session went as fast as it began with a full room. Following the session, we went back to discuss what went well and what did not go so well and overall agreed to refine a few things for our repeat session.

I said goodbye to Dave and went to dinner with a few friends who were in town for the event.

Until next post,

Mariano Gomez, MVP
Maximum Global Business, LLC

Sunday, April 25, 2010

Microsoft Dynamics Convergence 2010 - Day 1

Saturday - Microsoft Dynamics Convergence 2010 day 1 began with me driving down to the Georgia World Congress Center first thing in the morning.

I met up with David to register at the event and go to the Expo hall where we were scheduled to assist with the Microsoft Dynamics GP booth setup. Most of the partners and ISVs with a booth on the Expo hall were also in the process of setting up their stands.

Microsoft Dynamics GP booth

Partners and ISVs getting ready for action

Our assistance consisted of transferring some Microsoft Dynamics GP 2010 Hyper-V images off external hard drives onto the computers that would be used to power the demo flat screens. That would take approximately one hour!

We then deciced to take a small coffee break and went for some fresh air, but captured these images of the banners with the event sponsors:

Back from the coffee break, we returned to the Expo hall to check on our Hyper-V images, but found out that they were still being downloaded, so we decided to poke around the Expo hall to see who we knew, here a some images from that stoll:

David next to a Smart Car

Mark Rockwell of Rockton Software setting up his booth

BRP Spyder

The Meal hall (aprox. 3 Football fields)

After completing the installation of the booth, David and I went to the Microsoft company store where I purchased a few branded shirts for the next few days of the event. It was past 2 PM when we decided it was time to go grab a quick bite. We took the opportunity to catch up with some of the Fargo-based folks manning the Integration and Customization Tools stations at the Help Desk area in the Community and Learning Center (Hall A1-2).

Following lunch, David and I attended a GPUG (GP User Group) conduit session on Microsoft Dynamics GP Development tools. This was a great opportunity to understand some of the issues facing users and prospective GP customers leading up to our session. We took the opportunity to invite folks in the room to our 5:00pm session (CSGP28).

To finish the day we went to the Convergence Reception. A time to relax, have a drink and a meal and chat will old and new friends. There was live music, lots of beverages, and heaps of food.

The GP 2010 Slogan

Convergence attendees heading down to the opening reception

Live tropical music band

It was definitely an exciting day: lots of faces, lots of catching up, but at the end of the day, two hurting feet and catching up to some sleep to get ready for our next day session.

Until next post!

Mariano Gomez, MVP
Maximum Global Business, LLC

Wednesday, April 21, 2010

SQL - Copying Microsoft Dynamics GP Navigation Bar shortcuts from one user to another

I have seen this question come up multitude of times on public newsgroups and forums. In fairly large Dynamics GP installations, Navigation Bar shortcuts tend to be deployed in a standard fashion for groups of users at a time, this is, to ensure all users have the same set of options to perform their functions, or access to company documents, etc. With this in mind, it is very common to setup one user's shortcuts and wanting to replicate these across other Dynamics GP user accounts. Unfortunately, there isn't a facility in GP to allow this.

The following T-SQL script allows you to copy the Navigation bar shortcuts from one user to another:


1 : use DYNAMICS;
2 : GO
3 :
4 : declare @sourceUser char(20); set @sourceUser = 'LESSONUSER2';
5 : declare @destntUser char(20); set @destntUser = 'LESSONUSER1';
6 :
7 : if exists(select * from SY01990 where ScbOwnerID = @destntUser)
8 : delete from SY01990 where ScbOwnerID = @destntUser;
9 :
10: insert into SY01990 (
11: ScbGroupType,
12: ScbOwnerID,
13: ScbNodeID,
14: ScbParentNodeID,
15: ScbShortcutType,
16: ScbSubType,
17: ScbDisplayName,
18: ScbShortcutKey,
19: ScbTargetStringOne,
20: ScbTargetStringTwo,
21: ScbTargetStringThree,
22: ScbTargetLongOne,
23: ScbTargetLongTwo,
24: ScbTargetLongThree,
25: ScbTargetLongFour,
26: ScbTargetLongFive,
27: ScbCompanyID)
28: select
29: ScbGroupType,
30: @destntUser,
31: ScbNodeID,
32: ScbParentNodeID,
33: ScbShortcutType,
34: ScbSubType,
35: ScbDisplayName,
36: ScbShortcutKey,
37: ScbTargetStringOne,
38: ScbTargetStringTwo,
39: ScbTargetStringThree,
40: ScbTargetLongOne,
41: ScbTargetLongTwo,
42: ScbTargetLongThree,
43: ScbTargetLongFour,
44: ScbTargetLongFive,
45: ScbCompanyID
46: from SY01990
47: where ScbOwnerID = @sourceUser
48: GO

You can enhance this script by adding your own transaction commit and rollback features or use as a mechanism to ensure users do not change their shortcuts based on a template user ID. The options are many.

Until next post!

Mariano Gomez, MVP
Maximum Global Business, LLC

Friday, April 16, 2010

Microsoft Dynamics Convergence 2010 Sessions Schedule

Microsoft Dynamics Convergence 2010 will be here in the blink of an eye and I wanted to take this opportunity to thank in advance all of you who will be attending the sessions that David and I will be presenting. If you have not made plans yet to attend our sessions or are still not aware of the schedule, please take a look at the information below (click to enlarge).

Now, visit the Convergence site and make sure you register to attend if you haven't done so. Even if you are not going to be attending our sessions, make sure to still benefit from the wealth of information that will be delivered by other presenters.

See you soon!

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

Tuesday, April 13, 2010

Microsoft Dynamics GP Architectural Foundations Series - Insight Featuring Tim Brookins

This is article 7 of 7 from the series Microsoft Dynamics GP Architectural Foundations Series - featuring Microsoft's Tim Brookins.

Unfortunately and due to Tim's various commitments, it was not possible to have him provide his final insight on the white paper reproduced on this blog. I will continue to work behind the scenes to bring this information to you as it becomes available.

For now, I leave you with a review of Tim's background and accomplishments.

About Tim Brookins

Tim Brookins is a Distinguished Engineer working in the Microsoft Entertainment & Devices Division.

Tim joined Microsoft in 2001 as part of the Great Plains Software acquisition and has 20 years of experience in the business applications space. At Great Plains he was instrumental in producing the company's first offering based on Microsoft SQL Server. Brookins also designed the model-driven architecture that enables products from multiple parties to merge seamlessly into a single solution without source code changes. These innovations formed the technical foundation for the successful Great Plains partner ecosystem. In 1997, Brookins was named the first “Technical Fellow" at Great Plains in recognition of his contributions.

After joining Microsoft, Brookins worked for two years in the Developer Division as part of the Microsoft Visual Studio team. He researched CLR-based, model-driven business frameworks with a focus on advanced customization via model extensibility and managed programming models.

Tim is currently working on the Windows Mobile team, contributing to the company’s Windows phone efforts.

He is based at the Microsoft facility in Fargo, N.D. Brookins spends his time interacting with co-workers in Redmond, Wash., and the Microsoft European Development Center in Copenhagen, Denmark, as an advocate of distributed development.

Brookins holds bachelor’s and master’s of science degrees in electrical engineering from North Dakota State University.

Until next post!

Mariano Gomez, MVP
Maximum Global Business, LLC

From the Newsgroups: Safe Pay and Absolute Value of all Documents

Welcome to another edition of From the Newsgroups, where you will find real life cases of everyday issues. This edition comes courtesy of the Microsoft Dynamics GP Partner forum:

Q: I have setup Safe Pay Configurator. I am having issue with the overall [file] total, which I assigned as a Standard field, Check Amount, and then Amount type, Net Total. When we were testing for the trailing record, the overall document amount is coming out as Issued - Void which is correct because it's a net total, but the issue is our voids are coming without the negative sign so the value is off. Below is the example:

Issued: 1,000

Void: 100

Overall total: 900

Our bank is requesting absolute value [Ed: Checks + Voids] so overall total should be 1,100.

I exported the configurator and imported it to Fabrikam and it works/calculate correctly. Only thing we have different from Fabrikam is Multicurrency is not activated. When I tested it in Fabrikam, here's the result:

Issued: 1,000

Void: -100

Overall total: 1,100

Why is my format working in Fabrikam but doesn't on our production company?

Please advise.

Interestingly enough, it turns out this issue is related to a missing chunk file. Here is the answer from the support engineer.

A: In order to get the absolute value, you will need to install a .cnk file into the GP code folder. The .cnk file would need to be installed on all workstations that generate the Safe Pay file. The file updates the code that generates the file and adds a function that gives the total of the checks and voids. Unfortunately I can't explain why it works in Fabrikam and not in the live company. It does not work correctly in my Fabrikam install so maybe it was the way you generated the transactions for your testing.

If you are experiencing a similar situation or simply need to submit the absolute amount of all documents in the file (checks + voids), please open a support incident with the Microsoft Dynamics GP support team.

Until next post!

Mariano Gomez, MVP
Maximum Global Business, LLC

Sunday, April 11, 2010

Microsoft Dynamics GP Architectural Foundations Series - Conclusion

This is article 6 of 7 from the series Microsoft Dynamics GP Architectural Foundations Series - featuring Microsoft's Tim Brookins.

Tim's whitepaper was originally published in 1999 and it's reproduced here with his permission.


A typical architecture white paper will usually babble on about the popular technologies of the day like Client/Server, SQL Server, Thin Clients, Browser Clients, Stored Procedures, FRx, Office Integration, Report Writing, 2-Tier, 3-Tier, ODBC, Internet, Transact SQL, Windows NT, etc.

This document operates at a more strategic level, primarily because the endless list of technologies are changing constantly. In short, technologies come and go, but architectures are built for the long term. Any meaningful discussion of product architecture must be based on principals or philosophies that are technology independent.

The eEnterprise product architecture is based on a single fundamental premise, with four supporting philosophies:

The value of the business management system is contained in the Business Logic.

• The business logic must be Built to Last
• The business logic must be Built to Grow
• The business logic must be Built to Leverage
• The business logic must be Built to Fit

This document has been dedicated to describing these philosophies in detail. When a specific technology like C++ or VBA has been mentioned, it is only an example of how current technologies are being used to support these long-term philosophies.

While I've tried to avoid mentioning specific technologies in order to focus on the long-term architecture, keep in mind that eEnterprise is the industry leader in technology support. Client/Server, SQL Server, Thin Clients, Browser Clients, Stored Procedures, FRx, Office Integration, Report Writing, 2-Tier, 3-Tier, ODBC, Internet, Transact SQL, Windows NT... Yes, eEnterprise supports them all!

But in the end, never allow a laundry list of technologies from any vendor cloud your vision. Always keep in mind that today's "must have" technologies will quickly become tomorrow's "must replace" technologies. Great technology is not enough. Great functionality is not enough. You need a product that has an established track record of sustained technology and functionality leadership that only a superior architecture can deliver. I hope you'll agree the eEnterprise architecture has the solid foundations you can trust to take your business into the future.

In the next article Tim Brookins offers his insight.

Until next post!

Mariano Gomez, MVP
Maximum Global Business, LLC

Monday, April 5, 2010

Microsoft Dynamics GP Architectural Foundations Series - Built to Fit

This is article 5 of 7 from the series Microsoft Dynamics GP Architectural Foundations Series - featuring Microsoft's Tim Brookins.

Tim's whitepaper was originally published in 1999 and it's reproduced here with his permission.

Built to Fit

Buyers in the midmarket require more than shrink-wrapped applications. It is imperative the system fit seamlessly into the customer’s overall business. The overall fit of the software is determined in two principal ways: customization and integration.

No matter how feature-rich a business management system, each customer will have unique needs not covered in the basic software. The Dynamics architecture must accommodate significant product customization as a basic part of the system. Additionally, the customized business management application must be integrated with all the other applications in the business.

The Dynamics architecture must also recognize that “Built to Fit” must not interfere with the “Built to Grow” philosophy. The process of customization and integration cannot modify the product in such a way that future upgrades are economically impossible. “Built to Fit” must work in a manner that allows cost-effective product upgrades.

Product Customization: What is VBA?

To understand the role of VBA in product customization, let’s begin with Visual Basic. Microsoft Visual Basic is one of the world’s most widely used rapid application development (RAD) environments. It is estimated over three million programmers know how to produce applications in the Visual Basic environment.

Visual Basic produces new, standalone applications. This does not meet the need for product customization. To enable customizations, we would need a special version of Visual Basic which, instead of producing new standalone applications, could “embed” itself inside an existing application. This special version of Visual Basic would allow customizations of the existing application without modifying source code.

It’s important the customizations are accomplished without modifying source code, because this greatly simplifies loading new versions of the business management system during upgrades. If the customization modifies source code, it becomes too expensive to reapply those changes to the new version. This defeats “Built to Grow.”

Microsoft Visual Basic for Applications (VBA) is designed to meet this need. Microsoft VBA is a special version of Visual Basic that can be embedded inside another application. VBA is included as part of the Office suite, and is the primary way end users customize Excel or Word.

In addition to the Microsoft Office products, Microsoft has allowed a select group of software vendors to license this technology. Some common names you might recognize are AutoDesk (AutoCad), Seagate Software (Crystal Reports), Adobe, Micrographix, Visio, and Cognos.

Visual Basic: Good or Evil?

At this point you may be confused. I spent significant time earlier in this document discussing Visual Basic’s weaknesses relative to C++. In this section, I am proudly proclaiming our support for this great Visual Basic technology, VBA. So is Visual Basic good or evil? The answer is both, and I intend to prove this is not just my opinion. Microsoft itself has come to the same conclusion.

The role of VBA in Microsoft Office

The diagram below depicts the role of VBA in the Office product. In the lower left, you see the block labeled “C++.” This demonstrates that Microsoft chose C++ as their base development environment for the Office products (Excel in this specific case). The block in the upper left communicates that the business logic and user interface of Excel is based on C++ code.

Note that the portion of the diagram to the left of the line represents the Microsoft “Internal” tools used to build Excel itself. To the right of the line represents the tools “External” users (i.e., end users) use to customize Excel.

This “Internal” vs. “External” differentiation is key to understanding the role of Visual Basic in Microsoft products. We can see Microsoft believed C++ was the best language to construct Excel. However, just because Microsoft chose C++ for its internal use doesn’t mean C++ was the best choice for external users. C++ is a powerful language, but it is complex and requires some intense training. As a RAD tool, Visual Basic is a much better environment for the public at large. Therefore, Microsoft chose to expose VBA as the primary customization tool for Office.

So is Visual Basic good or evil in this case? It’s clear Microsoft does not consider Visual Basic to be a good choice to build a complex commercial application. However, it is an excellent choice for allowing end users to easily customize the C++ built application.

The Role of Visual Basic in Dynamics

The diagram shown below should look very familiar. The role of Visual Basic in the Dynamics architecture is basically identical to the Office strategy.

The lower left quadrant indicates our choice of C++ as our primary development language. However, like Microsoft, just because we chose C++ as our internal language to build Dynamics doesn’t mean C++ is the best language for external users to customize Dynamics. For external purposes, we choose to support Visual Basic for Applications.

This is the perfect opportunity to deal with some other misconceptions other vendors may have about Dynamics. In some cases, you may hear: “Great Plains added VBA support to their latest release. They recognize Dexterity was a mistake, and VBA is just the first step of throwing out Dexterity and rewriting their whole application in Visual Basic.”

You should now have enough understanding of our (and Microsoft’s) strategies in this area to see how ludicrous this statement is. Because our strategies are identical, try substituting Excel into the same argument just for fun: “Microsoft added VBA support to the latest release of Excel. They recognize C++ was a mistake, and VBA is just the first step of throwing out C++ and rewriting the whole application (Excel) in Visual Basic.”

Of course, neither Microsoft nor Great Plains has any intention of moving away from C++ to Visual Basic as its primary development environment.

So is Visual Basic good or evil? As I promised, it’s both. We believe C++ is a great choice for building large, complex, high-performing commercial applications.We also believe Visual Basic is a great choice as a customization tool. When the roles are reversed, both products become “evil.” C++ would be a terrible choice for customization, and Visual Basic would be a terrible choice for internal development.

Will the real VBA please stand up?

Visual Basic has become a common customization tool for most business management software vendors. Several major business software vendors have released customization products based on some form of Visual Basic-like product. However, it’s imperative buyers understand these products vary widely in their level of Visual Basic support. There are three primary Visual Basic-like products in use today:

    Visual Basic for Applications
    VBA provides all the components needed to customize an application. The project window displays the objects you can customize. The property window displays object properties. You can leverage the MS Forms designer to add new windows, and then add ActiveX controls. Top this off with the full Visual Basic debugger and you get a powerful customization solution.

    Visual Basic Script
    Visual Basic Script is Microsoft’s solution for adding scripting to an application. You get the ability to write code (script), but there are few additional features. For example, there is no MS Forms support for adding windows, no ActiveX control palette, no project or property windows, and only limited debugging.

    Mystic River SBL
    SBL is a Visual Basic-clone product produced by a company called Mystic River Software. This product has a simple Visual Basic-like syntax in its scripting engine, but otherwise bears no resemblance to “real” Visual Basic. Programmers used to the modern Visual Basic environment won’t be familiar with this environment, since there is no forms support, a very basic editor, little or no debugging, no ActiveX control support, and limited COM support.

VBA: Separating the best from the rest
Now that we’ve reviewed the various products used in business management system customization, you are positioned to make an informed assessment of vendor capabilities in this area. However, be advised that vendors using other technologies will use the terms “Visual Basic,” “VBA,” or “VBA-compatible,” even if they are using proprietary, non-Microsoft products like SBL (which has no real Visual Basic code at all).

If a vendor tells you they are using VBA, be sure VBA is actually available in a shipping version of their software. Many financial management software vendors have licensed VBA from Microsoft (by paying a fee), but few are actually shipping software containing VBA. You may be wondering why Great Plains was the first vendor to ship VBA. There are two reasons for this. First, our “Built to Last” architecture allows us to quickly plug in new technologies like VBA without rewriting our business logic. Second, recall the previous section of this document entitled: “C++ vs. Visual Basic: Technology Support.” We discussed how C++ based applications are able to integrate new technologies quicker than products written in Visual Basic.

If you are wondering whether a vendor supports “real” VBA or not, simply ask for a demo. First open VBA inside Excel or Word (just hit Alt+F11 from inside either application and VBA will open). Compare the VBA environment from Office with the vendor’s version of VBA. You will be able to tell at a glance if the vendor’s VBA is the same as the real VBA in Office. Take a moment to look at the Dynamics VBA screenshot on the previous page: it looks just like VBA in Office because it is the very same application.

For an 18-page VBA white paper that describes Great Plains’ implementation of VBA in detail, we invite you to visit the Great Plains DynamicTools web page at [Ed: Link Broken]

Built to Fit: Integration

Recall there were two components in the “Built to Fit” architectural value: customization and integration. We’ve covered customization in detail with our discussion of VBA, so we now turn our attention to integration.

Midmarket customers demand tight integration between their business management system and other parts of their business. For example, consider a business that has a custom-written order processing system that must integrate with the business management system’s receivables module.

To discuss our integration architecture, we’ll use a common framework that breaks down an application into three major components: User Interface, Business Logic, and Database.

Integrating at the database level

Integrating applications at the database level has become a very common approach. As the diagram shows, data is moved directly into the business management system’s database using integration standards such as Open Database Connectivity. This gives applications written in Access, Visual Basic, and PowerBuilder easy, standard ways of integrating at a data level. The Dynamics Import Utility also allows easy access to Dynamics tables:

There are some definite advantages to integrating at the database level (it’s typically very fast), but there are also some drawbacks. First, the end user must understand the structure of the database schema. There are usually hundreds of tables in a typical midmarket business management solution database. Compounding matters, a single “logical” document (like a receivables transaction) may need to be imported into several tables.

A second drawback to database level integration is once you have learned the datamodel and implemented your integration, the datamodel may change during a product upgrade. This is an impediment to product upgrade and goes against our “Built to Grow” philosophy.

Integration at the Business Logic level

To better support our “Built to Fit” and “Built to Grow” values, Great Plains introduces a second type of integration product: one that integrates at the business logic level. Called the Dynamics Integration Manager, this tool allows external systems to be quickly and easily integrated into the business management system.

Because the Integration Manager interacts with the business logic of the Dynamics application, no knowledge of the Dynamics database structure is required. Users simply point the Integration Manager to their external data via a graphical point and click interface, and the data is automatically imported into the business management system.

Any upgrade concerns are also eliminated with this product. Unlike database level integrations, which are susceptible to changes in table structure during a product upgrade, the Integration Manager never fails. When a new version of Dynamics is released, a new version of the Integration Manager is also released which automatically “knows” where to put the external data.

The Integration Manager contains a number of other invaluable features. For example, it is very common for external systems to use a different numbering scheme for identifiers like Account Numbers, Customer IDs, or Inventory Item IDs. The Dynamics Integration Manager can maintain translation tables and automatically translate the IDs during data imports.

Another useful feature is data synchronization. It is common for records like Customers to be tracked in more than one system. The Integration Manager allows these multiply defined resources to be synchronized. For example, if a customer address changes in an external system, that change can be automatically propagated into the Dynamics’ customer record.

In summary, the Dynamics Integration Manager is a key component of our “Built to Fit” architectural value. It allows nearly effortless integration of external data sources that will maintain their functionality across product upgrades.

You can download the original 18-page VBA white paper referenced in this article here.

In the next article Tim presents his "Conclusion".

Until next post!

Mariano Gomez, MVP
Maximum Global Business, LLC