Microsoft Great Plains – Marriage between GP Web Client & Microsoft Azure

Snip20150121_5

So here we go, after we have gone through a months of nightmares, here are some of the guideline for how to deploy GP 2015 web client on Microsoft Azure platform. The test starts with GP 2013…and ended up 2015. Now its working satisfactory…

History of an ERP system

The Dynamics GP product was originally developed by Great Plains Software, an independent company located in Fargo, North Dakota, which was run by Doug Burgum. Dynamics Release 1.0 was released in February 1993. In late 2000, Microsoft announced the purchase of Great Plains Software for $1.1 billion. This acquisition was completed in April 2001.

Snip20150120_1

August 2014: Now that we plan to start migrating from GP 2013 Web Client, we got an idea for moving our ON-PREM server to a proper DR site….to dream this solution; its beautiful…to implement, its a pain…

Microsoft Azure came into picture…its not just that, we have no guideline for how to slice and dice this environment to host Microsoft GP from Azure….along with Microsoft CRM Online integration. i did ask our GP community to help me..but no reply

Its a major task….and our nightmare starts….Team Spirit at its best Myself, Vaidy and Shiyas discussed our plan and submit to our Executive Director Jimmy @ Elcome International, who is there for all the help…approved our plan to go ahead.

Snip20150121_2

Planning checklist started….

  • All the Crystal reports to be converted to SSRS reports
  • Get ready to go with existing GP code to be compatible with GP desktop/web client
  • CRM should be Microsoft Online CRM
  • ERP has to be there at Microsoft Azure
  • Azure VM needs to setup…..
  • Integration between our online CRM & Microsoft GP using Scribe
  • Instead of Terminal session, use Remote Apps.
  • DNS propagation and IIS/Certificate installation
  • User training and new environment adaptation…
  • Discuss any other technical glitch for moving our critical business application cloud go-live on halt…
    • there you go….
    • Once we move our server to cloud…we are totally depend on our ISP internet connection. We have only one internet connection, 100Mpbs. Once this is down, our business halt….so we need another internet connection., that also from a different switch/route from ISP. The reason is because if the one network is down, the other network will server the purpose. What if whole internet is down? We have planned for a 4G modem route; also from 2 ISP data SIM….If this is also down, We have a backup link from Satellite to serve the purpose…but this is the last option.

So lets start moving our PAWN….boarder has been drawn…deadline has been set….

First thing first….Azure slice…We have done quite a lot of mistakes, while provisioning the SQL server…below was the primary configuration we deployed. (This was done, when Remote App @ Azure is still under preview)

  • What machines did you select, who did the sizing for you.
    • SQL Server Azure Machine Type: A7, 8core, 56GB RAM
  • Server Configuration Window Server 2012 R2 64bit with SQL 2104
    • Terminal Server (For users to access GP Client): Azure Machine Type: A7, 8core, 56GB RAM
    • Fresh Installation on Azure: ZONE: East Asia
  • How did we deploy your instances.
    • Details as mentioned above
    • Sizing: There are no documet support received from Microsoft/Partner, at this stage, so we did it ourself
    • We have raised the questions to different product blog platform from Microsoft and no response so far
  • What are the total concurrent number of users for each?
  • Terminal Server users: 40
  • Great Plains users: 60

Build number at the time of this test (September 2014): GP 2013 R2 – 12.00.1745

Testing started….

Connecting to the server took a very long time from Web Client. Rendering issues of each window…Lookup issues

Done an installation of windows client as in Dynamics GP client on-premise, then we did a testing with Dynamics GP client installed on 4 machines on-premise. These clients connected to Azure ERP (database) server. Below were the observations:

  1. Performance in terms of transactions lookup and entry was slower than Azure Terminal Server setup.
  2. Posting transactions took more time than desired.
  3. Windows rendering was not bad like it was in Azure TS setup, but field to field traverse within a window took a bit longer than on-premise TS and Azure TS setup.

October 2014: Testing still in progress and we have moved multiple scenario as to

  • Web client only – 40 users from different region
  • Web Client and GP desktop client – 20 users from the office only

