Guest post from MVP Vincent Biret
It has been a long time question: should we or not bring our core business applications to SharePoint? What are the benefits? What are the risks? Is it hard? ...
Well, we’ll try to answer this question taking into consideration all the new capabilities coming out lately.
For the rest of this post, when I’m referring to SharePoint, understand it as SharePoint on-premises or online or even Office 365 globally. Of course some features are available only online or on-premises but I’ll try to focus on the general idea.
What is a core business application?
First we have to back off a little bit and take a better look at the big picture. What is it that the company you are working at (or your division) is doing for living? To what are they adding value? Why customers are willing to pay and what are they expecting?
Once you start analyzing that and answering to these questions you are beginning to have a first idea of the picture: people at your company have one or many roles and in their everyday work they are a part of one or many processes.
Some of these processes are more critical than other for example if a car constructor company suddenly cannot produce cars anymore, there is a big chance they run out of business pretty soon. But if their expenses reports to not reach the accounting department anymore, they will be able to survive.
Some of these processes might already be covered by existing products, others by custom applications, some delegated to contractors and other ones might still exist only on paper/people’s mind/some hidden excel spreadsheet/…
For example if we take a law consulting firm, it is very likely they already purchased a software for all HR and payroll related processes but maybe they don’t have anything more than paper files for customers’ requests tracking.
To recap a core business application is something that your company does to earn (or save) money, that can be represented and treated digitally. Some applications/processes will be more or less critical to your company. Some of these processes will rely on existing products/services and others won’t exist as such or your needs will be too custom to be met by the existing products.
Why bringing your core business apps to SharePoint?
First of all you’ll notice I wrote “to” SharePoint and not “in” SharePoint and I’ll detail why at a later time.
Microsoft has demonstrated us over the years that SharePoint is a great product (and even a greater service). It’s already a place in a lot of companies where people collaborate, store their documents, publish sites/data and do even a lot of other things.
But from a developer perspective what are the perks of developing with SharePoint:
- It handles security (authentication, roles, groups, permissions…) for you and it is easily customizable by power users/IT Pros.
- It allow users to store a lot of content
- It has a search engine
- It relies on an extensible data model
- It provides a lot of services (machine translation, word automation, workflows, connectivity to external data sources, business intelligence capabilities,..)
- It provides lot of social features (well this one is probably going to evolve a lot in the next years with the integration of Yammer)
Of course all these features are easily integrated within your applications using SharePoint’s API.
But most of all, SharePoint is becoming the central place of the company. I’m pretty sure you’ve all seen a typical SharePoint intranet with corporate news, a few applications links, and a few other things, where nobody goes. They just directly jump to their collaboration, social or search subsite and start working. Why is that? Because people have been given less time to do more things so they want to be productive.
Providing the link to your corporate applications on the corporate intranet site is a great first step of integration but why not directly providing the application itself when possible? Your users would then access their core business data integrated with the built-in features of SharePoint. They would have a central place to look for things they need.
I’m sure you can already imagine all the productivity (understand money) gained by having:
- Less time spent on searching things
- Less time spent authenticating/try to remember passwords/…
- Less time spent managing rights
- Better presentation (and understanding) of data
- Better follow up and reporting of even smallest tasks
- Business processes formalized and centralized
What’s changed in SharePoint (Office 365) development?
For those of you who are not SharePoint developers you might not be aware that Microsoft developed a whole new development model about two years ago. We used to have to develop with SharePoint’s context which meant:
- We could only use compatible technologies (reduced set of all the .NET technologies)
- Our application could slow down SharePoint (or in other words SharePoint could slow down our application)
- Learning curve was huge
- Testing was complicated
- - …
And I’m pretty sure developers having experienced SharePoint could come with a lot of other reasons avoiding SharePoint development.
It’s over now! With the new app model you have two main choices:
- Provider hosted applications
Using the second one you can use nearly any technology (Microsoft or not) and you communicate with SharePoint via a set of RESTFul API’s. Your application is hosted outside of SharePoint but works with SharePoint, setting you free of previous limitations.
Then your application is “presented” in SharePoint via:
- Links/tiles in the site
- Custom actions on SharePoint data
- Actions in the ribbon
- Full pages
- App parts (new version of web parts)
- Remote event receivers
So just consider SharePoint like something taking care of most part of the security for you, exposing you a set of useful services and data, and presenting/notifying your application. Other than that you are free to use anything you need inside your application. That includes all the services offered by the Microsoft Azure platform, obviously they are designed to work great with office 365 and office 365 partially relies on some of its services.
Another great thing about this new app model is that it has been extended to the whole Office 365 service/suite which means your app could be available for: Office programs, SharePoint, Office online (soon)…
Not convinced yet? Need an example? Here you go!
One of the sessions I give during SharePoint/Office 365 events has an example, so I thought I just might reuse it.
Snow Pro Corporation (fake, don’t Bing it 😉 ) is a ski equipment company. They design, produce and ship skis, snowboards, coats, etc. They have 3 factories in Canada, some warehouses across USA, and a few partners/sales offices spread around the world. One of their core business applications is the one tracking production and shipment of items. Right now each factory/warehouse has its own instance of the application running on-premises. Every time someone needs stock info, to ship something to customers, to move stock from factories to warehouses they need to give a call to the person in charge at the location.
The first effort has been to move and merge SQL databases to the Azure SQL Database service so now we have a global representation of stocks, production etc. (we can either directly connect the existing software to Azure or use SQL Data Sync, but SQL Data Sync is still in preview)
People in factories and in warehouses are not using Office 365 because they spend most of their days in front of machines and not in front of computers, however they have kiosks display the factory/warehouse application. We only had to do minor modifications to this app and they already know how to use it, so they’ll stick to that for now.
On the other hand people from Marketing have always been complaining that’s it’s complicated to know what our available stock is when they need to put together some events/demonstrations. So we’ll build them a shipment application with these main features: know in real time stock status, order a shipment, follow the shipment status. And this app will be on Office 365.
You can download my sample (and see how it is simple) from GitHub here. You’ll need to create a Azure SQL Database, create an Azure Website, publish the compiled version, and register the app to your Office 365 tenant.
You can also check out this video that I created:
Again once, I’m using Office 365 + Azure capabilities. Here is what I could add to this application:
- Task tracking via work management service
- Search capabilities via azure search
- Worklow (actions, conditions, validations, notifications… basically everything related to processes)
- Business intelligence with power BI (we actually do that in the session)
Conclusion and Next Steps
I hope going through the above you now understand that SharePoint (and in general Office 365 + Azure) is now a great platform to support and expose your business applications providing you a lot of features out of the box. It is now way simpler to integrate your business application with SharePoint using your favorite technologies and Visual Studio.
If you want to start learning how to create amazing enterprise applications, check out the following resources: