Thursday, October 17, 2013

Create an Isolated App Domain in SharePoint 2013

Setting up a SharePoint development environment has always been challenging and with the new Apps model in SharePoint 2013, there are even more options and requirements. For traditional SharePoint developers, that means an Isolated App Domain is required for local App development.

There are a few PowerShell scripts out there that can make some of the necessary changes for you, but in my experience these scripts are often incomplete and add unnecessary complexity. Either way, I have always found it's better to understand what's happening in your environment even if you choose to automate the process afterwards. Be sure to follow these instructions closely and don't skip any steps. Please note - there may be some naming variations, depending on the configuration of your SharePoint development environment.


Download this article Create Isolated App Domain.pdf (1.0MB)
Download the SharePoint commands Isolated App Domain Commands.txt used in this article (1.7KB)

Step-by-Step Instructions (Graphical Instructions | Video Instructions | Downloads)

  1. Run the DNS Manager from the Windows Start Screen.
  2. In DNS Manager, right-click Forward Lookup Zones, then the New Zone context menu.
  3. Click Next on the New Zone Wizard dialog.
  4. On the Zone Type step, select Primary zone, then Next.
  5. On the Active Directory Zone Replicator Scope step, select the To all DNS servers running on domain controllers in this domain option, then Next.
  6. On the Zone Name step, enter your app domain name (i.e., informatix.com), then Next.
  7. On the Dynamic Update step, select the Allow only secure dynamic updates option, then Next.
  8. Click Finish to complete the New Zone Wizard.
  9. Right-click the newly created zone (informatix.com) and click New Alias (CNAME) from the context menu.
  10. On the New Resource Record dialog, enter * as the Alias name and select the Browse button.
  11. On the Browse dialog, drill down to your server -> Forward Lookup Zones -> domain controller -> (same as parent folder). Ensure Hosts and Aliases (A and CNAME Records) is selected as the Record types and click the OK button.
  12. Click OK to close the New Resource Record dialog.
  13. Verify the SOA, NS and CNAME were properly created by selecting the new Forward Lookup Zone (informatix.com).
  14. In SharePoint Central Administration, click the Manage service applications link.
  15. Click the New button, then the App Management Service menu item.
  16. On the New App Management Service Application dialog, enter AppManagementServiceApp as the Service Application Name. Select the Use existing application pool option, then select SPAppPool from the drop-down. Ensure the Create App Management Service Application checkbox is checked. Click the OK button.
  17. The service application process may take a couple of minutes, depending on the development farm configuration.
  18. Once returned to the list of Service Applications, ensure both App Management Service Application and User Profile Service Application are Started.
  19. Run the SharePoint 2013 Management Shell as an administrator.
  20. Start the SPAdminV4 and SPTimerV4 service applications:
    net start SPAdminV4
    net start SPTimerV4
  21. Set the domain used to host apps to the new zone created above:
    Set-SPAppDomain "informatix.com"
  22. Start the AppManagementServiceInstance and SPSubscriptionSettingsServiceInstance service instances:
    Get-SPServiceInstance | where{$_.GetType().Name -eq "AppManagementServiceInstance" -or $_.GetType().Name -eq "SPSubscriptionSettingsServiceInstance"} | Start-SPServiceInstance
  23. Ensure the AppManagementServiceInstance and SPSubscriptionSettingsServiceInstance service instances are Online:
    Get-SPServiceInstance | where{$_.GetType().Name -eq "AppManagementServiceInstance" -or $_.GetType().Name -eq "SPSubscriptionSettingsServiceInstance"}
  24. Create the SharePoint Subscription Service:
    $account = Get-SPManagedAccount "DC07\SPFarm"
    $appPoolSubSvc = New-SPServiceApplicationPool -Name SettingsServiceAppPool -Account $account
    $appPoolAppSvc = New-SPServiceApplicationPool -Name AppServiceAppPool -Account $account
    $appSubSvc = New-SPSubscriptionSettingsServiceApplication –ApplicationPool $appPoolSubSvc –Name SettingsServiceApp –DatabaseName SettingsServiceDB
    $proxySubSvc = New-SPSubscriptionSettingsServiceApplicationProxy –ServiceApplication $appSubSvc
    $appAppSvc = New-SPAppManagementServiceApplication -ApplicationPool $appPoolAppSvc -Name AppServiceApp -DatabaseName AppServiceDB
    $proxyAppSvc = New-SPAppManagementServiceApplicationProxy -ServiceApplication $appAppSvc
    Note - Make sure to change the "DC07\SPFarm" to your farm account (or create a new farm-level managed account).
  25. Set the name for the site subscription:
    Set-SPAppSiteSubscriptionName -Name "app" -Confirm:$false
  26. Create a new Developer Site site collection for local App deployment. In Central Administration, click Create site collections.
  27. On the Create Site Collection page, enter the following and click the OK button:
    FieldValue
    TitleApp Dev
    DescriptionApplication Development
    URLdev
    TemplateCollaboration -> Development Site
    Primary AdministratorAdministrator
  28. Once the developer site has been created, click the OK button to return to Central Administration.
  29. (Optional)  In some cases, you might receive unauthorized errors or multiple login requests after you've deployed a SharePoint app. One solution is to Disable Loopback Check in Windows. I usually just disable the loopback check at this point to avoid headaches down the road.
  30. That's it - now you're ready to deploy your SharePoint apps to your local SharePoint development environment.