Still no sign of user experience improvement…we have decided to call Microsoft Centre of Expertise for help….

Performance issues may occur because of the Datacenters latency.  This link will help you identify the latency and what is the closest datacenter to your location.

November 2014:

they are in…..done couple of testings on the existing scenario…

OUR LEARNING CURVE….with them

Best practice to consider while doing SQL server provisioning on Microsoft Azure… (I’m considering here only my region..each admin should consider their region when it comes to azure regional datacenter selection)

s1

So here are the facts, which needs to be taken care while provisioning the SQL server on Azure for ERP data platform. Click here to read.

Monday, November 24, 2014

As per our tests today we can conclude the following:

  1. Performance is good with 1 and 6 users test.
  2. Posting, rendering and loading are Ok
  3. No bottlenecks noticed on the RS and SQL machine in terms of Memory and Processor
  4. We noticed higher activity related to the Network and Disk I/O’s which also was in the normal range
  5. Also Nearest DC is East Asia and latency is within accepted range
  6. System is configured properly.
  7. We also found that A7 may not be needed as there are a lot of unused resources.

Based on that we discussed and agreed on the following action plan

  1. We will do another test with 30 users and will monitor the RS and SQL Server.
  2. Depending on the resource consumption we will create an A4 machine as another RDS in the same cloud service and will do another 30 users test
  3. Based on the performance results and resource consumption we will decide to use which machine.

Thursday, December 4, 2014: As per our Second round test we conclude the following

  1. Performance related to the RDS and Latency is Ok
  2. We faced 1 user latency issue and we have tested the same user from another machine and it was Ok, so I assume that this is a machine specific issue.
  3. Transaction posting, Fields lookup and populating is Ok
  4. We found out that 1 Transaction with average 50 lines was posted in around 8 minutes which is not acceptable related to previous experience and we agreed that you will perform some database maintenance checks (DBCC, Index and Update statistics) on Sunday and retest the high volume postings noting that we didn’t find any unusual bottle necks in SQL during the posting process.

Following are the observations after running DBCC checks and updates:

  • DBCC CHECKDB returned no errors on both DYNAMICS (app database) and ELDB (GP company database)
  • With GP2013, DBCC REINDEX script (to run for multiple tables) is not provided as it is configured directly on SQL.
  • “Auto Create Statistics” and “Auto Update Statistics” are also setup on both databases by default.

I then posted a GRN with 347 line items and it took exactly 7 minutes (8 minutes less than our previous testing AND 3 minutes more than on-premise). Please note that no other user(s) had logged on when I posted this transaction.

We now should consider in line with Expertise that  we can be aligned, that simulate a production scenario go with 3 servers A7 SQL, A4 RDS and A4-A5 for your web components. Please note that A5 is 2 cores and 14 GB of RAM based on the test result we may need to increase the cores but for now we can start by this configurations and see.

  • A4 machine Scenario is good and CPU average usage is way far from the A5 machine
  • We noticed that the antimalware extension installing is hanging do we removed it from the SQL Server machine and will restart it
  • For the RDS machine it will remain as it is till we finalize the Web client stress test
  • We noticed a list form that freeze, this can be due to IE temporary files and cache.
  • We cleared the cache, also we lowered the settings for the trusted zone to medium-low and installed the trusted cert from Web client and we retested the issue, it was gone.
  • From a common-best practice users can do a more filtered lookups if possible and try to minimize the scroll to end in one click to maintain the buffer for running any form related script smoothly.

Next Actions

  • We need to stress test the web server.
  • Conclude the outcome.
  • After Removing the Extension installation and restarting the SQL Server, it returned to normal
  • The Web Server had no bottle necks
  • Some of the users faced some screen freezing when they scrolled from top to bottom and vice versa quickly. (User behaviour issue)

The following are some notes regarding Internet explorer and user behaviour

  • Only Windows 8 and IE 10 are supported with GP2013, Windows 8.1 and IE 11 are supported with GP 2015
  • It is recommended to Adjust IE settings by Emptying the IE temporary files, Lower the security settings to medium low in the trusted sites and adding the Web Server URL to the trusted sites, installing the security add on prompted by the GP web Client(May require local admin privilege), update your Silverlight.
  • The most important thing is to educate the user of the face that this should happen if the user doesn’t follow the common practice.

