A detailed guide for provisioning a SharePoint 2016 farm in azure. This also includes Introduction to Azure IaaS basics and IP addresses used with Azure VMs
2. Who Am I?
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
Hi!
I am Isha Kapoor, a SharePoint MVP and
founder and author of www.LearningSharePoint.com.
I am currently working as a SharePoint SME for a
financial company in Toronto.
You can always connect with me on LinkedIn or on
Twitter: @LearningSP
@Learningsp
https://ca.linkedin.com/in/ishakapoor
3. Agenda
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
Introduction to Azure Infrastructure Services - Introduction to Azure Iaas, Azure Deployment Models,
Azure IaaS Resource Arrangement.
Cloud Service Vs Azure Virtual Network - Where to Deploy Virtual Machines.
SharePoint 2016 Deployment -
SharePoint 2016 Beta 2 Architecture,
Create a Virtual Network, IP Addresses of a Virtual Machine,
Create a Virtual Machine, Install Active Directory Services and Domain Controller, Create a SQL Server Virtual
Machine, Install SharePoint 2016 Beta 2.
Using Office Applications in Azure - Options to use Office 365 Subscriptions and RemoteApps.
Using Azure Diagnostics - Enable Diagnostics in Preview Portal, Azure Log Collector Extension.
5. Benefits of Hosting SharePoint in Iaas Cloud?
• Rapidly setup DevTest environments for POC demonstrations.
• Scale to meet peak demands.
• Select Pay-as-You-go for efficiency and reduced cost.
• Excellent for Hosting Apps and Creating & Managing Dev Machines.
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
6. Azure Deployment Models
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
Resource Manager Model (New) Classic Model (Classic)
The Resource Manager deployment model provides you with
a container known as “Resource Group”, that can hold
resources for your application such as a virtual machine,
storage account, a virtual network etc.
Classic Model is the original model where resources such as
a Virtual Machine, Storage account etc. are configured
manually (not as a part of group). These type of resources
added manually includes (classic) in their name now.
You can deploy, update or delete all of the resources for your
solution in a single, coordinated operation.
You can access resources as individual entities and can
perform operations on them individually from within the
Azure Portal or REST API or using PowerShell.
With Resource Manager, you can create re-useable
templates (in JSON format) that can define the infrastructure
for your app, how to configure that infrastructure, and how
to publish your app code to that infrastructure.
There is an option to download and re-upload Cloud Services
and Virtual Network configuration files to make the Cloud
Service or VNet re-usable. you can create a Virtual Network
to define your infrastructure.
Resources in Resource Manager can be created and managed
through Azure PowerShell, Azure CLI (for Mac, Linux, and
Windows), and the Azure portal, or REST API.
Resources in Azure Classic Model can also be created and
managed through Azure PowerShell, Azure CLI (for Mac,
Linux, and Windows), and the Azure portal, or REST API.
Azure operates in two deployment models - Classic (Azure Model) and Resource Manager Model.
Complete List of differences - https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-azurerm-versus-azuresm/
8. Azure Deployment Models
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
Resource Manager Model (example)
9. Why use Classic Model?
It gives you the flexibility in how you want to Configure your
resources.
You know better when you do everything on you own.
When you know better, you do better.
Reason
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
10. Azure IaaS Resource Arrangement
Regions:
• East US (Virginia)
• West US (California)
• US North Central (Chicago)
• US South Central (Texas)
• Europe North (Dublin)
• Europe West (Amsterdam)
• Asia Pacific East (Hong Kong)
• Asia Pacific Southeast (Singapore)
• Japan East (Saitama)
• Japan West (Osaka)
• Brasil South (São Paulo)
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
Azure Infrastructure (IaaS) arranges Virtual Machines in various Microsoft-managed datacenters. The arrangement
however, can be in multiple forms. Below are some basic arrangements that azure offers.
11. Azure IaaS Resource Arrangement
Fault Domain’s - A fault domain is a grouping of hardware (rack of resources like servers, power etc) in which web, worker and
Virtual Machines are arranged.
Update Domain (UD) - An update Domain on the other hand is an arrangement within the Racks so as to provide the Web or
worker role instances with high availability by ensuring that only one of Instances of the roles will be down for update at one
time. Role instances are allocated to an upgrade domain when the service is deployed.
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
12. Azure IaaS Resource Arrangement
Availability Set (High-Availability farm) - Now when you configure Virtual Machines to be a part of a Availability set, Microsoft will re-arrange
the VMs in such a way that it belongs to a different Rack (in Failure domain (FD)) so as to avoid Downtime while patching.
Combined with Load balancers, availability sets can provide up to 99.9% SLA for Virtual Machines. Of Course you should have multiple VM
instances added to a Availability Set.
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
13. Azure Virtual Machines – Where to Deploy?
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
Cloud Services - Virtual machines created with the classic deployment model are always placed in a cloud service. A Cloud
Service acts as a container and provides a unique public DNS name, a public IP address (VIP), to access Virtual machine over
the Internet. Typically, a Virtual Machine resides in a role which resides in a cloud service.
Virtual Networks - An Azure Virtual Network is similar to Virtual networks on Vmware or like your on-premises. A Virtual
Network can contain multiple Cloud Services and Virtual Machines. Virtual Network provides you with more options in terms of
connecting over secure connections to other Azure Virtual Networks and to your on-premises networks.
Question now is where to add your Virtual Machine Cloud Service or Virtual Network?
You always add a Virtual Machine
in a Cloud Service.
(only in classic model)
You then add a Cloud Services in
a Virtual Network.
14. Options to Host a SharePoint Farm in Azure
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
Two options to host your SharePoint 2016 Farm -
Stand-alone Cloud Service (Provision an SharePoint 2016 IT Preview Image from gallery)
Virtual Machines in different Cloud Services
can only communicate through VIP.
CloudService1.cloudapp.net CloudService2.cloudapp.net
Virtual Network (Provision all the Virtual Machines separately and install AD,SQL and SharePoint Beta 2)
Virtual Machines in different Cloud Services
but as a part of same Virtual Network can
communicate through Internal IPs.
15. SharePoint 2016 Beta 2 Architecture
Software Requirements
Operating System
Windows Server 2016 Technical
Preview 3
Windows Server 2012 R2
Database
SQL Server 2014 SP1
SharePoint
SharePoint 2016 Beta 2 Download link.
Features
Active Directory Services
Domain Controller
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
Note about SharePoint 2016 Upgrade : There is no upgrade path for SharePoint 2016
Preview to SharePoint 2016 Beta 2. A new Installation will be required for SharePoint
2016 Beta 2.
16. Create a Virtual Network
Create a Virtual Network
1. In your Azure Portal, select New at the bottom and then select Network Services -> Virtual Network -> Custom Create.
2. Give your Virtual Network a name. 3. Give your Virtual Network a name.
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
17. Create a Virtual Network
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
3. Add additional subnets if you want or leave it as it is. For this example we will use the default Subnets.
18. Create a Virtual Network
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
4. Verify the Virtual Network in Azure Portal.
19. Create a Virtual Machine (VM1)
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
1. In Azure Portal, select New at the bottom and then navigate to Compute -> Virtual Machine -> From Gallery.
2. Select Windows Server 2016 Technical Preview 3 under Windows (on left).
20. Create a Virtual Machine (VM1)
3. Give your VM a name and create a username & password for accessing the Virtual Machine.
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
21. Create a Virtual Machine (VM1)
4. Next enter a Cloud Service DNS name and select the Virtual Network (created in Step# 1). Select the existing Subnet and
add the value for new availability set.
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
22. Create a Virtual Machine (VM1)
5. Install the VM Agent.
This might take a while. You can verify the status in Azure Portal under Virtual Machines.
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
23. Create a Virtual Machine (VM1)
Verify that the Virtual Machine has been provisioned and it is listed in the
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
24. IP Addresses of a Virtual Machine
Virtual Machine IP Addresses - Typically, Azure Dynamically assigns IPs to Virtual Machines when they are Created or de-
allocated & allocated.
A Virtual Machine can have three types of IP addresses -
• DIP (Dynamic or Internal IP address)
• VIP (Cloud Service IP address generally accessed by VIP:[PortNumber])
• PIP (PublicInstance level IP address)
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
DIP (Dynamic or Internal IP ) VIP (Cloud Service IP) PIP (PublicInstance level IP)
This is the Internal IP address that is
assigned to a Virtual Machine when it
gets created. For a Virtual Network, DIP
is selected from the Subnet-IP range
that is pre-specified.
Each Cloud Service when created gets a
Public IP address (VIP). This VIP along
with the PortNumber of the Virtual
Machine it containes, is used to access
a Virtual Machine publically.
VIP:[PortNumber]
Instace level Public IP address is
assigned or Reserved for a VM so it can
be accessed Publically using that PIP IP
address.
Set-AzurePublicIP command is used for
the purpose of reserving the IP.
Used When : Virtual Machines in same
Cloud Service or Virtual Network need
to communicate.
Used When : Virtual Machines in Cloud
Service need to be accessed from
outside.
Used When : Passive FTP or outbound
traffic where a VM’s Public address will
be its identity to the external machines.
Reference : More about DIP,VIP,PIP for Virtual Machines.
25. Set a Static IP for Virtual Machine
When a Virtual Machine is a part of a Virtual Network, a DIP or Internal IP address is selected from the Subnet-IP range that
was specified when a Virtual network was created. There is no control over which IP address from the Subnet-IP range will
be assigned to the Virtual Machines, but there is an option to Set Static IP, selected from within the subnet range.
Now, to have a Domain Controller provisioned in your Virtual Machine, it would need a static IP. There is a option to do just
that using Azure PowerShell. In Azure PowerShell, you can use Test-AzureStaticVNetIP cmdlet to verify if the static IP is
available first.
Use, Test-AzureStaticVNetIP -VNetName SP2016 -IPAddress 10.0.0.10
Next, use the cmdlet Set-AzureStaticVNetIP to set a static IP for a Virtual Machine.
Get-AzureVM -ServiceName SP2016VM -Name SP2016VM | Set-AzureStaticVNetIP -IPAddress 10.0.0.10 | Update-AzureVM
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
26. Set a Static IP for Virtual Machine
Verify the Static IP in Azure Portal -> Virtual Machine’s Dashboard.
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
27. Install the Active Directory Services
Next, connect to the Virtual Machine VM1 to install the Active Directory Services.
Login to the server and in Server Manager, select Add Roles and Features.
Follow the Wizard as per below to install Active Directory Services.
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
28. Install the Active Directory Services
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
29. Install the Active Directory Services
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
Finally, Install the Active Directory Services.
30. Promote to Domain Controller
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
Once the Active Directory is installed, let’s promote our VM1 server to Domain Controller.
Select Promote this server to Domain Controller in Server Manager. See below.
31. Promote to Domain Controller
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
32. Promote to Domain Controller
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
34. Configure your VNet with DNS Server
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
Once the Domain Controller Services are installed, we need to configure the Virtual Network to register our DNS Server with
IP and Domain.
Navigate to the Virtual Network and then under Configure add the entry.
35. Provision a SQL Server Virtual Machine
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
Add a SQL server Virtual Machine from the Gallery. Look at the steps below. It is similar to adding Virtual Machine 1.
1. In your Azure Subscription, Create a new Virtual Machine from gallery.
2. Select SQL Server 2014 Standard SP1.
3. Next give your VM a name and select the Configuration.
4. Select other Configurations like Region/Virtual Network (which Must be your Virtual Network name).
5. Lastly, Install the Virtual Machine Agent.
6. Once the SQL server setup is completed, verify that it is a part of Virtual Network.
7. Navigate to Virtual Network and under Dashboard verify that the new SQL server
is listed.
Once you have the SQL server as a part of the Virtual Network, connect to the VM
to change the domain settings. In the Server Manager, click on the Workgroup ->
In System Properties, select Change.
then, Restart the server.
36. Provision a SharePoint 2016 Beta 2 Virtual Machine
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
Like, SQL Server VM, next add a new Windows Server 2012 Server for installing SharePoint 2016 Beta 2 Virtual Machine.
Select Virtual Machine Windows Server 2012 R2 from the Gallery. Look at the steps below.
1. In your Azure Subscription, Create a new Virtual Machine from gallery.
2. Select Windows Server 2012 R2.
3. Next give your VM a name and select the Configuration.
4. Select other Configurations like Region/Virtual Network (which Must be your Virtual Network name)
5. Lastly, Install the Virtual Machine Agent.
6. Once the Windows Server is setup, verify that it is a part of Virtual Network.
7. Navigate to Virtual Network and under Dashboard verify that the new Windows server
is listed.
Don’t forget to Change the Domain In Server Manager,
click on the Workgroup -> In System Properties, select Change.
then, restart the server.
37. Install SharePoint 2016 Beta 2
Download SharePoint 2016 Beta 2 in your SharePoint Virtual Machine and then run the Prerequisites – Preparation tool.
You can now Create Service accounts (sp16_setup) in AD (VM1) and then Login with the Service Ids to install SharePoint.
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
38. Install SharePoint 2016 Beta 2
Enter the Key (Copy from the Download Page)
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
39. Install SharePoint 2016 Beta 2
Install and Run the Configuration Wizard.
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
40. Install SharePoint 2016 Beta 2
In the Configuration Wizard, Create a new Farm.
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
41. Install SharePoint 2016 Beta 2
Select a passphrase and Create a Single-Server Farm.
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
42. Install SharePoint 2016 Beta 2
Specify the authentication and Confirm the settings
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
43. Install SharePoint 2016 Beta 2
Let the Configuration wizard run until you see the below screen.
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
44. Using Office Applications in Azure
For developing Office based apps, or for generally accessing office applications like Word, excel in Azure Virtual Machines, you
can use the following Options :
• Office Online Server - In SharePoint 2016, Excel Services has been deprecated. It is now recommended that you use the
Office Online Server (the on-premises version of OWA) to host Excel services and its related BI components.
• Using your Office 365 subscription - If you have an existing plan for example, Office 365 E3 plan, you can use your Office 365
Licenses from your plan and assign them to users in your Azure VM’s Active Directory (the Service or Dev accounts).
“AD Connect” utility can be used to Integrate On-prem Active Directory (VM1) with Office 365 Active Directory.
Global admins can then assign license to users from Virtual Machine's Active Directory.
• Using Office 365 ProPlus Licenses - You can sign-up for and use your existing Office 365 ProPlus Subscription to setup a
“RemoteApp” that will allow your user’s to download and interact with the published content on any machine (your Local
Machine, Virtual Machine. Phone etc.) Like you create Remote desktop App etc.
Azure provides you with a built-in Office 365 ProPlus Azure gallery image that will allow you to connect your own Office 365
ProPlus Subscription and publish Office applications like Word, Excel or PowerPoint Online for your SharePoint 2016 Azure VM
(or any other machine).
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
45. Enable Diagnostics Log in Preview Portal
In order to collect Logs from your Virtual Machines, you need the following :
• Azure VM agent installed (you do that when you create a Virtual Machine).
• Enable Diagnostics for Virtual Machines.
To enable Diagnostics, you can configure extensions available for Virtual Machines so as to get the desired set of Logs. Typically,
user’s prefer to download the Logs in Azure Storage.
Options to enable Diagnostics :
• Using System Center to monitor your Azure VMs
• Using Diagnostic Extensions – Microsoft Azure Diagnostic Extension’s job is to periodically gather up all the diagnostic data
(based on a configuration you choose) buffer the data on the local instance, and then send the data off to an Azure storage
account for safe keeping. Once the data is in Azure storage, it can easily be downloaded or queried to help you understand
more about the application.
The Diagnostic extensions for a VM can be modified and configured, not only by a REST API, but also with some Microsoft-
provided PowerShell Cmdlets
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
46. Enable Diagnostics Log in Preview Portal
You can also navigate to Diagnostic in the new Azure Portal to enable Diagnostics for a Virtual Machine.
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
47. Azure Log Collector Extension
Log Collector extension - With “AzureLogCollector” extension of a Virtual Machine, you can now gather Logs from Virtual
Machines without requiring to remote login into the Virtual Machines. Admins can use Scripts (below) that would upload
Logs from your VM into the specified Azure Storage account.
The Script basically enables the AzureVMExtension named “AzureLogCollector” to collect the Logs from VM. The official
AzureLogCollector Extension To remote login into the Virtual Machine. Read more..
Script Download Link
$ServiceName = “Sp2016VM”
$VMName = “Sp2016VM”
$mode = “GA”
#For Collecting SharePoint ULS Logs, first navigate to the ULS Logs folder and then Share it. Add the Network Location in the Location property of the object.
$a1 = New-Object PSObject
$a1 | Add-Member -MemberType NoteProperty -Name “Name” -Value “ULSLogs”
$a1 | Add-Member -MemberType NoteProperty -Name “SearchPattern” -Value “*”
$a1 | Add-Member -MemberType NoteProperty -Name “Location” -Value “Sp2016vmlogs”
$a1 | Add-Member -MemberType NoteProperty -Name “Recursive” -Value “true”
$AdditionalDataList+= $a1
$StorageAccountName = ‘atlazurestorage’
$StorageAccountKey = ‘storagekey‘
Finally, navigate to the path where you saved the downloaded the script file and then run the following
.SetAzureVMLogCollector.ps1 -Service $ServiceName -VMName $VMName –Mode $mode -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey -
AdditionDataLocationList $AdditionalDataList
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
48. Thank You for Coming
By : Isha Kapoor (SharePoint MVP ) Twitter : @Learningsp, www.LearningSharePoint.com
Questions?
@Learningsp
https://ca.linkedin.com/in/ishakapoor
Editor's Notes
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.
Connecting data sources and creating solutions is only part of the story, though. What’s required for an app development solution to be truly effective is for users to have the ability to easily deploy and share their useful solutions across all the places, teams, and devices that will find value in them. Seen from another perspective, that all users are able to browse and discover new ideas and solutions, easily install and use them across their devices, and even modify them to make an exact fit for themselves. And all this with the security and oversight your business demands.