Graphical Instructions

  1. Run the DNS Manager from the Windows Start Screen.
  2. In DNS Manager, right-click Forward Lookup Zones, then the New Zone context menu.
  3. Click Next on the New Zone Wizard dialog.
  4. On the Zone Type step, select Primary zone, then Next.
  5. On the Active Directory Zone Replicator Scope step, select the To all DNS servers running on domain controllers in this domain option, then Next.
  6. On the Zone Name step, enter your app domain name (i.e., informatix.com), then Next.
  7. On the Dynamic Update step, select the Allow only secure dynamic updates option, then Next.
  8. Click Finish to complete the New Zone Wizard.
  9. Right-click the newly created zone (informatix.com) and click New Alias (CNAME) from the context menu.
  10. On the New Resource Record dialog, enter * as the Alias name and select the Browse button.
  11. On the Browse dialog, drill down to your server -> Forward Lookup Zones -> domain controller -> (same as parent folder). Ensure Hosts and Aliases (A and CNAME Records) is selected as the Record types and click the OK button.
  12. Click OK to close the New Resource Record dialog.
  13. Verify the SOA, NS and CNAME were properly created by selecting the new Forward Lookup Zone (informatix.com).
  14. In SharePoint Central Administration, click the Manage service applications link.
    Note
    There are a variety of SharePoint service applications that may appear on this page, but the User Profile Service Application and App Management Service Application must both exist and be Started. Additionally, there must be at least 1 User Profile setup within the User Profile Service Application. For more information, see Overview of the User Profile service application in SharePoint Server 2013.
  15. Click the New button, then the App Management Service menu item.
  16. On the New App Management Service Application dialog, enter AppManagementServiceApp as the Service Application Name. Select the Use existing application pool option, then select SPAppPool from the drop-down. Ensure the Create App Management Service Application checkbox is checked. Click the OK button.
  17. The service application process may take a couple of minutes, depending on the development farm configuration.
  18. Once returned to the list of Service Applications, ensure both App Management Service Application and User Profile Service Application are Started.
  19. Run the SharePoint 2013 Management Shell as an administrator.
  20. Start the SPAdminV4 and SPTimerV4 service applications:
    net start SPAdminV4
    net start SPTimerV4
  21. Set the domain used to host apps to the new zone created above:
    Set-SPAppDomain "informatix.com"
  22. Start the AppManagementServiceInstance and SPSubscriptionSettingsServiceInstance service instances:
    Get-SPServiceInstance | where{$_.GetType().Name -eq "AppManagementServiceInstance" -or $_.GetType().Name -eq "SPSubscriptionSettingsServiceInstance"} | Start-SPServiceInstance
  23. Ensure the AppManagementServiceInstance and SPSubscriptionSettingsServiceInstance service instances are Online:
    Get-SPServiceInstance | where{$_.GetType().Name -eq "AppManagementServiceInstance" -or $_.GetType().Name -eq "SPSubscriptionSettingsServiceInstance"}
  24. Create the SharePoint Subscription Service:
    $account = Get-SPManagedAccount "DC07\SPFarm"
    $appPoolSubSvc = New-SPServiceApplicationPool -Name SettingsServiceAppPool -Account $account
    $appPoolAppSvc = New-SPServiceApplicationPool -Name AppServiceAppPool -Account $account
    $appSubSvc = New-SPSubscriptionSettingsServiceApplication –ApplicationPool $appPoolSubSvc –Name SettingsServiceApp –DatabaseName SettingsServiceDB
    $proxySubSvc = New-SPSubscriptionSettingsServiceApplicationProxy –ServiceApplication $appSubSvc
    $appAppSvc = New-SPAppManagementServiceApplication -ApplicationPool $appPoolAppSvc -Name AppServiceApp -DatabaseName AppServiceDB
    $proxyAppSvc = New-SPAppManagementServiceApplicationProxy -ServiceApplication $appAppSvc
    Note
    Make sure to change the "DC07\SPFarm" to your farm managed account (or create a new farm-level managed account).
  25. Set the name for the site subscription:
    Set-SPAppSiteSubscriptionName -Name "app" -Confirm:$false
  26. Create a new Developer Site site collection for local App deployment. In Central Administration, click Create site collections.
  27. On the Create Site Collection page, enter the following and click the OK button:
    FieldValue
    TitleApp Dev
    DescriptionApplication Development
    URLdev
    TemplateCollaboration -> Development Site
    Primary AdministratorAdministrator
  28. Once the developer site has been created, click the OK button to return to Central Administration.
  29. (Optional)  In some cases, you might receive unauthorized errors or multiple login requests after you've deployed a SharePoint app. One solution is to Disable Loopback Check in Windows. I usually just disable the loopback check at this point to avoid headaches down the road.
  30. That's it - now you're ready to deploy your SharePoint apps to your local SharePoint development environment.

