Wednesday, January 23, 2013

OS X vs. Windows

In 2011, I wrote about my initial impressions of a Macbook Air that I had purchased.  At that time, I only wanted the sleek hardware for a new Windows laptop, and I never considered running OS X.  After all, I am a Dynamics GP consultant, a Dynamics GP developer, and my entire world, and that of my clients, is based on Windows applications.

Well, after getting the Macbook Air, I've been coveting the Mac Mini.  I have had relatively bulky mid-tower style PCs as my desktop workstation for almost 20 years, so the incredibly small form factor of the Mac Mini was very appealing.

Over the last year, I've also wondered what it would be like to try and use OS X.  Since I now do all of my development on virtual servers, I no longer install SQL Server, Dynamics GP, or my development tools on my workstation--I do all of my GP related work using Remote Desktop.  MS Office, Firefox, and Remote Desktop probably represent 95% of my work on my desktop computer.  And with multi-platform and "cloud" apps like SugarSync, Carbonite, RoboForm, GoToMeeting, SnagIt, Skype, Evernote, and Spotify, I figured that nearly all of my applications would be available on OS X, just like many of them are available on iPhone and Android phones.

With the release of the updated 2012 Mac Mini, which FINALLY included USB 3 ports, I went ahead and ordered a Mini.  The USB 3 ports were critical for me, since I planned on having an external drive for storing many gigabytes of photos and videos, as well as for full system backups.

I had several days of dizzying disorientation and frustration at first, but after a few thousand Google searches to learn how to use OS X, I eventually became moderately proficient.  After about 2 weeks of part time use, I was able to do almost everything I needed to on OS X with relatively few compromises, and could still interface with the Windows-centric world of Microsoft Dynamics GP consulting and software development.

I'm now fairly comfortable with OS X, and confident that if I had to use Macs exclusively, I could certainly do so.  However, after a few weeks of using OS X, I have decided that for me and my particular work, Windows is significantly more efficient for me to use on a day to day basis.

First, some of the things I appreciated:

1. OS X on Apple hardware can be shockingly fast.   When booting up and resuming from sleep, OS X left my Windows PC in the dust.  And responsiveness and application performance were excellent.  Obviously Apple has a massive advantage here, since it designs the hardware and the OS and doesn't have to deal with the Tower of Babel of hardware that Windows and PCs face.  But the end result is significant.

2. The Time Machine backup utility is like magic.  If you have ever tried to manage Windows system backups, you probably know that most Windows backup software simply sucks.  You may find a backup solution that works, but it isn't pretty, and you often don't really know whether a restore will work when you need it, since it's such a hassle to test system restores.  Time Machine, by contrast, has one primary option:  On or Off.  You choose a destination disk, then click the On switch, and it just does its magic.

3. The application architecture is beautifully simple (or at least it appears to be beautifully simple).  Need to install that utility?  Just drag it to the Application folder.  Some applications used an installer, but the application install and uninstall process was incredibly elegant compared to the hornet nest of Windows MSI installs, DLL files, registry entries, byzantine Windows and application directories, and crazy disk consumption. 

4. Spotlight rocks.  Years ago there was a wave of desktop search tools for Windows.  Some worked okay, some were horrible.  I purchased X1 Desktop Search for Windows, which is very powerful and met my needs.  But it was an add on and has its quirks.  Well, Spotlight appears to be a near perfect desktop search tool.  It's extremely fast, very accurate, and eliminates many tedious tasks that are typically performed in Windows, such as navigating around in Windows Explorer. 

5. Boot Camp and Windows VM software make running Windows on a Mac a breeze.  Boot Camp makes it shockingly easy to install Windows directly on the Mac.  Just tell it how much space you want for your Windows partition, then click a few times, and presto, the machine restarts and begins the Windows installation process from a USB drive.  And although I haven't tried it, it seems that Parallels for Mac, which lets you run a Windows virtual machine within OS X, works very well also.



While I appreciated those aspects of OS X, there were a few key things didn't work well for me in OS X.