Microsoft Dynamics GP 2015, Web Client both became available to Dynamics Partners/Customers from December 2014…With this deployment, this is clearing a lot of issue what we face on GP 2013 web client….So another task…replace with GP 2015

Today…Sunday, December 28, 2014

 

Snip20150121_1

So now we have come to a conclusion for how to go ahead further…..

  • Backup line is up….trying to find a device to manage multiple VPN…Cradle Point?…till then TMG
  • Few users computer needs to upgrade
  • Going for a Hybrid approach…meaning GP 2015 Web Client and GP Remote Apps (reason for this remote apps is because Analytical accounting is not supported by Web Client)

Now we start getting another issue….

While trying to access our SSRS reports from within GP 2015 web client, using Internet Explorer 10, we are receiving a critical error titled “AsyncCallBackException”. Reports are invoked programmatically using “URL Access” method and authentication is happening within same domain.

DETAILS:

We have written a plugin to invoke our SSRS reports from within GP 2015 web client. Function that we use is as follows:

  • Dynamics.Forms.SyVisualStudioHelper.Functions.DexUtilityLaunchUrl.Invoke(sReportName);
  • URL is constructed by using URL Access method by directly calling SSRS Report Server report path.
  • Report is getting generated without any issues. But once we close the browser that rendered the report, following series of errors are received:

n1

n2

If we close our browser and reconnect to the session, we retain some of the errors OR some functionalities such as Lookup button, tabbing out, etc. do not work.

Kindly note that any other website could be launched with the same without any issues. There is a GP forum post which is exactly the same issue, but no resolution is posted out there:

The funny part is that GP 2015 web client works well with Google Chrome browser….we did not expect that coming…but IE issue remains same

Snip20150121_3

Severity: Critical

Summary: An AsyncCallback threw an exception.

Details:

System.Exception: An AsyncCallback threw an exception. —> System.Exception: An AsyncCallback threw an exception. —> System.ServiceModel.CommunicationException: The remote server returned an error: NotFound. —> System.Net.WebException: The remote server returned an error: NotFound. —> System.Net.WebException: The remote server returned an error: NotFound.

at System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)

at System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClassa.<EndGetResponse>b__9(Object sendState)

at System.Net.Browser.AsyncHelper.<>c__DisplayClass4.<BeginOnUI>b__0(Object sendState)

— End of inner exception stack trace —

at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)

at System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)

at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result)

— End of inner exception stack trace —

at System.ServiceModel.Channels.Remoting.RealProxy.Invoke(Object[] args)

at proxy_2.EndGetDexServerMessages(IAsyncResult )

at Microsoft.Dynamics.GP.Web.Silverlight.Services.RuntimeHandler.ProcessServerMessagesCallback(IAsyncResult result)

at System.ServiceModel.AsyncResult.Complete(Boolean completedSynchronously)

— End of inner exception stack trace —

at System.ServiceModel.AsyncResult.Complete(Boolean completedSynchronously)

at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.FinishSend(IAsyncResult result, Boolean completedSynchronously)

at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.SendCallback(IAsyncResult result)

at System.ServiceModel.AsyncResult.Complete(Boolean completedSynchronously)

— End of inner exception stack trace —

at System.ServiceModel.AsyncResult.Complete(Boolean completedSynchronously)

at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.OnGetResponse(IAsyncResult result)

at System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClass19.<InvokeGetResponseCallback>b__17(Object state2)

at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)

at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)

at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()

at System.Threading.ThreadPoolWorkQueue.Dispatch()

at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()

Severity: Critical

Summary: The remote server returned an error: NotFound.

Details:

System.ServiceModel.CommunicationException: The remote server returned an error: NotFound. —> System.Net.WebException: The remote server returned an error: NotFound. —> System.Net.WebException: The remote server returned an error: NotFound.

at System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)

at System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClassa.<EndGetResponse>b__9(Object sendState)

