<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Scott Berry</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/scottberry/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/scottberry/feed.xml</link>
    <description>An exploration of various Dynamics CRM topics</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:51:56 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Add Flexibility to a Unified Service Desk Deployment with Azure RemoteApp</title>
      <link>https://docs.microsoft.com/archive/blogs/scottberry/flexible-unified-service-desk-deployment-with-azure-remoteapp</link>
      <pubDate>Mon, 06 Jun 2016 18:16:02 GMT</pubDate>
      <dc:creator><![CDATA[Scott.B]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/scottberry/?p=25</guid>
      <description><![CDATA[USD client-side dependencies and deployment management complexities represent some of the largest...]]></description>
      <content:encoded><![CDATA[USD client-side dependencies and deployment management complexities represent some of the largest barriers to adoption. Extra latency between CRM Online and the USD client can also degrade performance.

This post describes how the combination of USD and <a href="https://www.remoteapp.windowsazure.com/" target="_blank">Azure RemoteApp</a> can address these issues without large upfront costs by:
<ul>
	<li>Reducing administrators workload. USD installation is limited to a single VM image (not every desktop).</li>
	<li>Providing users on-demand capability to run controlled instances of USD.</li>
	<li>Enabling users to run USD on any Windows, Android or iOS device via the RemoteApp client <em>(granted, a phone is not a particularly effective form factor for USD)</em>.</li>
	<li>Providing application virtualisation/hosting as-a-service. Dedicated servers or administrators of RDS environments aren't required. The instances can scale with the workforce.</li>
	<li>Pairing this model with <a href="https://azure.microsoft.com/en-us/services/expressroute/" target="_blank">Azure ExpressRoute</a> gives the USD instance fast, secure access to the Enterprise App back end servers.</li>
</ul>
The diagram below illustrates a conceptual design for how this would fit together:

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/network_design3.png"><img class="alignnone size-full wp-image-86" src="https://msdnshared.blob.core.windows.net/media/2016/06/network_design3.png" alt="network_design3" width="830" height="385" /></a>
<h2>Publishing a USD instance on RemoteApp</h2>
There are four high level steps in the process:
<ol>
	<li>Preparing a VM Image</li>
	<li>Creating a RemoteApp Collection</li>
	<li>Publishing the USD to the collection</li>
	<li>Running USD from a client (I tested with Windows and iOS)</li>
</ol>
<h3>Prerequisites</h3>
The rest of the instructions assume that you have already sorted out the following dependencies:
<ul>
	<li>An instance of Dynamics CRM Online, with the <a href="https://technet.microsoft.com/en-us/library/dn499779.aspx">Unified Service Desk</a> installed
<ul>
	<li>You can request a trial of Dynamics CRM Online <a href="https://www.microsoft.com/en-us/dynamics/crm-free-trial-overview.aspx">here</a></li>
	<li>When <a href="https://technet.microsoft.com/en-us/library/dn646911.aspx" target="_blank">installing the Unified Service Desk</a> in your instance of CRM Online and on your client desktop, ensure you install a sample application. I installed with the <a href="https://technet.microsoft.com/en-us/library/dn646924.aspx" target="_blank">CRM Web Client</a> package. Ensure you install the back end with Package Deployer</li>
</ul>
</li>
	<li>An Azure subscription or <a href="https://azure.microsoft.com/en-us/pricing/free-trial/" target="_blank">free trial</a></li>
</ul>
<h3>Step 1: Preparing a RemoteApp Compatible VM Image</h3>
The basic requirement  for an image is that it run Windows Server 2012 R2 and have the Remote Desktop Session Host (RDSH) role installed (<a href="https://azure.microsoft.com/en-us/documentation/articles/remoteapp-imagereqs/">more detail here</a>). This goal can be achieved by <a href="https://azure.microsoft.com/en-us/documentation/articles/remoteapp-create-custom-image/" target="_blank">creating an image from scratch</a> or <a href="https://azure.microsoft.com/en-us/documentation/articles/remoteapp-image-on-azurevm" target="_blank">configuring an image from the Azure gallery</a>.
<h4>Provision a VM Instance to use as Template</h4>
We are going to take the latter approach and perform the following steps

1. Log in to the <em>new</em> Azure portal (<a href="https://ms.portal.azure.com" target="_blank">https://ms.portal.azure.com</a>).

2. Browse the VM gallery and create a new VM Instance based on the  "<em>Windows Server Remote Desktop Session Host with Microsoft Office 365 ProPlus"</em> template. Make sure you set the <strong>Select a deployment model</strong> dropdown to <em>Classic. </em>This is because at time of writing  RemoteApp cannot import a template created on the Resource Manager model

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/create_vm2.png"><img class="alignnone size-large wp-image-105" src="https://msdnshared.blob.core.windows.net/media/2016/06/create_vm2-1024x401.png" alt="create_vm2" width="1024" height="401" /></a>
<h4>Setup Software on Template VM Instance</h4>
1. Once the VM Instance is provisioned, Connect to the VM via Remote Desktop by using the <strong>Connect</strong> button in the portal

2. Now it's time to install software, first install the USD client. You can download the client from here: <a href="https://www.microsoft.com/en-us/download/details.aspx?id=50355">https://www.microsoft.com/en-us/download/details.aspx?id=50355</a>

I installed the 64 bit client <em>"CRM2016-USD-2.1.0-amd64.exe"</em>. If you would like to run any other client applications on USD, this is the time to install it.

3. Test the USD client, enter in connection details <em>(as per below for a CRM Online trial)</em>.

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/usd_config.png"><img class="alignnone  wp-image-115" src="https://msdnshared.blob.core.windows.net/media/2016/06/usd_config.png" alt="usd_config" width="337" height="247" /></a>

&nbsp;

<em>If you get issues with IE launching "event" pop ups refer to <a href="https://If%20you get issues with IE launching" target="_blank">this blog post</a> for a workaround</em>
<h4>Prepare and Capture the VM Instance to your Local Gallery</h4>
Once all the software is setup, it's time to capture it in your gallery so RemoteApp can use it.

1. The first step is to validate the instance will be compatible. There is a ValidateAzureRemoteAppImage powershell script on the desktop which performs the required checks. Click the shortcut to run the script.

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/ValidateScript.png"><img class="alignnone size-full wp-image-125" src="https://msdnshared.blob.core.windows.net/media/2016/06/ValidateScript.png" alt="ValidateScript" width="77" height="100" /></a>

2. If all is well, you should receive the message <em>"The current image satisfies all the requirements for Azure RemoteApp Template image."</em>

3. You are then prompted to run Sysprep to capture the image. Click <em>"Y".  </em>The result should look like this:

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/RunningValidate.png"><img class="alignnone size-full wp-image-126" src="https://msdnshared.blob.core.windows.net/media/2016/06/RunningValidate.png" alt="RunningValidate" width="602" height="304" /></a>

<em>Note: once the VM has been sysprep'd, you wont be able to log back in to it. You will have to create new instances based on the template and repeat the process on that instance.</em>

4. Once Sysprep is finished, the VM will be shutdown in a state ready to be captured. From the Azure portal, click the Capture option.

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/capture.png"><img class="alignnone size-large wp-image-165" src="https://msdnshared.blob.core.windows.net/media/2016/06/capture-1024x431.png" alt="capture" width="1024" height="431" /></a>

Be prepared to wait a while for this to complete.
<h3>Step 2: Creating an Azure RemoteApp Collection</h3>
Now that we have a RemoteApp compatible image containing USD in our gallery, we can create a RemoteApp Collection. This is a collection of applications installed on a template which are ready to be published. The following instructions are suitable for trialing. Setting up Hybrid RemoteApp connecting to on-prem infrastrcture has extra considerations, <a href="https://azure.microsoft.com/en-us/documentation/articles/remoteapp-collections/" target="_blank">the RemoteApp documentation</a> is a good place to start.

1. Log in to the legacy Azure Portal (<a href="https://manage.windowsazure.com" target="_blank">https://manage.windowsazure.com</a>). At time of writing RemoteApp is only available in the legacy Azure Portal (Note: <em>If you are in the new portal and attempt to create a RemoteApp instance, it will redirect you to the new portal anyway).''</em>

2. In the Azure Portal footer menu Click <strong>NEW</strong> --&gt; <strong>APP SERVICES</strong> --&gt; <strong>REMOTEAPP</strong> --&gt; <strong>CREATE WITH VNET</strong>

3. Enter in a <strong>NAME</strong>.

4. Select a Basic <strong>PLAN</strong>.

5. Set <strong>JOIN LOCAL DOMAIN</strong> to <em>NO </em>

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/create_vnet.png"><img class="alignnone  wp-image-215" src="https://msdnshared.blob.core.windows.net/media/2016/06/create_vnet-1024x431.png" alt="create_vnet" width="739" height="311" /></a>

The new collection will appear in the list

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/remoteapp_list.png"><img class="alignnone  wp-image-225" src="https://msdnshared.blob.core.windows.net/media/2016/06/remoteapp_list.png" alt="remoteapp_list" width="813" height="63" /></a>

6. Double click the collection to open it's configuration screen.

7. The <em>link a template image</em> button will be highlighted in green, click it

<img class="alignnone  wp-image-295" src="https://msdnshared.blob.core.windows.net/media/2016/06/remotapp_coll_configure.png" alt="remotapp_coll_configure" width="610" height="335" />

8. This will start the link template dialog. On Step 1 click the <em>Import and image from you Virtual Machines library (recommended) </em>option.

<img class="alignnone  wp-image-296" src="https://msdnshared.blob.core.windows.net/media/2016/06/remoteapp_link_template.png" alt="remoteapp_link_template" width="523" height="332" />

9. On step 2, in the <strong>VIRTUAL MACHINE IMAGE</strong> dropdown, select the remoteapp vm image you created earlier. If it doesn't appear in the list, you may have to reload (F5). Check the <strong>I CONFIRM ...</strong> checkbox and click next.

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/remoteapp_select_template.png"><img class="alignnone  wp-image-195" src="https://msdnshared.blob.core.windows.net/media/2016/06/remoteapp_select_template.png" alt="remoteapp_select_template" width="518" height="312" /></a>

You will now need to wait for the template to be prepared and the RemoteApp Collecton to be provisioned. This can take up to an hour. You can click on the REMOTEAPPS COLLECTIONS and TEMPLATE IMAGES tabs of the Azure RemoteApp admin screen to check progress.
<h3>Step 3: Publishing Universal Service Desk</h3>
Now we have a collection ready, time to publish the USD client ready for users.

1. Open the RemoteApp Collection

2. Navigate to the PUBLISHING tab

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/remoteapp_publish.png"><img class="alignnone size-full wp-image-235" src="https://msdnshared.blob.core.windows.net/media/2016/06/remoteapp_publish.png" alt="remoteapp_publish" width="602" height="189" /></a>

&nbsp;

3. The <strong>PUBLISH PROGRAMS</strong> dialog will appear. Check <em>Universal Service Desk (</em>and any other app you wish to publish). and Click Next.

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/publish_usd.png"><img class="alignnone size-large wp-image-245" src="https://msdnshared.blob.core.windows.net/media/2016/06/publish_usd.png" alt="publish_usd" width="602" height="519" /></a>
<h3>Step 4: Running USD from a Remote Client</h3>
In this example, I'm going to use the windows client. All clients are available from <a href="https://www.remoteapp.windowsazure.com">https://www.remoteapp.windowsazure.com</a>.

1. Once it is installed on your PC, run the Azure RemoteApp client. Click Get Started.

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/remoteapp_windows.png"><img class="alignnone size-large wp-image-255" src="https://msdnshared.blob.core.windows.net/media/2016/06/remoteapp_windows.png" alt="remoteapp_windows" width="385" height="271" /></a>

&nbsp;

&nbsp;

&nbsp;

2. Click Unified Service Desk...

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/remoteapp_windows_launch.png"><img class="alignnone size-large wp-image-256" src="https://msdnshared.blob.core.windows.net/media/2016/06/remoteapp_windows_launch.png" alt="remoteapp_windows_launch" width="416" height="315" /></a>

&nbsp;

.. and it will start. Note that it is executing remotely in Azure not on your local machine.
<h2>Closing Thoughts</h2>
As mentioned in the introduction, this model provides a range of additional deployment and management scenarios. Maintaining a single hardware/OS footprint (i.e. the RemoteApp Collection) means simpler administration and deployment compared to supporting a fleet of differing OS/Hardware combinations, even when they share a SOE. It enables cloud scalability not possible on-premise, it eliminates the maintenance of a Remote Desktop Services application layer (which is still required in an IAAS cloud scenario).

While a desktop form factor is the most practical, remote applications can be consumed from a variety of form factors and OS types. Here are some examples of USD running on a windows phone...

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/usd_windowsphone.jpg"><img class="alignnone  wp-image-285" src="https://msdnshared.blob.core.windows.net/media/2016/06/usd_windowsphone.jpg" alt="usd_windowsphone" width="274" height="147" /></a>

&nbsp;

and an iPad...

<a href="https://msdnshared.blob.core.windows.net/media/2016/06/usd_ipad1.png"><img class="alignnone  wp-image-276" src="https://msdnshared.blob.core.windows.net/media/2016/06/usd_ipad1.png" alt="usd_ipad" width="516" height="362" /></a>

&nbsp;

&nbsp;]]></content:encoded>
    </item>
  </channel>
</rss>