1. SMB file sharing doesn't work.  I use such shares a lot to transfer files between my virtual servers and my workstation, so I setup file sharing on the Mini and it appeared to work great.  It only took a few clicks and I was able to access the Mac shares from my Windows machines.  Well, a few days later, I tried to actually use the Mac shares, and it didn't work. Windows said that my password wasn't correct, but it definitely was correct.  After a few hours of searching, I found that apparently SMB was broken in OS X 10.7.  It works when first setup, but then it simply stops working.  You have to turn off sharing, then turn it back on to restart the SMB service, and then it will work again for a while, but will eventually stop working again.  On the server version of OS X, this restart can be done via script, so server admins were scheduling a task to constantly restart the SMB service.  But on the desktop OS X, I was unable to find a way to automate this workaround.  There is a third party Windows networking product by Thursby Software called DAVE that looked very promising, but within 30 minutes of testing it, I ran into a glaring bug--you can see the Mac shares from a Windows machine, but you can't copy or paste any files on the Mac share.  Thursby let me know this is a bug they are working to fix, but the fact that neither Apple nor an add-on app can get Windows networking to work reliably was not a good sign.  (There are other workarounds like installing Samba, but there are drawbacks that I wasn't willing to deal with).

2. The keyboard is a second class citizen in OS X.  When I use Windows, I try and use the keyboard as much as possible, and the mouse as little as possible.  For instance, I can press ALT+E, S, V in Excel a whole lot faster than I can use a mouse to try and use the Paste Special command.  I am constantly using CTRL+C, X, V, Z, Y, A, S, F, among others.  I regularly use F2, F3, F4, F5 in typical Windows apps, and CTRL+Home, End, Up, Down, Left, Right, and Page Up, Page Down all get a workout on a daily basis.  Although there are some equivalents for these shortcuts in OS X, I found that the placement of the Command key makes it much more awkward to use for many of the shortcuts, and many of the shortcuts involved things like Shift+Command+(key), which felt like Keyboard Twister compared to Windows.  Over time, I saw that although there were many keyboard shortcuts, many seemed like afterthoughts.  Many were bizarre two-handed contortions that defeated the purpose of keyboard shortcut.  I also assessed that many things on the Mac were simply assumed to be tasks that would be performed by the mouse.  While the mouse worked fine, it was just much slower for many tasks.  OS X did have a great utility to add keyboard shortcuts and remap shortcuts, but that led to a lot of non-standard custom shortcuts that would then interfere with other shortcuts in some applications.

3.  The vaunted Mac does have bugs, quirks, and issues.  Before using the Mac Mini and OS X, I had the perception that Macs worked perfectly, or nearly so.  I now believe that Macs have just as many issues as Windows PCs, but just in different areas and perhaps in less critical areas.  The Apple forums are filled with all sorts of problems, so it didn't take me long to realize that my perception of Macs was not well grounded, and I ran into my own issues to prove the point.  In my case, there were a few such issues that prevented me from continuing to use OS X.  First, I learned that OS X doesn't seem to fully support Wake On LAN, at least not anymore.  A WOL packet does seem to partially wake a sleeping Mac Mini, but it does not wake it fully, or does not wake the video card or displays.  This means that if I enable sleep on the Mini, I can't send the WOL packet and connect remotely like I can with my Windows workstation.  There might be some other solution, but I gave up looking.  More critically, I found that when the Mini has been sleeping for a while, after it wakes, I am unable to login.  I either see a black screen or the screen saver, and pressing the keyboard or using the mouse does nothing.  I have to press the power button to try and get it to sleep and wake again (which occasionally works), or I have to hard reset the machine by holding the power button for several seconds.  I found an Apple forum post that indicated that others had this issue, but it isn't clear if it is due to HDMI connections, monitor input selection, some other hardware factor, or an OS X bug.  Regardless, with my monitors, I was having to hard reset the Mini every morning just to login, which is something I definitely don't have to do with my Windows 7 workstation.  I suspect that Macbooks and iMacs probably don't have this issue, so it may be unique to the Mac Mini.

4.  Font sizes are the deal killer.  Even if everything worked perfectly with OS X and the three issues I've listed above were fully resolved, the one thing that appears to be unresolvable is the difference in font sizes between Mac and Windows.  For technical reasons that are at the edge of my knowledge, a 14pt font on the Mac will look more like a 10pt font on Windows.  A 10pt font on Windows will look more like a 7pt font on the Mac.  Basically, all fonts end up being about 25-30% smaller on a Mac than they are on Windows.  This means that if a client sends me a Word document in 10pt Arial, it's virtually unreadable on the Mac.  I have to zoom to 130%-140% to make the document look like it does it Windows.  If I save that document and send it back to a client, it opens at 130% on Windows and looks comically massive, and they then have to zoom out to read the document normally.  This is a major problem for me, since it either constantly inconveniences me, or I end up inconveniencing my clients who all use Windows.  For this issue, I don't believe there is any workaround.  Due to the way fonts are rendered and sized in OS X and Windows, there is simply no way to make a Mac render fonts the same way that Windows does.  This was the LAST thing that I would have expected to cause me to give up OS X.  I thought it would be the user interface, or some critical app that wasn't available on OS X.  Nope, it turned out to be fonts.


There are plenty of other pros and cons, and there are dozens of other requirements and considerations that I didn't cover, but those were just some of the prominent items that come to mind.  For other roles, other purposes, other requirements, and other environments, OS X can probably be a great solution if you don't mind spending a lot more money on the hardware.

So, now that I've learned a little bit about OS X, I'm going to install a large SSD in the Mac Mini, install Windows 7, and get back to work.  With that, I'll have the hardware of the Mini, with the Windows OS that works best for me.

Steve Endow is a Dynamics GP Certified Trainer and Dynamics GP Certified IT Professional in Los Angeles.  He is also the owner of Precipio Services, which provides Dynamics GP integrations, customizations, and automation solutions.

http://www.precipioservices.com


Sunday, January 13, 2013

Payroll 401k Submission

Okay, we have been a little radio-silent over here at Dynamics GP Land.  Blame the holidays.  Blame the year end crush in our line of work.  Blame sick kids and sick spouses.  Know that we have thought of posting often, and just didn't quite make it :)   But here we are, back in the saddle.  And I have guilted Steve as well, so I am sure he will be coming along shortly with some mind-blowingly complicated and obscure technical problem. 

But for now, I will embrace the topic of the moment- Payroll.  January is always this way, right?  Just plain crazy with payroll year end and issues and payroll year end and issues.  So I thought I would share a few things I have developed over the years to help with payroll implementations in general.

Item number one is a common request, which is a file for 401k submission that can be sent to the 401k provider after each payroll.  Here is a view I have created that will summarize the payroll deduction, benefit (match), and catch-up contribution for each check date.  You can then use this as a basis for either a SQL Report or a SmartList Builder depending on what you already own or have in place.

The view is set up to allow for scenarios where you might have multiple deduction and/or benefit codes for each item (deduction, match, and catch-up).

CREATE VIEW [dbo].[CSVW_401K]


AS

With Benefit_CTE (AuditTrail, CheckNumber, CheckDate, EmployeeID, BenCode, BenAmount) as (Select B.AUCTRLCD AuditTrail,B.CHEKNMBR CheckNumber, B.CHEKDATE CheckDate,B.EMPLOYID EmployeeID, B.PAYROLCD BenCode, B.UPRTRXAM BenAmount from UPR30300 B where b.PAYROLCD in ('Insert401KMatchBenefit1', 'Insert401KMatchBenefit2') and B.pyrlrtyp=3),

Deduction_CTE (AuditTrail, CheckNumber, CheckDate, EmployeeID, DedCode, DedAmount) as (Select A.AUCTRLCD AuditTrail,A.CHEKNMBR CheckNumber, A.CHEKDATE CheckDate,A.EMPLOYID EmployeeID, A.PAYROLCD DedCode, A.UPRTRXAM DedAmount from UPR30300 A where A.PYRLRTYP=2 and A.PAYROLCD in ('Insert401KDeduction1','Insert401KDeduction2')),

Extra_CTE (AuditTrail, CheckNumber, CheckDate, EmployeeID, ExCode, ExAmount)as (Select c.AUCTRLCD AuditTrail,c.CHEKNMBR CheckNumber, c.CHEKDATE CheckDate,c.EMPLOYID EmployeeID, c.PAYROLCD ExCode, c.UPRTRXAM ExAmount from UPR30300 c where c.PYRLRTYP=2 and c.PAYROLCD in ('Insert401KCatchUpDed1','Insert401KCatchUpDed2'))

Select Deduction_CTE.EmployeeID, Deduction_CTE.CheckNumber, Deduction_CTE.CheckDate, Deduction_CTE.DedCode, Deduction_CTE.DedAmount, Benefit_CTE.BenCode, Benefit_CTE.BenAmount, Extra_CTE.ExCode, Extra_CTE.ExAmount from Deduction_CTE left outer join Benefit_CTE

On Deduction_CTE.AuditTrail=Benefit_CTE.AuditTrail and Deduction_CTE.CheckNumber=Benefit_CTE.CheckNumber and Deduction_CTE.CheckDate=Benefit_CTE.CheckDate and Deduction_CTE.EmployeeID=Benefit_CTE.EmployeeID left outer join Extra_CTE on Deduction_CTE.AuditTrail=Extra_CTE.AuditTrail and Deduction_CTE.CheckNumber=Extra_CTE.CheckNumber and Deduction_CTE.CheckDate=Extra_CTE.CheckDate and Deduction_CTE.EmployeeID=Extra_CTE.EmployeeID
GO  

Hope this helps those of you in need of 401k submission information :)