at System.Net.Browser.AsyncHelper.<>c__DisplayClass4.<BeginOnUI>b__0(Object sendState)

— End of inner exception stack trace —

at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)

at System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)

at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result)

— End of inner exception stack trace —

at System.ServiceModel.Channels.Remoting.RealProxy.Invoke(Object[] args)

at proxy_2.EndProcessDexClientMessages(IAsyncResult )

at Microsoft.Dynamics.GP.Web.Silverlight.Services.RuntimeHandler.<>c__DisplayClass2.<ProcessClientMessages>b__1(IRuntimeService channel)

at Microsoft.Dynamics.GP.Web.Silverlight.Services.RuntimeHandler.InvokeCallWithMessageHeaders(Action`1 a)

at Microsoft.Dynamics.GP.Web.Silverlight.Services.RuntimeHandler.ProcessClientMessages(Byte[] data)

at Microsoft.Dynamics.GP.Web.Silverlight.MessageManagementService.FlushQueueWorker_DoWork(Object sender, DoWorkEventArgs e)

Severity: Critical

Summary: Object reference not set to an instance of an object.

Details:

System.NullReferenceException: Object reference not set to an instance of an object.

at Microsoft.Dynamics.GP.Web.Silverlight.Momm.CommandMessageActions.CommandAddChild(IWCDexMessage message)

at Microsoft.Dynamics.GP.Web.Silverlight.MessageManagementService.ProcessMessage(IWCDexMessage message)

at Microsoft.Dynamics.GP.Web.Silverlight.MessageManagementService.ProcessMessages(IEnumerable`1 messages)

at Microsoft.Dynamics.GP.Web.Silverlight.MessageManagementService.<>c__DisplayClass1f.<ProcessReturnBytes>b__1d()

at Microsoft.Dynamics.GP.Web.Silverlight.Extensions.ApplicationHelper.<>c__DisplayClass7.<ExecuteOnUIThreadSync>b__3()

This issue is still doing the test with Microsoft…till then i will stick to Google Chrome browser.

So far so good… learned a lot with this deployment….

No my GP 2015 is now serving from Azure cloud to all our users…Finance/Accounts users, they are using GP 2015 desktop client.

Snip20150121_4

This document will keep on updating with more and more solutions, as and when we cleared. 

Apple Yosemite – WiFi disconnection – Resolution

Snip20141021_1

After you upgrade you laptop from Mavericks to Yosemite OS, WiFi keeps on dropping….

So i tried the steps below .. After i did the below changes, it’s not dropping on my laptop.

  • From the System Preferences
  • Select Network
  • At the bottom of the window, select the Gear/setup Icon
  • Click the selector and select Set Service Order (Make Sure Wi-Fi is at the top of the list)
  • Click apply.

Enjoy!!!

HP All-in-One Printer Remote Apps for iOS

Seamlessly move between paper and cloud-based files with intelligent mobile scanning and easy control of your HP e-All-in-One from your iPhone or iPad.

Print, copy, and scan with Apple iPad, iPhone and iPad (iOS 6.0 or later). Mobile scanning feature supported by iPhone 4, 4S, 5, 5c, 5s, the new iPad, iPad mini, iPad Air and iPod 5G (iOS 6.0 or later) with 5 megapixels or more camera with autofocus.

For this apps, click here

Enjoy!!!

Microsoft OneDrive for Business v1.2 – For iOS platform

OneDrive for Business (formerly SkyDrive Pro)…Previous versions of OneDrive for Business for iOS focused on connecting to the multi-tenant environment of Office 365. Office 365 for dedicated systems are separate from the multi-tenant infrastructure and use both Windows NT LAN Manager (NTLM) and forms-based authentication (FBA) protocols. Now, with v1.2, SharePoint Online dedicated customers can download the iOS app from the App Store and seamlessly connect to their personal OneDrive for Business files and folders.

To read more, Click here

Microsoft releases Remote Desktop 8.0 – for iOS and Mac

Snip20131021_1

