Tuesday, March 31, 2009

How good an Estimator are you ?

Software estimation is difficult.

At Dynamics GP Land Steve Endow writes about the 30% rule while preparing estimates for Custom Software Development. He talks about how while estimating, its generally a good idea to add 30% extra time to account for risks, changing requirements and overheads. Steve has found this to be practically useful while reviewing budget to actual.

The most interesting thing for me from the post is Steve's point about how often making an accurate estimate means you end up being less competitive compared to firms that are bidding low.

"By presenting a realistic estimate that reflects the likely total cost of the project, you run the risk of giving people sticker shock. Salespeople want to sell the solution at a "competitive" price, which is almost always lower than your estimate. And then there are clients who see the total hours and assess that the estimate is "too high", or simply too expensive for them, killing the project. And if you are bidding against a firm that can't estimate accurately, does not provide a realistic estimate, or simply underbids, your estimate will look much too high, even if it is accurate, thereby damaging your credibility and trust with the client."

Estimation for software projects is a extensive subject in itself. There's a great book by one of my favorite authors, Steve McConnell on this subject - Software Estimation: Demystifying the Black Art (Best Practices (Microsoft))

Something I learnt from the book was how bad majority of us are at making good estimates. Go ahead and take a quick 5-10 minute quiz from the book to find out how good you are at estimation.

So how good an Estimator are you ?

It might be an eye-opener.

Monday, March 30, 2009

Why User Classes are still relevant in GP 10

Mark Polino writes about how User Classes are STILL relevant in GP 10. They are used in Organizational Structures and thereby Account Level Security.


Friday, March 27, 2009

Visual Studio Tools for Dynamics GP - Resources

Getting Started ?

Visual Studio Tools SDK for Microsoft Dynamics GP 10.0 - SP3 is out as of today, which supports VS 2008. You will need VS 2005 SP1.

If you get the error -".Net Framework 2.0 not detected", and you know you have .Net 2 installed, install the SDK from the SP2 download, where this error has been fixed.

Developer Toolkit Samples - There a couple of nice applications, that you can build on.

a) Field Defaulter - Uses events to default City and State fields when a user enters a ZIP code in Customer Maintenance

b) Estimate Freight - Estimates Freight Amounts for Sales Documents and fills it in the Sales TRx Entry Window.

Developer Toolkit Resources at Developing for Dynamics GP Blog

Need help ?

VS Tools Forum by Steve Gray - Excellent Resource for all VS Tools related troubleshooting and questions . 

Microsoft GP Developer Newsgroup

Tips and Tricks

Menus for Visual Studio Tools for Microsoft Dynamics GP 10.0 by David Musgrave and GP Developer Team- Add-On which helps in adding Menu items to GP Menu and to add your a form directly to the menu. This has been a great solution to one of the complicated parts of developing apps with VS Tools.

Reading a config file with VS Tools by Dave Dusek- Extremely helpful in adding custom switches for your app so you can make changes on the fly in your app.

Code For Centering the Add-In Windows on Screen regardless of Resolution by Mohammad Daoud

Monday, March 16, 2009

AA Table Changes in GP 10 SP2 / Feature Pack - Update

Last month, I had written about the table changes in AA after GP 10 SP2.

Below are some more details, which might help those of you who have custom reports reading data from Analytical Accounting. Thanks to Rubal for detailing these out.

Earlier there were only AAG3XXXX series of tables for AA codes with GL Transactions. They contained data for both Open Year and Historical Year data.

Now, the Open Year and Historical Year data is stored in different tables. For Historical Years data AAG4XXXX series of tables have been added. 

There is one historical table corresponding to each open table. Example - For table AAG30001, new table AAG40001 has been added for historical data.


New Table Name

Corresponding Table for Open Year Data




This is the Header table. It contains Journal Entry number and AAHdrID



 Account Distribution of transactions



 Assign Percentage details for the transactions



 Dimension Codes used with the transactions



Tables in GP


New tables Added for AA Alias

Aliases for Dimension codes was a cool new feature that was added in the Feature pack. (Create a grouping of Analytical Accounting Transaction Dimension codes as defaults when entering analytical information on a transaction similar to the account alias in General Ledger. A default combination of transaction dimension codes will help increase speed and accuracy for data entry and enable users to create more than a single set of defaults for the transaction dimensions.)

This information is stored in:

New Tables

Display Name

Technical Name

Physical Name

AA Alias master



AA alias transaction Dimension Code




Modified tables:


Physical Name



aaAliasID field added


Tuesday, March 10, 2009

AA Error : "Cannot insert duplicate key in object"

If you are using Analytical Accounting and get the error which is something like "[Microsoft] [SQL Native Client] [SQL Server] Violation of PRIMARY KEY constraint 'PKAAG20003.' Cannot insert duplicate key in Object 'AAG20003'."

The table name could be different.

Your first steps should be to check out KB article "897280" which has a script to fix this error. This should solve the problem 90% of the times.

However,  if you still get the error, this means the numbers are correct in the AAG00102 table and a duplicate key error is often caused by an invalid record in the AAG2000X  series of tables.

Run the following script against your company database -

select * from AAG20000 where aaSubLedgerHdrId = 0

select * from AAG20001 where aaSubLedgerHdrId = 0

select * from AAG20002 where aaSubLedgerHdrId = 0

select * from AAG20003 where aaSubLedgerHdrId = 0

If you get any results - those are the entries causing the problem. The 0 in the aaSubLedgerHdrId is not a valid record since the next number needs to come from the AAG00102 table. 

Hope that helps!

Microsoft Surface and Dynamics!

Am I dreaming or could in a few years, we could be designing and using Dynamics Applications that worked on Microsoft Surface ?! I have been in love with Microsoft surface ever since I saw the first demo. Apple ofcourse kind of ruined it for Microsoft here too .... but thats another story.

I always thought Surface made sense only in Casino's and five star Hotels ... but this is fantastic!

Read more on Waldo's blog here

 "we got a new demo on the Surface. You know the Surface? It's a multi-finger-touchscreen-coffee table (yes … table (OK, not "coffee" table Smile)) from Microsoft. Now, they are developing a new Warehouse-application on it. It is showing a map of the warehouse (the different zones, bins , locations, …). It is actually an intuitive application where you can move items, create transfers and other warehouse activities by dragging and dropping … . It's linked with dynamics, so it generates the necessary activities for your warehouse employees… . Cool! Next, they showed the integration of it with the Business Process Manager … . The Surface is delivering nice graphical capabilities, where it's gong to be quite intuitive to work with the apps that are run on it."

Wednesday, March 4, 2009

'Feel Good' Tech Support

So often we hear stories of bad tech support, so once in a while when you get good tech support, it might not be a bad idea to mention it.

Greenshades - with their e-Filing center has been popular with Great Plains customers for a while. Last week I got a call from a customer who was on a deadline and getting an error while filing. The customer was frantic and his sense of urgency transferred to me. He said he was trying, but just couldn't get in touch with Support.

I called the Greenshades tech support people. It took me about 30 minutes to wait in queue before I could speak to the tech support guy.

I was ready to blurt out the story with urgency befitting that of a person being rushed to the ER. However, as soon as the person on the other side of the phone said - "Hello there!" (Calm voice, possibly smiling), all I could do was just mention the problem. We got the problem resolved pretty quickly and it was all over.

This has happened to me multiple times over the years, with separate tech support people at Greenshades. Each time I call, and there is an emergency from a customer, and each time I hear a calm voice on the other side, with somebody who is smiling, and get a quick resolution.

Greenshades has the happiest group of Tech Support people I know of.