Christina Phillips is a Microsoft Certified Trainer and Dynamics GP Certified Professional. She is a supervising consultant with BKD Technologies, providing training, support, and project management services to new and existing Microsoft Dynamics customers. This blog represents her views only, not those of her employer.

Monday, December 17, 2012

SQL Server Management Studio IntelliSense Doesn't Work

I have recently worked on several Dynamics GP SQL Server 2008 servers where the IntelliSense feature in SQL Server Management Studio was not working.

I would type "SELECT * FROM RM", expecting to get a list of RM tables, but nothing would happen.

Ever since I noticed the problem at a client, I seem to notice it happening all of the time, even on my own development servers, where I know IntelliSense normally works.

It seems that there are at least two general causes of this issue.  In the first case, for some reason the IntelliSense "local cache" has an issue or isn't setup.  To resolve that, try and refresh the IntelliSense cache by going to Edit -> IntelliSense -> Refresh Local Cache. 

 
After choosing this menu option, wait several seconds, and then try typing a query to see if IntelliSense starts working.  That seems to work for me most of the time.  I don't know why I have to do it occasionally on my SQL Servers, but it's easy enough.

In other cases there may be an issue with SQL Server.  At one client, the TEST server had an older SQL service pack level and apparently there were some IntelliSense issues resolved in a newer service pack.  But I've read other articles that tell you to dig around and make some changes in Management Studio or in Windows.  None of those instructions happened to work for me, but you can give them a try if Refresh Local Cache doesn't work.

