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. 

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.

OS X – Lion from Apple…releasing on July 2011!!!

In continuation of my previous blog about Mac OS X Lion developer preview 3, Apple announced its release on July 2001 to Mac App Stores for just $29.99. This software works hand in hand with apple hardware for a better operating system.

  • Built on a rock-solid UNIX foundation
  • OS X is engineered to take full advantage of the technologies in every new Mac
  • Deliver the most intuitive and integrated computer experience possible.

Enjoy!!!

iCloud and iOS5 from Apple

Apple announce its new OS which is iOS5 for mobile/ipad platform..comming this fall…cool isn’t it?

Lot of new features going to get release with this platform and it is compatible with iPhone 3GS, iPhone 4, iPod touch (3rd generation and 4th generation), iPad and iPad 2…

New feature like….

  • Notification Center: You get all kinds of notifications on your iOS device: new email, texts, friend requests, and more. With Notification Center, you can keep track of them all in one convenient location. Just swipe down from the top of any screen to enter Notification Center.
  • iMessage: With this you can send unlimited test message throug Wi-Fi or 3G from your iPad, iPhone or iPod touch to anyone with one of those devices. This apps built into the messages app, so you can send text, photos, videos, locations and contactss
  • Twitter: Integrated right into iOS 5… it even easier to tweet from your iPhone, iPad, or iPod touch. Sign in once in Settings, and suddenly you can tweet directly from Safari, Photos, Camera, YouTube, or Maps.
  • Camera: Now in iOS5, it integrates right onto the Lock Screen and you can take snaps instantly using the volume-up buttom and say “click”
  • PC free: New feature designed to be independence for all iOS devices. With iOS 5, you no longer need a computer to activate and set up your device…all you do is to connect your device wirelessly, right out of the box. Download free iOS software updates directly on your device. Do more with your apps — like editing your photos or adding new email folders — on your device, without the need for a Mac or PC. And back up and restore your device automatically using iCloud.

So what is this iCloud?? Its like a virtual Hard disk sitting on the cloud and when you sign up for iCloud, you get 5GB of free storage and it stores your content in the cloud. Your purchased music, apps, and books, as well as your photo stream, don’t count against your free storage. That leaves your mail, documents, Camera Roll, account information, settings, and other app data. With iCloud Photo Stream, when you take a photo on one device, it automatically appears on all your other devices. No syncing. No sending. Your photos are just there.

To get all these features, we have to patiently wait for this comming fall…if you want to get notified when iCloud is available, click here

SmartScreen® Application Reputation in IE9

One out of every 14 programs downloaded is malware, Microsoft reported in a blog post on Wednesday.  Application Reputation mechanism in Internet Explorer 9, Microsoft noted that IE blocks between 2 and 5 million attacks a day for IE8 and IE9 customers…PC Magazine has more news on this. Social-engineering attacks, like tricking a user into running a malicious program, are far more common than attacks on security vulnerabilities. Application Reputation  in IE9 helps protect users from these socially engineered malware attacks. Please click here to read this article from MSDN blog

Internet Explorer 9 and Safari 5

Interested in checking out the new web platform capabilities of Internet Explorer 9?…Test Drive

Internet Explorer 9 now also supports TIFF and JPEG XR images. JPEG XR offers better image quality than JPEG at the same file size.

A comparison video on the windows blog..click here