Video Instructions


Downloads


This article as a PDF Create an Isolated App Domain in SharePoint 2013.pdf (1.0M).
The commands used in this article IsolatedAppDomain-Commands.txt (1.7K).

15 comments:

  1. Can this be done with a Powelshell?

    ReplyDelete
  2. This is very well done. Can I use this as part of my dev instructions?

    ReplyDelete
    Replies
    1. Thanks for the compliment. Generally speaking, I don't have any issue with you using it as long as you link back to my article - where are you wanting to use it? Jason.

      Delete
  3. Good job on this. It was a bug help.

    ReplyDelete
  4. very good article. can you send it to me please?

    ReplyDelete
    Replies
    1. There's a PDF link at the top and bottom of the article for direct download. Jason.

      Delete
  5. Thanks for putting this together. Quick question, should you really use an existing AppPool for the AppManagmentServiceApp? I've read that's not best practice. Thanks for your help with this.

    ReplyDelete
    Replies
    1. Certainly not in a production environment or probably not even an integration environment, but I've always found it easier for a purely development environment and it doesn't really impact the type of SP App Dev I do, but you can certainly create a new managed service account and new app pool if you prefer. Have fun! Jason.

      Delete
  6. Great article ! Just to clarify, I have a development farm and a production farm and all servers share the same DNS servers. Do I create two different app domains, one for production and one for development ? At the moment I have both farms using the same app domain but this means that I need to manually edit the host file for every application deployment in visual studio in order to find the application on my development farm.

    ReplyDelete
    Replies
    1. Thanks Benjamin - I've done this both ways. If the development team is small (a couple of developers), it can sometimes be simpler and easier to modify the host files in dev, but most of the time, it's probably more appropriate to create a separate app domain for each farm.

      Delete
  7. Awesome article! Quick question - I'm still getting login popups from IE after I've deployed a new app to my app domain? I thought it might have something to do with my app, so I created a simple "hello world" app and it does the same thing. Did I miss a step? Any ideas?

    ReplyDelete
    Replies
    1. Try adding *.yourappdomain.com to the local intranet zone in IE. It's under Internet Options-->Security-->Sites-->Advanced. I've seen the same thing before and that fixed it for me. Good luck.

      Delete
    2. Sweet - this worked for me!

      Delete
  8. Great work on this! I worked on this for a long time and am glad I finally found this. Thanks. Ray.

    ReplyDelete
  9. Very good article, very many thanks.

    ReplyDelete