Here are a few discussions of the issue:

http://www.mssqltips.com/sqlservertip/2291/enabling-intellisense-and-refreshing-intellisense-data-in-ssms-2008/

http://blog.sqlauthority.com/2009/03/31/sql-server-2008-intellisense-does-not-work-enable-intellisense/

http://stackoverflow.com/questions/552458/why-is-sql-server-2008-management-studio-intellisense-not-working


Steve Endow is a Dynamics GP Certified Trainer and Dynamics GP Certified IT Professional in Los Angeles.  He is also the owner of Precipio Services, which provides Dynamics GP integrations, customizations, and automation solutions.

http://www.precipioservices.com

Sunday, November 18, 2012

Dynamics GP 2010 Localization and Language

Two "L" words that cause a lot of confusion in regards to Microsoft Dynamics GP are "Localization" and "Language".  I have heard these used interchangeably when they actually mean very different things.

Localization is the inclusion of specialized functionality within Dynamics GP to address country-specific reporting and regulatory requirements.

Translation is actual language translation, meaning data, labels, reports in another language.

Unlike love and marriage, you CAN have one of these without the other. Currently, Microsoft Dynamics GP 2010 is available with the following:
  • Localizations: Argentina, Australia, Canada, Chile, Colombia,United Kingdom, United States
  • Languages: English (US), English (UK), French (Canadian),Spanish (Latin America)