Microsoft Remote Desktop app, you can connect to a remote PC and your work resources from almost anywhere. Experience the power of Windows with RemoteFX in a Remote Desktop client designed to help you get your work done wherever you are. Once these new Remote Desktop apps, which include an overhauled version of the two-year-old Mac Remote Desktop client, are available, Microsoft will be providing access to virtual desktops on everything from Windows and Windows RT, to iOS, OS X and Android.

The iOS version for iPhone and iPad can be found here – Apple App Store.

Moving Bookmarks – Internet Explorer Favorites to Safari Bookmarks

  1. One quick way to move your Favorites, or browser bookmarks, to a new computer is to start Internet Explorer.
  2. Go to the File menu and select “Import and Export.”
  3. When the Import/Export wizard starts up, choose “Export Favorites” from the list of actions and click on the Next button.
  4. Once you select your Favorites file, you can export it to the desktop or a folder on your PC.
  5. From there, you can copy the exported Favorites file onto an external drive.
  6. Copy it to your new Mac.
  7. Once you get the file on your Mac, you can add the Favorites to the Mac OS X Safari Web browser.
  8. Start the Safari program.
  9. Go to the File menu and choose Import Bookmarks.
  10. Navigate to the folder where you have stored your exported Favorites file.
  11. Click on the Import button to pull in the bookmarks.

 

Import & export Safari bookmarks

(OS X Lion / Mountain Lion)

Import bookmarks into Safari

  1. Open Safari if it is not already open.
  2. Choose File > Import Bookmarks.
  3. Browse to find the file that contains the bookmarks you want to import, and then click Import.Normally the file has “.html” or “.plist” at the end of its name.

Export bookmarks from Safari

  1. Open Safari if it is not already open.
  2. Choose File > Export Bookmarks.
  3. Specify a location for the exported file.The file’s name is “Safari bookmarks.html.” Most browsers are able to import this type of file.

Sync the Bookmarks Between a MacBook & an iPad

  1. Connect the iPad to the MacBook using the USB cable.
  2. Launch iTunes if it doesn’t open automatically.
  3. Click the “Info” tab near the top of the iTunes window.
  4. Place a check mark in front of the “Sync Safari Bookmarks” option in the “Other” section near the bottom of the screen.
  5. Click the “Sync” button to sync the bookmarks between the MacBook and the iPad.

Problem installing Mac OS – How to fix

Its a bit strange…but good to know that!!! Tried it…and it worked.

I got myself into this cruise boat with out auto pilot.  After wiping my entire drive, and rebuild the RAID, I wondered “HOW could it be possibly not to install any version?”  The answer is PRAM.  You need to reset your PRAM. Your Mac stores certain settings in a special memory area even if it is turned off.  On Intel-based Macs, this is stored in memory known as NVRAM; on PowerPC-based Macs, this is stored in memory known as PRAM.

Information stored in NVRAM / PRAM includes:

  • Speaker volume
  • Screen resolution
  • Startup disk selection
  • Recent kernel panic information, if any

How to do?

  1. Shut down your Mac.
  2. Locate the following keys on the keyboard: Command (⌘), Option, P, and R. You will need to hold these keys down simultaneously in step 4.
  3. Turn on the computer.
  4. Press and hold the Command-Option-P-R keys before the gray screen appears.
  5. Hold the keys down until the computer restarts and you hear the startup sound for the second time.
  6. Release the keys.

After resetting NVRAM or PRAM, you may need to reconfigure your settings for speaker volume, screen resolution, startup disk selection, and time zone information. Also OS X does not store network settings in NVRAM / PRAM.

Enjoy!!!

Parallels Access – Remote control for Mac & PC from iPad

Snip20130828_1

New Parallels Access is a new iPad that lets you control your Mac or Windows machine from anywhere. Low-bandwidth connections no longer have the power to stop you. Parallels Access holds your connection so you can keep on working with fewer interruptions. Business applications, games, and even streaming video. Setup is simple. Install a small application to run in the background on the desktop, and run the Access app on the iPad. You can select any of the Macs or PCs that are logged into the service—which costs $80 annually per machine—and tap one to start working. You can try it for free on the Mac for 14 days, and it’s currently free to run on Windows because that desktop agent is still in beta.