Check out the following link for more information on localization and language availability for Dynamics GP:
http://download.microsoft.com/download/3/4/9/349B103F-95ED-4029-A9BF-ADB78A1852B2/MBS_GP_AvailabilityGuide_US.pdf

Christina Phillips is a Microsoft Certified Trainer and Dynamics GP Certified Professional. She is a supervising consultant with BKD Technologies, providing training, support, and project management services to new and existing Microsoft Dynamics customers. This blog represents her views only, not those of her employer.


Support Expectations

Recently, I have been coaching consultants that are relatively new in their careers working with Dynamics GP.  It has been a really eye-opening experience in learning styles, consulting styles, and how we all build knowledge and expertise in a way that allows us to craft a career path.  I know this will sound trite, but I have learned alot from them and it has brought back some of my own passion for what I do every day.  I do love my job- I love helping customers/clients/users get the most out of their software, and therefore improve their work life.  We spend way too many hours on the job to be miserable.  I also enjoy building relationships over the years with clients, former students, and fellow consultants.  Some turn in to friends, others turn in to mentors and mentees (is that even a word?).

It has gotten me thinking, though, about what I call the Support Conundrum.   A client's first interaction with consultants (beyond the salesperson) tends to be with the most senior folks in an organization.  Make sense, right?  We send out our "A" team to build the relationship, and to showcase our expertise. And, if the timing works out, these same people take the helm of the implementation project and serve in primary roles with the customer. 

So....what happens when the customer's implementation is done?  And they transition to support?  Who happens to be on the support desk?  In many organizations, it is the least senior folks.  The skill level both in product knowledge and working with customers may still be in development and uneven in some areas.  So how do we manage that?  How do we ensure that the customer is not disappointed with support, and at the same time the folks on the support desk are valued/not diminished in importance?

I believe strongly that working on the support desk is an excellent way for consultants to build knowledge, relationships, and strong troubleshooting skills. I don't have all of the answers regarding how best to support both the folks on the desk and the customers so that they don't look at support as the "2nd string".  But here are some of my random thoughts, and I hope that you will share yours as well...

1. Have a solid troubleshooting methodology as an organization, what questions do you ask immediately? 
2. Teach that getting the problem "down the road as far as possible" is as important as ultimately solving the issue, meaning that using solid troubleshooting to isolate the real issue/root cause is a productive task
3. Set expectations regarding how issues are escalated, and what information should be collected prior.  Involve the support desk in the resolution when it is escalated.
4. Teach triage (prioritization)
5. Make sure everyone understands that overcommunication in support is imperative, update clients on progress (or lack thereof) on a regular basis
6. As much of an ego boost as it may give you, do not "bad mouth" your support team...even passive- aggressively (e.g., encouraging a client to contact you directly when they should be using support)
7. Consider a reduced rate for phone/remote support services
8. Support "behind the scenes", providing the support desk with tips, tricks, etc directly so that they can provide it to the customer and learn themselves

What are your thoughts? What else could we add to the list?  Do you agree or disagree with any of these?

Christina Phillips is a Microsoft Certified Trainer and Dynamics GP Certified Professional. She is a supervising consultant with BKD Technologies, providing training, support, and project management services to new and existing Microsoft Dynamics customers. This blog represents her views only, not those of her employer.

Wednesday, November 7, 2012

Generating Secure Report Links in Management Reporter

Back in the FRx days, you could generate a report directly to Excel.  Due to security concerns related to generating financial data to a file that was not secure, that capability was eliminated with Management Reporter.  However, many users still have a need to generate reports to Excel without manually exporting it after publishing the report.

With Management Reporter 2012, you can publish a secure report link that will prompt the user to open the report in the Report Viewer, Excel, or XPS format.  The link is secure because it relies on Management Reporter security for the user to determine the reports to which they have access.  Very cool!

Let's take a look a the steps involved in doing this.  But first, the prerequisites...

1. You can publish the link to either a shared network location (UNC or mapped drive) or to a SharePoint site. 
2. If publishing to a shared network location, the service account used for the MR process service must have read/write access to the shared location.  And when using SharePoint, the service account must have Design permissions on the library.

Here is a link to a great blog post from the Dynamics Corporate Performance Management team on publishing links to a SharePoint site.

Now, to set the location, we navigate to the report definition in Management Reporter, then click on the Output and Distribution tab:



Mark the option to "Generate to multiple report library locations" and then specify the report library location in the left hand column, this will be used to determine the security access for the report.  Then, on the right hand side, use the Browse button to locate the shared directory to publish the report link.  You can then add additional combinations of report library locations and related report link locations, so that the report is published to multiple locations with different security settings as needed.

Once you have specified the necessary paths, you can generate the report.  The report link will automatically generate and appear in the shared directory:


Double-click to open the link:


If Report Viewer is installed, you will be given the option to open the report in Report Viewer, otherwise you can select Microsoft Excel or XPS Viewer.  We select Microsoft Excel:


Remember, it is using the security defined for the associated report library location to determine access to the report.  Then you are prompted to open or save the report in Excel:


We choose Open, and we see the report...Ta Da!


I know I need more data on the report, but hopefully you get the idea :)  Pretty cool in my book and super easy to set up!

Christina Phillips is a Microsoft Certified Trainer and Dynamics GP Certified Professional. She is a supervising consultant with BKD Technologies, providing training, support, and project management services to new and existing Microsoft Dynamics customers. This blog represents her views only, not those of her employer.

Tuesday, November 6, 2012

When developing eConnect integrations, don't forget the details...

I am testing an eConnect SOP Invoice integration that I just developed.  The invoices are importing fine, and everything looks good...except...the invoice distributions are duplicated.  Instead of 3 distribution lines, there are 6 lines.



Hmmm, that isn't good.  I'm sending in the three distributions, and they look good in GP, but somehow they are being duplicated.

I triple check my code to confirm I'm not doing anything silly, and the code looks good.  I then check the XML that is being sent to eConnect, and it looks good as well--only 3 distributions are being sent.

Puzzled, I then do a SQL trace on the eConnect inserts to see what it is doing.  The trace confirms that taSopDistribution is only being called 3 times, not 6 times.

So if only 3 distributions are being sent to eConnect and the stored procedure is only being called 3 times, how do I have 6 distribution lines in GP?

Although I have encountered several eConnect bugs over the years, I found it difficult to believe that this could be an eConnect bug.  Hundreds of people would have discovered this issue by now, so I have to assume it isn't a bug.

I then decide to randomly query the distribution records in SQL (SOP10102) to see what they look like.  And that is when it dawns on me.


Notice that the first three records have a DistRef value.  But the last 3 records don't.

The first three records are ones that I'm sending in to eConnect.  So what are the second three?

They look like the default distributions.  The distributions that would normally be created if you didn't send any distribution data to eConnect as part of the SOP invoice.  Which happens when you send a value of taSopHdrIvcInsert.CREATEDIST = 1.  Or, if you don't send any value for CREATEDIST.  Or if you forgot to send a value for CREATEDIST.

Ooops.

As soon as I saw the distribution records in  SOP10102, I realized what I had missed.  One little tiny detail that is kind of important.  Well, it's important if you want your distributions to be correct...

Don't forget the details!
 

Steve Endow is a Dynamics GP Certified Trainer and Dynamics GP Certified IT Professional in Los Angeles.  He is also the owner of Precipio Services, which provides Dynamics GP integrations, customizations, and automation solutions.

http://www.precipioservices.com