Top Challenges when Testing Mobile Features for Web Apps

Brandon Holloway is a Quality Assurance Engineer at ThreeWill. He has over 10 years of QA experience in requirements gathering, risk analysis, project planning, project sizing, scheduling, testing, defect/bug tracking, management, and reporting.

With mobile devices being relied on more today than ever, it has become more and more important for these devices to work well with web applications. Testing these devices has its own set of challenges for QA Engineers. Here are 3 of the biggest challenges I’ve encountered while testing software for mobile devices, based on my limited experience. If you want to learn about SharePoint on mobile, Check this out!

Note These challenges relate to testing a web application that was meant primarily for a desktop browser such as IE or Chrome, but is expected to be compatible with mobile devices. I’m not referring to applications built specifically for mobile devices, such as something you would download from the App Store.

1. High Volume of Test Runs

Most of the time when a customer wants an application to be compatible with mobile devices, they aren’t just referring to a specific type of phone or tablet. Even ignoring the separate challenge of getting access to many different devices, just having to run test cases multiple times to cover all devices you have adds a lot of time to the testing effort. Many of the issues you will find are related to how a device’s screen resolution reacts to the responsiveness of the application. This means you need many devices with various screen sizes. Smaller phones, bigger phones, tablets, etc. You have to test these each in Portrait mode and Landscape mode. You may want to test on wifi vs LTE vs 3G. It just keeps adding up.

Chrome’s desktop browser does have a pretty cool mobile device emulator built in. It is pretty reliable for testing responsiveness for various resolutions, but it isn’t perfect. It is always better to have the actual devices on hand. I have found several responsiveness bugs on the actual devices that looked fine in Chrome’s emulator. Also remember that more devices means more regression testing. Same thing for testing bug fixes. Everything is multiplied.

2. Different Devices Are, Well, Different

While it seems that mobile devices with similar resolutions may behave similarly with a web application, it isn’t necessarily true. I’ve found that iPhones and many phones running Android seem to work fairly well most of the time. Then there are Windows phones. I’ve found some really head-scratching bugs on those that don’t show up anywhere else. I can’t let Apple and Samsung off the hook completely though, because they each have their own quirks. I found both iPad and Galaxy tablets more bug-prone than the phones. And keep in mind the developers will have their own set of challenges tracking down the root cause of a bug for this phone vs that phone vs this tablet, etc. It can become a juggling act for everyone.

3. Documentation

This really goes hand in hand with #1. Scrum fits mobile testing well, mainly because of the more light-weight approach of documentation/requirements. With so many devices and potential issues related to many factors on those devices, you can only be so detailed on paper if you want to test sufficiently. Exploratory and Ad hoc testing are huge parts of mobile testing.

What has been your experience with testing mobile apps?  Leave comments/questions below and I’ll respond to them.

read more
Brandon HollowayTop Challenges when Testing Mobile Features for Web Apps

Plan for Mobile When Creating an Award-Winning SharePoint Intranet

Bo is a Principal Consultant for ThreeWill. He has 18 years of full lifecycle software development experience.

Excerpt from “Creating an Award-Winning SharePoint Intranet” white paper – download here.

For today’s corporate users, mobile support is almost implied.  I’m sure just reading the title conjures a “well duh” sort of response for most reading this.  Stick with me, though, and I’ll guide you through your options, decisions and considerations each with varying degrees or efforts and costs.  Just as mobile devices come in so many shapes and sizes, so do the approaches for dealing with them.

To begin with, SharePoint in its current version is not entirely mobile responsive compared to many public web sites.  That is, the web page you look at on your desktop does not automatically have the smarts to resize and re-render the same content differently when viewed on say an iPad or maybe an iPhone.  When you look at how dynamic the user generated content is you can get an appreciation for how challenging it would be to support such a feat where users author content and the system must dynamically size it based on a device.

Through many iterations, the experience is getting better for sure and there are some features available today that can help.  For example, normal SharePoint team sites have a mobile feature that presents a different page with most page content trimmed out but showing the sites navigation so you can navigate to things like document libraries and documents.  If you are using publishing sites, there is support of device channels where you can target different rendering based on different devices.  In my experience, however, this gives you all the pain, effort, and cost of full mobile responsive but with the added challenges of dealing with many channels for devices.

As of the writing of this document, SharePoint within Office 365 and the shipping on premises version were not fully mobile responsive.  However, new features are being implemented all the time including modern document libraries and lists, modern site contents and eventually modern pages which are mobile responsive.  All these features are coming to the cloud first and will eventually trickle into the on premises versions.  As part of your planning, you should consider how using these features as they are available can impact and your overall mobile plans.

If you want to make your SharePoint portal completely mobile responsive, it likely means that you are going all in on a portal brand with a desire to have it not look like SharePoint and reflect very custom UX goals.  A fully branded, mobile responsive portal is going to be the most expensive approach in terms of time and budget due to the amount of time spent to replace, override and rework some of the SharePoint UI.  It’s also something that may make the most sense in an on premises environment where you control everything.  Consider that within Office 365 you are part of a hosted service where the guidance is to try to stay closer to the UX that is provided as part of that service.  Microsoft has specific guidance and best practices that partners are in tune with to ensure that sites built in Office 365 are aligned and continue to benefit from new features as they are released to the cloud.

If your budget needs are more constrained or you simply prefer to invest more on features and functionality than a user experience overhaul, there are still many mobile options available to you.  There are free packages available for on premises and online that can bring some mobile responsive behaviors to the SharePoint UI.  These are “one size fits all” packages so they may not get you to 100% of your vision but are sometimes a good start.   There are also many free and paid mobile apps available for iOS and Android from third parties, as well as Microsoft.  One of the most exciting from Microsoft right now (available only on iOS and Android) is the SharePoint Mobile App marketed as your intranet in your pocket.  You can find many apps including Beezy, Colligio, Harmon.ie and Infragistics as well that allow you to connect and use SharePoint on a mobile device.  Be sure to do some trial tests with several of the apps to determine which suits your needs and goals best.

Regardless of a full mobile responsive approach or one augmented by apps, you should also consider your user’s engagement patterns with each and try to tailor their experience accordingly.  By this, I mean users tend to be more content consumers on mobile simply due to the form factor and sometimes difficulty authoring content on a small device.  Therefore, if you are going full mobile responsive, you can embrace a clean and simple approach and hide things like forms, buttons or other content targeted more at authors.  With apps you probably don’t have as much control, but consider the user scenarios when evaluating apps so you can align the best experience for your users to consume while on the go.

read more
Bo GeorgePlan for Mobile When Creating an Award-Winning SharePoint Intranet

FAQ: Is My Data in Office 365 and SharePoint 2016 Secure?

Is My Data in Office 365 and SharePoint 2016 Secure?

We know that security and privacy of data is very important to you. In fact more than half of all organizations consider security and privacy their topmost priority when choosing a platform. We at SharePoint and OneDrive believe that our products need to be smart and intelligent about delivering the right level of security without compromising user productivity. Over the next few minutes I will show you how SharePoint can help you deliver the right level of security for your organization, by delivering differentiated access based on user, device, location and sensitivity of data, prevent unwanted sharing of data, help automate data classification and assign policies and give you higher visibility into user and file activity using audit logs. In addition to the controls we give you I will also highlight the investments we have into Service Fabric to give you better control over the security of your data at rest.

Creating and collaborating on content is fundamental to SharePoint. As we add new functionality to the product one of our key principles is that you cannot have security without usability. Users will always find a way to get their job done and if security gets in their way they will find another, likely less secure, way to get their job done. We have seen this with trends like users bringing less secure consumer services into workplace.

We at SharePoint and OneDrive believe that the level of security and any resulting user friction in the experience needs to be commensurate to the value of the data or the sensitivity of the data. The higher the value of the data, it makes sense to have a high level of security. For example if your user is trying to access a document that contains some intellectual property for the organization, it makes sense to maybe ask them for an additional form of authentication or even block access from an unmanaged device.

On the other hand if your user is trying to access some data with low sensitivity, maybe they’re trying to access their own personal trip itinerary, it does not make sense to add any additional friction in that experience. We believe that security needs to be real time and at the point of access depending upon who you are, what is your user role, what is your level of access. You might have different level of access for people in the HR department versus the R&D department. How are you trying to access that data? Are you using a managed device, an unmanaged device, or maybe a managed app, or maybe a browser on a kiosk? Where are you coming from? Are you coming from a trusted location, a corporate network? Are you on an expected or an unexpected location? Of course most importantly, like we just talked about, what is the sensitivity of the data you’re trying to access?

Remember, the sensitivity of the data can vary during the lifetime of the document as new data gets removed or added to the document. We believe that security at SharePoint and OneDrive needs to be smart to understand all of these aspects in real time to give you the right level of security. We call this differentiated access policies.

I’m now at home using my personal iPhone that is not managed by my organization to access data stored in my work OneDrive For Business. We now have support for managed OneDrive apps in iPhone and Android, so in this case even though the phone is not managed by my organization my app is managed by my organization. I go to my OneDrive app, I tap on it. The screen shows up to remind me that this app is managed by my IT department to protect the company data in this app, which makes complete sense since I connected my organization ID to the app. I click OK. It is now going to ask me for a PIN because this is also an organization policy to manage this app which says I must supply a PIN to make sure it’s me who’s accessing this data on this app. Now I’m in. I can actually see all the documents on my OneDrive For Business and I can be productive against them.

I’ve been working with Alex on a few marketing slogans so I’m going to continue where I left off last night. I click on the document. Word is also managed by my IT department. I click OK, it’s going to ask me for a PIN, and there I’m in the document, I can see the changes I made yesterday. I can actually make some edits if I want and add some new things. But then I decide that I’m actually going to copy some of the slogans I added last night and send them in mail to Alex so I can ask him what he thinks about some of the new things I came up with. I copy a snippet from this document and I decide to send it in Mail. I’m actually using the Mail client that is native on the iPhone and I decide to send this to Alex. I’m going to try and paste what I copied.

Notice how there is no paste option, because the app is managed it is stopping me from copying important information or any data out of the app into another app that is not managed. This makes sense, so I decided, “Oh yeah, I can’t really do that.” But that’s okay, I will just share this document with Alex from the OneDrive app. I go back to the OneDrive app, it will ask me for my PIN again. I select the document and I click share. It tells me that only people in Contoso can view and edit, that makes sense. I click on invite people and I add Alex. I say add, and I’m done. Now Alex and I can both collaborate on the document. This was pretty cool.

Now let’s see what happens if I decide to instead share a document that is considered sensitive by my organization. Let me pick another document that is considered sensitive by my organization and try to share that. Now I get a policy conflict. It tells me that the item I’m trying to share conflicts with the policy. I click OK, it is going to give me details about why it is considered to be in conflict with my companies policy. It tells me that this document contains social security numbers so it is not okay for me to share it with external users. The app prevented me from accidentally sharing this information outside the organization boundaries, that is pretty cool. On the other hand when I’m actually working on documents that are not considered sensitive I was able to share and continue to collaborate.

That was my experience on my phone at home, now I’m at work logged into my work device that is fully managed by my organization. I’m on my OneDrive, I can actually see all the files and you can see that some of the files have a little icon overlay on them. If I hover one one of them it will actually tell me that this particular document is in conflict with a policy. If I click on it. It is going to open up a policy tip that tells me that this document contains social security number and therefor sharing with external collaborators is prohibited. Now I understand that some of the documents in my OneDrive are special and considered sensitive by my organization.

Now I’m going to go and switch to my mail. During the course of the day I’m doing my usual work and I decide that I want to share some document with Tony who works for another company, and we’ve collaborating on some things. I decide to send a mail to Tony at Treyco and I decide to attach a document. Now I’m not aware whether this document is sensitive or special or not, I just select the document, I click next. I decide to send it as an attachment because that’s what I usually do and I type the subject. I say, “Check this out,” and I hit send. Now let’s see what happens. It turns out that this document is actually sensitive and I’m not allowed to share it. I immediately get an email back which actually tells me that a custom flow in the exchange rules has blocked me from sending this message. My organization’s policies dictates that attachments with social security numbers cannot be sent to people outside the organization.

In fact this particular exchange rule is going to apply to any email client I might try to use. In all cases, I as a user am prevented from sharing important information outside the organization, and that’s a good thing. Now I’m back in OneDrive doing my usual work. I’ve been working on some marketing slogan with an external company, Treyco, and I would like to share this document with the folks I’m working with at Treyco so that they can review it and give me some feedback. I click share and I type their names.

I’m first going to share with Tony, [email protected], and then I also have to share it with Rob but I can’t seem to remember Rob’s address at Treyco, but I do remember Rob’s personal email address so I decide to use [email protected] Now I’ve just been prompted and it tells me that it is not okay for me to share with [email protected] That makes sense, it’s probably not a good idea to send corporate information to people’s personal email addresses, so I’m going to delete Rob and I’m going to go find Rob’s right email address. I’m now able to share with him. Now Tony, Rob and I can easily collaborate on this document.

Now let me show you the admin experience for setting up these differentiated access policies. The first thing I’m going to show you is how you can manage the OneDrive mobile apps. We’re going to start in the Intune admin portal. I’m the Intune admin portal and here I actually have an iOS policy and an Android policy. When I click on the iOS policy it will actually show you, you first have to give the name for the policy, in this case I’m just calling it an iOS policy. You have to assign some users to that policy, I’ve got a man group, and then you say which apps should this policy target. In this case it’s targeting OneDrive and all Office and Outlook apps.

Then what are the settings for this policy? In that case the settings are pretty simple, are basically saying that this policy says that the apps can only copy data between other managed apps and you must simply a very simply PIN and the PIN has an expiration of 1 minute, so every 1 minute of inactivity you have to resupply the PIN. That is it. That’s all you need to manage your OneDrive apps.

Now let me show you how you can setup differentiated policies based on the sensitivity of the data. For this we’re going to start in the O365 admin portal. From there we’re going to click on security, which is going to take me to the new security and compliance center. From there I’m going to click on security policies, which is going to take me to data loss prevention policies. This is where I can setup policies specific to the sensitivity of the document. We only have one policy here around the social security numbers. When you click on this policy, this policy currently applies to SharePoint and OneDrive and in future you’ll be able to select Exchange as well.

This policy has some rules associated with it, we only have 3 simple rules. The bottom 2 are about educating the users about what they can and cannot do if the document contains a social security number. In this case it says if the document contains a social security number, then there’s an action associated with it. The action says we’re going to send some notifications and also have a custom policy tip which informs the user that since the document contains a social security number sharing with external collaborators is prohibited. Now this top rule is the more important rule, which is actually going to completely restrict sharing with external users. In this case the rule says, if the document contains a social security number, and it is shared with people outside my organization, then the action is you should block access to the content and send the notification. This is basically how what is kicking in and that’s why the user is not able to share with any external user when there’s any sensitive document and Exchange is also blocking you from sending that document as an email.

I just showed you a very simple policy based on social security numbers. You can create the policies that are right for your organization based on many other sensitivity types. Beyond the settings and controls we also give you visibility into activities in your tenant ,and we now have unified auditing logs across SharePoint and OneDrive. Let me show you what that looks like. You’re going to click on reports, new reports. That is going to take you to the auditing logs. Click on Office 365 audit log reports, that is going to bring up the audit log viewer. Here you can actually see all the activity that has happened on your tenant, but you can also select specific type of activities if you want. We now have activities for files and folders, sharing, synchronization. But for now I’m just going to select all the activities that have happened on my tenant in the last 2 days.

This is a lot of stuff but I can use the right filters. Let’s say I just wanted to see all the activity that has happened on a sensitive document. I go here and I type, password application, this was one of the sensitive documents I showed you before. I can see everybody who has access to this document, the last time it was shared and modified. If I wanted I can also see all the activity performed by a user. I’m going to go here and see everything that Sarah did. This is showing every file she accessed, what she shared, who she shared with. This gives me a good sense of everything that has happened in my tenancy.

Now let me show you on other cool feature we have added for the admins. You can now remotely terminate the sessions of a user. Imagine Sarah calls help desk to tell them that she just lost her laptop, she left it in a taxi. You as a admin can go in and terminate all of her sessions to make sure that nobody can get to your important data using her laptop. Let me show you how you can do it, it’s pretty simple. You start the SharePoint PowerShell and in the SharePoint PowerShell you you just have to type one single command and that’s it. It asks you, “Are you sure?” You say yes, and now in a few seconds you will that Sarah’s session is terminated. There you go. Sarah was locked out of her session, pretty cool.

So far I’ve shown you how you can setup differentiated access based on user, device, location and the sensitivity of data. Let me now share with you where we’re headed directionally over time. In order to get even better usability you should be able to set more fine grain access. Instead of allowing a user to have full access or no access at all to a sensitive document on an unmanaged decide, you might want to allow the user read or view access but not download access. You should also be able to set different session lengths depending upon the sensitivity of the data, the user location and the device. Maybe you want to have shorter session lengths for access from an unmanaged device versus a managed device.

Very soon as an admin you will be able to see both on prem and Office 365 audit logs altogether in the Office 365 admin portal so that you can have a single place to get the complete view of your organization. Beyond the control that we give you at the tenant level we have also made additional investments in the fabric of the service to give you better control over the security of your data at rest. We know that because security and compliance is very important to you, where your data physically resides is also very important to you. As we continue to scale the service we continue to add new geographical locations where you can choose to store your data.

In the last 12 months alone we have added Australia, Japan and India, and in the coming months we will be adding Germany, UK and Canada. In order to give you higher level of visibility and control over who has access to your content stored in SharePoint we just shipped a new feature called customer lockbox. In the rare event that a Microsoft engineer needs to get access to your content because of a customer request from you, we will issue a request through lockbox, if and only if you grant access will the Microsoft engineer be able to access your data. This request and the access are both time bound, and any and all activity that happens during that window is fully logged and auditable. Let me show you how this works.

You’re going to go to the admin portal, click on service settings, click on customer lockbox. This is where you can enable or disable this feature. Once you’ve enabled this feature you can click on the dashboard to see any pending request. You go to customer lockbox request, click on that and in this particular case I have 1 pending request. I have the support call number right next to it and I can decide to either approve it or deny it. If I want to see a history of all previous request I can click view details and history. Here you can see all of your previous customer lockbox requests and you can see which ones you approve, which ones you denied, and you can also see all the support tickets associated with them.

One more thing, as you may now every file stored in SharePoint is broken down into multiple chunks that are individually encrypted and the keys are stored separately to keep the data safe. In the future we would like to give you the ability to manage and bring your own encryption keys that are used to encrypt your data store in SharePoint. If you want you can revoke our access to the keys and we will not be able to access your data in the service.

This was an overview of our new investments in the area of intelligent security and compliance in SharePoint and OneDrive. We want to enable you to have the right level of security for your organization without compromising user productivity. You can try these features in the admin portal on Office 365 today. You can also visit the Trust Center to learn more. Thank you for watching.

read more
empty.authorFAQ: Is My Data in Office 365 and SharePoint 2016 Secure?

FAQ: What’s the New SharePoint Mobile App?

What’s the New SharePoint Mobile App?

With the new SharePoint mobile app, we’re working to deliver your intranet in your pocket. Today we’ll look at how you can use the new SharePoint app to access and stay connected to important content, sites, portals, and people from your intranet while you’re on the go.

Today you can access many SharePoint experiences from a mobile browser, but we started this project because we think we can make this easier, faster, and also more powerful with a mobile app experience. The SharePoint app will be available for Windows, IOS, and Android this year, and it will connect to your environment whether you’re using Office 365 in the cloud, SharePoint 2013 or 2016 on premises, as well as with hybrid deployments.

The mobile and intelligent intranet come together across both collaborative team sites and organizational portals in this app, bringing together the productivity of SharePoint team sites, the broadcast reach of publishing sites and portals, and the mission criticality of your most important business applications, backed by the integration with Office 365 groups, the intelligence of the Office graph, and the security and compliance that you expect from Office 365. These are our new front door applications for SharePoint. They provide a gateway to get to experiences in SharePoint, and I’m excited to walk you through them today.

Let’s start by taking a look at the user experience of the SharePoint app. We’re going to be releasing our first version of this app in the coming weeks, and I’m going to show you a first look at the experience on an IOS device. I previously logged into my account, so all I have to do now is launch the app. We support a variety of authentication methods used by SharePoint, such as AAD, NTLM, FBA, and others, and we will also have support for mobile device management and mobile application management with Microsoft Intune, so the app is secured for IT, and it’s also easy for users right away.

When I launch the app, I land right in the heart of SharePoint, the Sites experience. The Sites tab is where the app gets deeply personal. Using the intelligence of the Office Graph, the SharePoint sites I use most often are right here for me to access without having to do anything to set them up. If the site has a custom logo, as you see with several of these, we will show that, or we’re generate the acronym that you see if there isn’t a custom image. Also I can quickly access to sites I’m following as well.

For sites that I want to be able to keep track of, I use the Follow feature in SharePoint to make certain they’re readily available to me from both the SharePoint app and the web. Here at the top, I have the ability to search. As I type, I get suggestions from Search, and Search is contextual to where I am in the application. Since I started in Sites, the app presents sites first, but it’s also easy to search across SharePoint, so I can see files, people, and other content.

I’ve been working in this field marketing guide team site with my colleagues a lot lately, so it’s prioritized high at the top of my list without having me to do anything. First off, I have a view of the activity that’s been going on in the site. I see documents I’ve worked on, documents my colleagues have been working on, and even indicators of what’s popular currently in the site. I can bring up the menu here to see the full navigation of the site that’s been set up, and that gives me quick access to the resources of the site. This also ensures that the navigation the site owner has set up is readily available to all users.

In addition to the site navigation, I also have quick access to some of the native experiences we’re delivering, such as recent and popular files, lists, and activity that I showed earlier. If I go into Recent Files, I can see content I’ve worked on, as well as what files are the most popular. Going back, I can follow this site if I want to make certain it’s always available to me. I will also be able to share the site from here if I want to make a colleague aware of it.

Besides Sites, the next big section of the app is Links. This is where I access the key organizational links and portals that my company wants to showcase. TED and admins can program links for their employees, and these links will show up both in the SharePoint mobile app and also in the SharePoint Home web experience. This enables users to quickly get access to their Office 365 video portal, company or divisional portals, an HR site, cafeteria menus, or other important organizational resources. Here I can see the responsive web experience for the Office 365 video portal as an example. If I go back, you could see other portals that have been set up for me. If I open up the Contoso web portal, you’ll also see an example of a responsive portal that’s been set up for this customer.

Next up is the People tab. Here I can get access to information about people in my organization. With the power of the Office Graph, I see a refined list of people who I work closely with. I can open up contact information to see organizational details and what content a person is working on.

In Settings, there are two things I want to highlight. First off, we have support for using multiple user accounts with the app. This allows me to have both an Office 365 account and also an on-premises or another Office 365 account that I could use with the app.

One last thing I want to show is Shake for Feedback. With this turned on anywhere in the app, you can shake it, and it will ask you to either report a problem or suggest an idea. We’re looking forward to having you use this to tell us how we can make the experience better.

All right, let’s take a look at what we’re doing to make a great web experience for SharePoint Home as part of Office 365. Just like with the SharePoint mobile app, the new SharePoint Home web experience enables you to easily get to, find, and discover the places and information you need to be productive. We also want to make it easy to navigate across the entire intranet of an organization online, on-premises, and everything in between.

Today many Office 365 users use the Sites page to access SharePoint sites and resources. It’s one of the most clicked tiles in the Office 365 app launcher. We’re modernizing this experience and transforming it into a true home for SharePoint. What was the Sites page will soon be the SharePoint Home, and it’s your on-ramp to the sites, portals, and content you use in SharePoint.

Let’s take a look at the new experience. SharePoint Home displays the sites and portals you’re most active in, along with company-wide links promoted by your organizations and suggested sites that are personal for you. These are the same sites I showed in the mobile app as well. We’re using intelligence from the Office Graph to give users their important sites, groups, video channels, and blogs front and center, and to provide activity information to see what’s going on in each. The content is personalized to me, and helps me officially decide where to work. I can click into any of these cards to open a document or to go to the site. Again, this is the same set of sites and portals that I saw in my SharePoint app.

The user interface is a clean modern design that’s easy to use and is consistent across the web and the mobile app. The SharePoint Home web experience is responsive for devices big and small. You’ll see I can quickly get to the sites I’m following, as well as recent sites I’ve used, so it’s easy for me to keep track of and navigate to the projects and places I’ve been working. I can follow a site, and it shows immediately in the left-hand list. I can also create a new site from here. Up top, you’ll see I have a new Search experience that provides suggestions as I type, and we will also have a modern Search Results page as part of the experience.

One last thing, at the bottom here you’ll see a Feedback link. You can click on it to give us feedback or to make a suggestion. We hope you’ll use that, and we’re looking forward to getting your thoughts.

That was a quick tour of the new SharePoint Home web experience and SharePoint mobile app. The SharePoint Home web experience is rolling out to first release customers very soon, and we’ll be expanding beyond first release over the coming weeks. The mobile apps are going to be rolling out to the IOS, Windows, and Android stores as each platform is ready to go. Keep checking the Office blog and tell us what you think. We’re super excited about the app and the new web experience, and looking forward to getting your feedback. Remember to shake your device and click on the Feedback link in the web to tell us what you think. Thanks for watching.

read more
empty.authorFAQ: What’s the New SharePoint Mobile App?

Designing a Disconnected Mobile Application to Work with SharePoint

Matthew Chestnut is a Senior Consultant at ThreeWill. He has over 20 years of software development experience around enterprise and departmental business productivity applications. He has a proven track record of quality software development, on-budget project management and management of successful software development teams.

When approached by a customer to design a mobile application to be used in the field by employees at locations throughout the state, our initial thoughts centered on browser-based data entry via web forms and SharePoint lists. The application needed the ability to capture data via a data entry form with data validation along with the ability to calculate totals, something HTML and JavaScript are more than capable of, especially when coupled with SharePoint lists or document libraries.

However, while gathering additional requirements from the customer and their subject matter experts, it became apparent that approach would not work as the mobile application needed capabilities that a browser-based solution would not provide:

  • Must function in a completely disconnected fashion (i.e. no Wi-Fi or cellular data)
  • Must have the ability to attach photos to the collected data
  • Must capture signatures of the employee and business
  • Need high-fidelity printing of form to leave with business including the data collected on premise

So, back to the system architecture drawing board! Further research led us down the path which we are currently pursuing. It is still a design-in-progress, so we don’t have all the answers yet. But I wanted to share with you how we are now leaning towards a PDF file-based approach.

The common PDF file has been around for many years providing for high-resolution display of documents across a multitude of devices: be it printers, computer displays, mobile phones and tablets. Another use for PDF forms are for fillable PDF forms where users can enter data into a PDF form in designer-specified locations.

The bottom line? All mobile client PDF processing applications are not created equal. It seems that each vendor of mobile applications that support the PDF standard only support a subset of functionality across all mobile operating systems, whether it be iOS, Android or Windows.

Here are the top 5 things we needed for the design of our mobile SharePoint application:

1. Printing the PDF – what you see is what you get

This is certainly where the PDF format shines. You get what you expect as long as you have a wireless printer (think Bluetooth) connected to your mobile device. One form for data entry and for printing, it can’t get any simpler than this.

2. A signature can be a simple freehand graphic or fully-verified electronic identity

The ability to add a signature to a document means different things to different people. It could be as simple as using your finger or stylus to write your name in a blank space on the form or it could be that a certificate is added to the document that confirms that you are who you say you are. For us, the finger/stylus approach is acceptable and certainly doable in a disconnected mode.

3. File attachments

The PDF standard allows for attaching/embedding other content in the PDF file itself, but your mobile client must support that capability. Many do not. We needed the ability for user to attach photos to the document for subsequent transmission, to the SharePoint document library.

4. JavaScript support for customized validation and calculations

Be aware that calculated fields are available in PDF forms, but only if the mobile client supports it. You can also do custom validation or alter the PDF form at runtime via JavaScript. Many mobile clients support JavaScript on iOS but not on Android, or vice-versa. Be sure to test on all platforms before deciding on your approach.

5. User Workflow

In our application, the user needs the ability to create a number of forms for different businesses and name and store them appropriately while disconnected so that when connected, the data is transferred correctly to SharePoint. Mobile device operating systems like iOS and Android seem to abstract or hide the file system from the user. The mobile applications used to open PDF files have no concept of your application’s workflow; they simply open the file, let you change the form fields and let you save it, many times on top of itself without allowing you to change the name of the document. Some mobile applications allow you to email the PDF form directly (to a SharePoint email-enabled document library) or allow you to “share” the content of a service like Google Drive, DropBox or One Drive. This may require user training to make certain the users know where their documents reside on their mobile device.

A PDF file is more than just a pretty way to view or read documents…

In summary, PDF fillable forms provide a great way to capture user data in a disconnected mobile environment – just be sure you understand the limits!

ThreeWill has the ability and experience to transform standard SharePoint lists and forms into enterprise level applications. Contact us to let us know how we can help you.

read more
Matthew ChestnutDesigning a Disconnected Mobile Application to Work with SharePoint

SharePoint Videos in iOS – the iPhone and iPad Are So Unforgiving

Kirk Liemohn is a Principal Software Engineer at ThreeWill. He has over 20 years of software development experience with most of that time spent in software consulting.

SharePoint Videos in iOS

I recently needed to provide video playback capability for a client running SharePoint 2013 within Azure.  We used the Video content type that stores the video and related information (such as the thumbnail image) within a document set, and I created a custom hover capability similar to how it works on a search results page.  Everything was working fine except that the videos wouldn’t play on an iPhone or iPad even though they worked on an Android and Windows Phones.  I had recalled from past projects that Safari on an iPhone and iPad are very unforgiving.  They seem to require everything to be just a certain way for things to work.

After a little digging, I found blog posts that mentioned that I needed to enable Blob Cache for SharePoint.  I found this to be the case, but wanted to write this post to clarify just a little.  You see, I did enable Blob Cache for the single SharePoint web front end that my client browsers were using (we didn’t have load balancing turned on for this environment yet), but the video still failed to show on the iPhone and iOS.  On the video playback page, I would get the Silverlight download logo and link instead (not what I wanted). The short answer is that you have to enable Blob Cache on all web front ends.  Note that it is not necessary to enable it on SharePoint application servers- just WFEs.  Since our environment wasn’t live yet, we didn’t need all WFEs to be configured (or so I thought).

That’s pretty much the message I wanted to tell because I didn’t see anyone else mentioning it.  Along the way, I learned a little more that I thought I would share (for you TL;DR folks, stop here)…

Blob Cache

You turn on Blob Cache by updating the web.config files for your web application(s).  By default the Blob Cache XML in the web.config looks like:

<BlobCache location="C:\BlobCache\14" path="\.(gif|jpg|jpeg|jpe|jfif|bmp|dib|tif|tiff|themedbmp|themedcss|themedgif|themedjpg|themedpng|ico|png|wdp|hdp|css|js|asf|avi|flv|m4v|mov|mp3|mp4|mpeg|mpg|rm|rmvb|wma|wmv|ogg|ogv|oga|webm|xap)$" maxSize="10" enabled="false" />

For our purposes, we only cared about mp4 video files, so to reduce the impact of our change, the web.config changes look like:

<BlobCache location="D:\BlobCache" path="\.(mp4)$" maxSize="10" max-age="3600" enabled="true" />

The primary notes here are that the location should be on a drive that is different than where the SharePoint ULS logs go to reduce contention.  The maxSize is in GB and that is for the entire cache on for this web application on this WFE.  The max-age is not mentioned in the default entry in the web.config.  The value you put here is in seconds (so 3600 = 1 hour) and will show up in a “Cache-Control” header in the response along with the video content (I show this in the response header further below).  It instructs the browser how long to cache the content before requesting an update.  I believe this could be as low as 0 and still enable iOS Safari video playback.

Request and Response Headers

The reason that Blob Cache is needed for iOS Safari, I believe, is not because Blob Cache keeps a cache, per se, but more because Blob Cache persists the video to a file so that the request always gets it from the file instead of directly from the database.  I believe this is what allows IIS to break up the file into chunks if the request asks for only particular parts of the file.  This is exactly what iOS Safari does.  In my observations using Fiddler, when given a <video> HTML5 element, iOS Safari will always make the first request for the first two bytes using the Range header in the request:

Range: bytes=0-1

The response header should indicate that there are only 2 bytes in the body, and specify the overall length of the video:

Cache-Control: public, no-cache="Set-Cookie", max-age=3600
Content-Length: 2
Content-Type: video/mp4
Content-Range: bytes 0-1/19418258

In this case, the video is about 19M, but we only return 2 bytes (byte 0 through byte 1).  Immediately after this response, iOS Safari will request the entire video (or it does for my 19M video and smaller videos), but that takes too long to return, so before it finishes it makes a bunch of other smaller requests.  For my 19M video, the other requests are mostly 64K in size, but oddly enough they aren’t in chronological order (seems random, but I guess there is some method to the madness).

Why do I mention all of this?  Well, if you don’t use Blob Cache, it will return the entire file even if the client asks for the first two bytes.  In that case iOS Safari assumes the video isn’t valid whereas other browsers are more forgiving.  In addition, if you don’t turn on Blob Cache on all WFEs, the responses seem inconsistent-sometimes returning what is expected and sometimes returning more bytes and/or a max-age value than what was set.

If you want to use Fiddler to watch traffic from your iOS device, check out Using Fiddler with an iPhone/iPad.

What about Smooth Streaming and Azure Media Services?

SharePoint Online uses Azure Media Services for the Video Portal site, but not other sites.  In my case, we were not using SharePoint Online, but I did test against an Asset Library (not the Video Portal site) in SharePoint Online because iOS Safari was working in that environment and I wanted to compare the requests and responses in a working environment with my environment which was not working at the time.  SharePoint Online apparently has Blob Cache configured (with a max-age of 86400 seconds which is 1 day).

Azure Media Services add a lot more value if you can use it.  It has “adaptive smooth streaming” that can change the quality/kbps every two seconds as needed.  See Azure Media Services Powers Office 365 Video for more details on what is provided with SharePoint Online OOTB.  If you want to use it with your own sites and not just the Video portal site in SharePoint Online, there is a free 3rd party app – Introducing Media Center App for SharePoint 2013 (disclaimer: I have not tried this).

Other References

Along this journey here are some other links I found useful:

read more
Kirk LiemohnSharePoint Videos in iOS – the iPhone and iPad Are So Unforgiving

Mobile SharePoint Solutions Webinar

John Underwood is a Technical Evangelist at ThreeWill. He has nearly thirty years of software development experience. He is an experienced technical instructor with superior presentation skills and is proficient in delivering standard curriculum as well as developing and delivering custom curriculum.

Good afternoon folks, John Underwood here, coming to you on a sunny, beautiful day from just North of Atlanta in Alpharetta, Georgia. Hope you’re having a good day wherever you happen to be. I want to thank you for carving out some time to talk a little bit about mobile solutions for SharePoint. Looking through the attendee list, some of you have been to my webinars or classes before, and for those of you, I say thanks for coming back. For those of you that are new, just a little bit about me. My title is Technical Evangelist, I work for ThreeWill, my job really involves a lot of things from engineering chores, to webinars, to video production, I also teach classes, that’s something I really like doing and feel a lot of passion about.

If you’d like to be able to contact me, either during the webinar or afterwards, you can see that I’ve put my email address up there. I encourage you to record that and make a note of it. Also, if you’re somebody that likes to use Twitter, please follow me on Twitter. I put out a lot of things related to SharePoint. I’m actually in the midst of doing a how to, quick start video series right now, so if you’re looking for some good techniques that you can apply to SharePoint 2013, again, I encourage you to follow me on Twitter and you’ll see some more information about that.

Just a couple of quick housekeeping matters here. I’m planning to keep our time, today, for about 45 minutes to an hour, just so you can plan your afternoon. Also, if we do have any outages during the event, if you want to scribble down my email you can send me an email directly and it will show up in my inbox on my phone here, and I’ll be able to know something is wrong. If we do have an outage, however rare that might be, we’ll do our best to get reconnected and continue with the event, so don’t give up on me if we have a short outage. Also, if you’re not familiar with Go To Webinar, it has a facility for asking questions, so you can use that to post questions any time during the webinar. I probably won’t address those until the very end, but do make a note of that and then we’ll have a little Q and A time at the end where I’ll try to address those. I also welcome your questions after the event, feel free to use my email address for that purpose, if you so choose.

With the housekeeping matters out of the way, let’s talk about what we’re going to talk about today. The first thing I’m going to do is talk a little bit about mobile device proliferation. What is happening in the world of mobile devices? Then, from there, we’ll talk a little bit about BYOD. For some of you, this is an important thing that you’re already dealing with. For others of you, it’s an acronym that you don’t know yet, but you’re going to know it, you’re going to know it pretty soon, so you want to be ready for what it’s going to mean to you.

Then, from there, we’re going to try and bring the conversation around to SharePoint event. The idea here, is that if we’re going to have to deal with mobile, and if we’re in an enterprise that’s using SharePoint, we’re going to have to figure out how those two fit together. We’ll talk about the two major usage patterns that you’re going to encounter when it comes to SharePoint. Then, from there, we’re going to focus in specifically on SharePoint 2010. A lot of you are still on 2010 and probably will be for some time to come, so we want to look at the unique challenges and opportunities we have when it comes to mobile enabling your applications for SharePoint 2010.

As you’ll see, this is something that’s become a bit of a specialty for us here at ThreeWill. I really want to try and show you how we can help you in that area. Then, from there, we’re going to talk about mobile support in SharePoint 2013. As you will see, the good news there is that Microsoft has really stepped up their game in terms of proving a lot of out of box support. Not only that, as developers and integrators, we’re going to see that there are some huge opportunities there as well. Really a very positive story going forward.

Now, I know there are plenty of jokes out there about statistics and their reliability, but in this example, I’m using a few statistics just to make a point. According to Pew Internet, 56% of Americans now own a smart phone, or American adults. It’s funny, I can remember when smart phones first came out and I remember thinking, “Why do you need a camera? Why do you need all this stuff.” Obviously, my perspective was wrong because I have one now, I have an iPhone and I love. I don’t know how I would get along without it. I think the important part of that is that, as more and more adults that are either in our employee base or our customer base, acquire these devices, they get used to how that works and they want to begin to apply that to their life as an employee, or to their life as the customer of a company.

Another thing that kind of drives this forward, not just phones, but mobile devices in general. Statistics show, based on Cisco, that we’re going to have more mobile devices than people on the earth, by the end of this year. Obviously, that means we’ve got a lot of people with multiple devices. Again, count me in that. When I think about that, what I really think is, I want to be able to use my devices when I interact with companies or when I interact with my employer. If I’m sitting at Starbucks and I’m on my tablet and I’m reading an article and something urgent comes up that I have to respond to, I don’t want to put my tablet away and drag out my laptop, and open it and connect. I just want to be able to deal with it right there.

Another things that’s kind of driving us forward in the mobile world is the relationship between the PC and the mobile device. As a developer, I’ve been writing PC or Windows apps, and then along with that, web apps, for a really, really long time. For that period, whenever I would engage a customer, or do something internally in my company, the perspective was always, “Okay, what are we going to do around the PCs?” What we see now is we’ve actually passed a point where mobile devices and their sales numbers are starting to surpass PC sales. If they’re accounting for half or more than half of the sales, then the frequency with which we’re going to have to deal with that as developers, is only going to get higher.

Now, as interesting as these stats are and how they point the way to the future, I think if we take a minute and look at BYOD, this is going to bring it even closer to home. For a lot of us that are in a corporate setting, we’ve encountered this already or we’re soon going to encounter it, bring your own device or BYOD. Again, the idea here is that it’s coming and you can’t really stop it. Your employees are used to doing things a certain way when they’re on their own and when they come to work, they don’t want to put away the convenience of their tablet or their phone and have to go back to always using a PC. As developers, this is a really important thing to us, as strategic business people, this is a really important thing to us.

All of us that have a role in this IT universe, have got to begin to prepare for this onslaught of devices. Again, not only the notion that our employees want to bring in their own stuff, but taking it a step further, there are some business problems that we encounter, either internally or externally with our customers, that would be better served with some kind of mobile solution. Think about being in a retail setting. Are you better off having to go over to the cash register and log in to a PC in order to meet a customer’s needs? Or, are you better of having a tablet on your arm and being able to pull up their information right there?

It isn’t just, “Hey, this cool new device.” It’s integrating it into the way that we do business. Then, for those of you on the call that are developers or people that manage or lead developers, I think this is a really interesting stat, projecting that by 2015 the mobile app development projects are going to outnumber native PC projects by a pretty big ratio. Now, let’s say this number’s exaggerated and that it’s only 2 to 1, maybe even 1 to 1, even at that number, that means, potentially, 50% or more of what we’re doing as developers or IT people is going to slanted toward mobile.

I can think back to when I was a Windows developer and really loved doing that, and we kind of had the advent of the web. At the time, I remember thinking, “I don’t know if I really want to do this. Is this something I’m interested in?” Eventually I figured out that was the future and I’ve got to embrace it, fully. I think we’re at that place, again, as IT people, developers, strategic decision makers. Mobile is upon us and we’ve got to be ready to deliver that on behalf of our employees or our customers.

Given those kinds of forces, then, let’s see if we can turn this around and think about what it means in the SharePoint universe. A lot of companies have rightfully settled on SharePoint as the place where they build their business apps. There are a lot of compelling reasons to do that, I’ve even done some webinars that talk about the benefits of having this environment where it’s very easy and very quick to build your company apps, it’s maintainable, it’s easy to back up and restore. Then, let’s see if we can blend those two together. As a modern developer, or as a strategic decision maker that has IT in your sphere of influence, you’re going to be doing some sort of mobile development for your enterprise, either facing internally or facing externally. Then, particularly on internal apps, we’ve already got SharePoint as a destination.

What we really don’t want to do, if we can avoid it, is have to build another silo of web application infrastructure and mobile application infrastructure, that’s parallel to, or competes with, SharePoint. Rather, what we’d like to do is make those two worlds fit together. As we go through the rest of this webinar, that’s really the overarching theme that I’m going to be addressing in my time with you. How do we take SharePoint and extend it out in to the mobile world? In some cases we’re going to do this because Microsoft just made some really good product choices. In other cases, we’re going to do it because we’re going to have to write some custom code ourselves in order to make that extension. That’s something that not only stats back up, but our own experience here at ThreeWill. More and more of our customers are coming to us, and not only are they saying, “We want you to build us a compelling app on top of SharePoint, but we want to make sure and extend it out to our mobile users as well.”

Then, given that we’ve got this intersection of SharePoint and the mobile universe, let’s talk a little bit about the way those 2 universes collide. There’s really 2 ways that one might think about SharePoint in the context of a mobile user. The first of those, I’ve entitled browsing SharePoint from a device. Here is really the use case, “Oh my gosh, I need that document right now.” I can think of a circumstance where this literally happened to me about 2 or 4 months ago. I was away from the office, I was doing some volunteer work for an organization here in Atlanta, I’m out in the middle of a parking lot, I’m sweating, I’m working, and all of a sudden I get this urgent call from a coworker that they needed some piece of data that I had access to, and it was on our SharePoint site.

At that moment, I had to take out whatever device I had in hand, and try to get to that site, and try to share that information for that user. When you think about this, this is really more of a general case, where someone is just trying to engage SharePoint directly. Now, how is it that they’re going to be able to do this? In SharePoint 2010, it ships with some basic, mobile capabilities, kind of very dumbed down, bland, generic HTML. While it’s not much to look at, it does at least function at some level, and it lets a person get in the front door, and perhaps locate the data that they’re looking for. I’m happy to say that that story is greatly improved in SharePoint 2013. The user experience is far more compelling when we have to do this kind of ad hoc browsing, where I just need to find something and I need to find it quickly from the device that I’m currently on.

For those of you that are still using SharePoint 2010, what are other options do you have for this general purpose solution? You probably don’t want to try to write something yourself. Trying to write a general purpose app that would let you browse and interact with all part of SharePoint is really quite a gargantuan job, but there are some third party apps out there that can help you with this. There are several to choose from. One in particular, a company that we’ve actually done some partnering with is Rover Apps.

There’s really 2 parts to their solution, there is a gateway that makes a commodity interface into SharePoint and provides the necessary security and authentication, and then, various mobile clients that are actually written to the native device. That’s a theme that I’m going to mention a lot as we go through our time together. There was a time in the past when your mobile users would have just been thankful if they had had access. Now we’ve gotten to the point where there’s this expectation that not only are they going to have access, but it’s going to have a rich look and feel, and whenever possible, a native look and feel to the device they’re working on. That’s one of the cool things that Rover Apps actually provides.

Moving forward, I will talk a little bit more about this general case and I’m going to do a demo for you, but as we dig deeper in to the webinar, we’ll be looking at the other use case that we have for mobile users. That will really be the focus of our conversation. With that, let me do a quick demonstration for you and just show you a bit about the mobile experience as it exists in 2010. Now, a couple of little disclaimers here as I begin to work through this, first of all, I’m running all of what you’re going to see today via a series of VM’s. I’m going to encourage you not to draw too many conclusions about the performance of these various applications. In the proper environment, they’ll all perform really, really well, it’s just that I’m doing it from a VM.

Also note that when it comes to demonstrating the mobile stuff, I’m using an emulator and an emulator is a nice starting point, but it’s never a substitute for a real device. In fact, I’ll take that a step further, when you start doing mobile development, it is absolutely a requirement that you have hardware for every single device that you’re going to certify and support. Running it through the emulator and saying, “Oh, well we’re good on that.” Is simply not going to be sufficient. That’s part of the cost that you’ve got to count when you go into this process.

I’m going to start by visiting a very simple team site, link thousands of team sites that you may have build before. You can see this one’s got some tasks associated with it, it’s got some documents, and Sure Point 2010 does a really good job of serving up this content. Notice that I can click on a particular document and it’ll open it in OWA. If you’re not familiar with that acronym, basically these are web applications for Microsoft Office, office web applications. You can see here, just using a browser, I can interact with the document, I can edit it, so give credit there for SharePoint 2010, that’s a pretty rich experience.

Now, let’s see if we can contrast this a little bit with what we would experience with the out of the box mobile capabilities that come with SharePoint 2010. What I’m going to do is toggle over to my emulator, and before I go very far on that let me go ahead and copy the password that I’m going to need here. For those of you that are security aware, yes, I know you might be able to see my passwords, so I promise I’ll change them after the event is over. What I’ll do now is, obviously I’m running an iOS emulator, I’ll go ahead and bring up my Safari browser, and then, I’ve set up a favorites shortcut to the very same site that I navigated to just a moment ago.  Then, in this case, it did happen to cache my credentials because I was visiting it earlier.

Now, the good news is that I can get to a fair amount of data here. The bad news is that this going to fall way below your user’s expectations when it comes to look and feel. This looks more like a website circa 1995, very, very plain. Also, notice that I have some pretty limited functionality. As an example, if I go to all site content and try to navigate to my tasks, I’m going to see my tasks and I’m going to be able to look at them, but I’m going to have a pretty limited experience in what I’m able to do.

Now, one other perspective on this, when we start talking about this mobile access that we have from devices, you’re going to see that on SharePoint 2010, it kind of takes a 1 size fits all approach. That’s something else, that as we work through this content, we’re going to have to address this notion that there is a different expectation as to what you would get on a phone versus what you’d get on a tablet. If you just create a mobile interface and you try to use it for both of those, 1 or both of those audiences is going to be a little bit disappointed that they didn’t get something closer to a native look and feel.

All right, that kind of lays the baseline for what we can expect in terms of mobile support for SharePoint 2010. What I’d like to do now is address the second way that your users would interact with SharePoint, and that’s really where we’ll get in to the meat of how you can extend mobile capabilities to your SharePoint 2010 users. We said the first use case was this idea that you’ve got a user, they’re in an emergency, and they just need to browse SharePoint and find something. You can see the capabilities there are functional but basic. Now, the second way that your users are going to want to interact with SharePoint is via the SharePoint applications that you, or someone else, may have authored.

Microsoft has done a really good job over the past few years of bringing the story to bear that we SharePoint to build our internal apps, whether it’s soliciting user input, whether it’s dealing with customer service issues. Any kind of app where we have to track, and store, and return data, SharePoint is just a natural fit for that. There’s a really good story there in terms of the apps being easy to build, easy to prototype, easy for IT to manage. That’s the reason that SharePoint has done as well as it has. However, when we go down the path of building those applications, what we see is that a lot of times, we don’t really have any thought upfront about providing a mobile user interface for those users.

Without the deliberate plan on our part, we’re going to find ourselves missing out on an opportunity. Really, the first part of this is, going forward, when you being to build SharePoint apps, either on your own or with some partner or organization, you need to be thinking and talking about mobile support from the start. Again, particularly if you’re dealing with users that are going to be in some other physical location, like a doctor’s office, or a retail store, anything where it might be to their advantage to have a tablet on their arm. Another thing you got to think about, sooner or later you may find yourself in a circumstance, organizationally or individually, where you have to retrofit this into an existing SharePoint application. In fact, that’s the very thing that I’m going to be demonstrating for you in just a few minutes.

You’ll see I’ve got a case study of one of our customers where they had an app finished and then decided that they needed to extend mobile support. You don’t have to be terribly experienced as a developer or an IT pro to know that the first option, where you deliberately plan for it, is a better option than a retrofit. Having said that, I think that the app that I’m going to show you does definitively prove that it can be done, and that at ThreeWill we’ve got the expertise and the experience to do that. Now, going forward, if you’ve got to extend mobile capabilities for SharePoint 2010, you’ve got a far more challenging job, and you’re going to see that in the demo that I show you. SharePoint 2013, not only has better out of the box capabilities, but a lot more options that are going to useful to developers. When we get to the third part of the webinar and I talk about 2013, I’ll dig in on that in just a little bit more detail.

All right, so given our 2 scenarios there, the random browsing of the site looking for data, or the deliberate extension of an app to mobile users, let’s focus now on what it would take to extend mobile applications to our SharePoint 2010 clients or users. Some of the challenges that we’re going to face, first of all is just history. Think about where we were when SharePoint 2010 was being developed in 2008 and 2009. We did begin to have some mobile device proliferation, but certainly, we were not nearly as far along as we are now. While we may look at Microsoft HTML offering for interfacing with SharePoint and say, “Wow, that’s really weak.” The truth is, what we had at the time, it wasn’t that bad and it was a viable alternative. It’s not really knocking SharePoint as much as it’s just saying the world has changed, your users have changed, and their expectations of the kind of experience they’re going to have from a mobile device has changed. That puts pressure on us to come up with a more compelling solution.

Another things that’s changed over time, HTML 5 and J-Query. These things either didn’t exist at all in the SharePoint 2010 world, or they were in their infancy. Whereas now, they’ve really become the cornerstones of mobile development. Even though there are people who write native mobile apps and there’s a compelling story for that, in a lot of cases, if we’re trying to stitch in an existing app and make it mobile enabled, this is our path of least resistance for doing that. On the one hand you have these very cool tools and the skill sets to go with them to it happen, on the other hand, as you see here, SharePoint 2010 doesn’t really, officially acknowledge these.

There’s going to be a certain amount of elegant duct tape that is required in order for you to use these modern tools against the SharePoint environment. In fact, when we get to the end of our webinar today, I’m going to refer you to some specific articles written by several people here at ThreeWill, that talk a little bit about these issues of how to take these leading edge tools and blend them in to SharePoint 2010. Again, when we get to 2013, no problem. There’s native support for all of these things. Until we get to that world, we’re going to have to figure out how to employ these new dynamic web technologies in our SharePoint development stack.

Another think that’s going to be a challenge for us, when we think about the way that SharePoint 2010 supports mobile clients, it tends to take a one size, or one page, fits all mentality. You’re either a mobile device or you’re not. If you’re detected as being a mobile device, then you get redirected to the mobile master page and that’s that. Think about the differences between a fairly modest smart phone and a really large tablet. Making those 2 use the same UI is really not fair to one or both of those parties, but given the infrastructure as it exists today, that’s kind of the way it works. What that’s going to mean to you as a developer is that you’re probably going to have to intervene in that process, you’re going to have to use some combination of master pages and page layouts and other things that include some logic that let you figure out what kind of device are we dealing with and then, what kind of UI can we provide to that device. In fact, we’re going to see an example of that in just a few moments.

Now, the case study at hand, I’ve hinted at this just a little bit, but let’s dig a little bit deeper. We’ve got a client that we wrote a custom SharePoint 2010 application for, it’s an app that allows users to give input about suggested improvements. Most companies have something like this where their employees can give suggestions and feedback in hopes of increasing profitability, reducing red tape, or things like that. Now, deep in to that process, the customer decided that they have a legitimate need to extend this to mobile clients, in some cases their users were actually people that were going to be in a retail setting and it was a bit laborious for them to constantly have to go over to their PC. It was much easier for them to be able to do this from a tablet, or from a phone.

The problem though, is that there just simply wasn’t the funding to blow it up and start over, we needed to be able to reuse as much of the existing application and its forms as possible. One of the big requirements that we had, and this directly addresses the problem I mentioned on the previous slide, we had to be able to detect the size of the client, and make some intelligent choices about how we present the data to the client. If it’s a mobile phone, we’re going to go with a very minimalistic view. If it’s a tablet, we’re going to go with something that’s either very close to, or identical, to what we would see on a PC. All right, with that set up, let me take a moment now and go in and show you this application, both from the perspective of a PC browser, and then from a perspective of a mobile client.

I’m going to switch back over to my environment here. Then, let me close out a couple of tabs here just so we can focus on what’s important. Let me refresh the page here, just to make sure that I haven’t timed out. What you see here is the top level of our site. Obviously, I’ve done some simplifications here so that it’s not company specific. The idea here is that a user could show up, they could make new submissions, they could check on the submissions that they’ve already made and see the status of those, and really it’s all about just managing information and networking around this idea of process improvement. You can also see that we have some search capabilities.

I have to do a quick aside here because I think this is really important. This is SharePoint, even though it doesn’t look anything like SharePoint. That’s something that we commonly do as a partner with companies, as well. I can’t tell you how many times we’ll begin an engagement where the first thing out of the customer’s mouth is, “We want to use SharePoint because it’s the corporate IT standard, but we don’t want to look like SharePoint.” That’s a theme that you’re going to see regardless of whether you’re dealing with PC clients or with mobile clients. In our case, we had already done the work to customize the work and feel for a PC, we just built upon that to customize the look and feel for a non-PC client.

Let me just take you through this real quickly. I’m going to go in and create a new submission. I have to provide a form number, so I’ll give my phone number there. Then, who I report to in the organization. This particular company also had different initiatives that we might do, for this one I’m just going to stick with not applicable. Then, we’ll talk a little bit about maybe what I want to suggest. I want to suggest some billing statement improvement. Notice another clever little thing that our engineers did here, as we type in the title, it’s actually using the SharePoint search API to look and see if there are any existing items that are similar, and if so, it will pop them up for us. In this case, we don’t have any so we’ll just go with what we’ve got here. Then, obviously, this is going to have something to do with our accounting department, in terms of how we bill our customers.

Now, I’m not going to get real caught up on the options down here. These are all just driven from various lists that we have in the SharePoint site. Obviously, this is related to billing and billing questions, so you get the idea here. Then, some kind of relative score on how important this thing is and then a description, “Having better, bigger fonts on our bills will help us out.” Then, the benefit here, obviously, we want to have happier customers. Again, don’t get too caught up on the demo nature of my input. The bigger picture here is just that we’ve provided our users with a pretty compelling application.

Now, if I want to save the draft, I can do so. That gives me time to review, talk to other people, have people collaborate on this. Then, at some point, I can submit it. Then it goes through a process using the publishing infrastructure and some workflows that allow us to actually promote these to the right people within the company. Then, you can see, if I look at my submissions, I can see that there are several in here that I have submitted over time. Now, let’s talk a little bit, and demonstrate, how this would be for our mobile users.

Think about different scenarios. We want to support multiple devices, we also have to be cognizant of the fact that those devices have different capabilities, and we also want to be cognizant of the fact that some devices are more prone to data input, whereas other devices are more prone to just be used for review purposes. What I’m going to do now is go over to my emulator once again, and I have a shortcut set up that will take me in to this very same application. I’m going to click on the link for that and then it may or may not prompt me for credentials, in this case it did not.

Now, you can see that we have some of the same kinds of headings that we had available to us inside of our actual web page. In fact, you can see the main web page in the background. Obviously, the form factor is quite different. Then, I have similar options here. If I want to go in an look at one of my submissions, I can see my list of submissions there. Notice that if I click on one of those, it actually brings it up in an editable view. Now, if we were going to blow this thing up and write it from scratch, we would’ve gone for the most native look and feel possible, but in this case, because we were having to reuse as much as we possibly could, we tried to strike a good balance between making it work and not having to reinvent every wheel.

You can see the approach we chose here, is that we actually made it so that different sections of the form could be expanded and collapsed. Then, we just used the concept of a next and a previous metaphor to be able to move through those various sections. Then, obviously, this is an iPhone emulator, on a real device we could click on the screen and drag up and down and do the various things that we needed to do. All in all, not a bad approach for being able to give our users a legitimate way to use this thing in an environment that otherwise, might not have been all that friendly. Now, the other thing we want to see in this app is, not only do we have a rich experience here in terms of using it from a phone, but then what happens when we begin to use it from a tablet.

What I’m going to do here is, switch my emulator so that it’s now emulating an iPad. Then, I’ll just go ahead and rotate it to the left so that we have a little better view of the world. Then, I’ll go back in to Safari and then, I’ll go back to that very same site. This time it’s going to make me log in, so that’s fine, I have that information available here. Then, let me see if I can paste in my credentials, I’m pretty sure I still have those on the clipboard. Then, notice what you get here. We’ve been able to detect that we’re now coming in on a device that has a much bigger screen with a better resolution, so what you see here is something that’s virtually identical to what you would have experienced on a PC. From there, we’ve got the same kind of options, we can create a new submission, we can browse our existing submissions, and so on.

Let’s talk a little bit, now, about what it was that we had to do in order to get to this point and to be able to provide these different capabilities. The first thing that you’re going to have to do when you’re trying to extend mobile capabilities to your existing SharePoint 2010 applications, is that you’re going to have to take control of the redirection process. As I mentioned earlier, we have the concept of mobile master pages inside of SharePoint 2010, but they tend to be an all or nothing thing, where if you come in with a device that’s not recognized as a PC, it’s just going to send you to the mobile page and that’s that. There were a couple of things that we had to do in order to take control of that process.

First of all, for those of you that are on the call that are experienced ASP.net developers, you’re familiar with the concept of browser caps in your web.config file. For those of you who aren’t, really what that is about is allowing you to control how the environment is going to behave in the face of certain kinds of browsers or devices. For this example, what we did is take out the logic that ASP.net would automatically have to redirect you based on the kind of device that you are, and instead, replaced it with a home page that had our own redirection logic. Essentially, what we’re doing is sniffing out the kind of browser and the device that it’s running on based on the request that was made, and then redirecting that particular client to the correct place in order for them to get the best possible experience.

Now, how do you deal with devices, and more particularly, how do you deal with peculiarity of those devices? Well, several things that have come in to play here that you’ll want to use. First of all, if you’re not familiar with this meta-tag named view port, you need to read up on that one, it’s going to be very, very important. This is the infrastructure we use to deal with the fact that different devices have different sizes. In fact, it is the combination of Java script and this meta-tag that lets us deal with certain pixel height, certain pixel width, and make sure that whatever output we’re producing is going to be appropriate for a particular kind of device.

Another thing in dealing with devices, even if you don’t go through the process of doing a lot of different master pages, at some point you are going to have to have page layouts, particular pages, and style sheets that target certain sized applications. That’s a big part of what we did on this application. We were actually able to go in and categorize things in such a way that phones get a certain set of capabilities from their style sheets and pages, and tablets get another set of capabilities. The third part of that is something that I kind of hinted at earlier. When a mobile browser or, for that matter, when any browser makes a request of a web application, it always passes in something called the user agent string. We can use this in combination with browser caps to make some determination about the capabilities of a particular device.

As an example, if we can detect that it’s Safari and it’s coming from an iPhone, we know certain things then. If we can detect that it’s Chrome and it’s coming from an android phone, or Internet Explorer coming from a Windows phone, any one of those things will let us make some intelligent guesses about what we need to do. Now, I have to emphasize my use of the phrase intelligent guesses. Anybody that’s ever done web programming knows that there’s always some wrinkles here. That’s why I will repeat what I said earlier, it’s super important for you to make sure that you’re ultimately testing this on real hardware so that you know the exact behaviors that you’re going to get.

Some other lessons that we learned, we always want to be cognizant of performance when we’re writing web apps, but when we talk about mobile apps, that is particularly true. In some cases, we may have a person on a phone that needs a critical piece of data and they’ve only got a couple of bars of coverage. Not only that, there’s this notion that they’re probably on a data plan where they have some kind of cap. One of the biggest ways that we can address those issues, is to make sure that we’re minifying all of the CSS and all of the Java script that we’re sending down to the client. Not only minifying those, but whenever possible, even combining them in to a single file. If you know how a browser works, you know that for every separate thing it has to download, in effect it has to spawn another thread and open another connection. Keeping all of that to a minimum is not only going to please your users because they’re going to have a fast experience, it’s also going to please them because you’re not going to kill them on their data plan.

Some other things, whether you are a lover or a hater of Apple products, you just need to be prepared for the fact that A, you’re probably going to have to support Apple because they have a lot of devices out there, and B, they’re going to be using the Safari browser and it has its quirks. I will say that, even though I like Apple products, I almost exclusively use other browsers just because of that. But, if you truly have to support that, these are solvable problems, you just have to roll up your sleeves and dive in to them. Among the things you’ll want to watch out for, when you’re doing execute query async, which is a cornerstone to doing Ajax calls, Safari just seems to fail sometimes. Really the best way to address that is just to put yourself on a loop where you retry for a fixed number of times, more often than not, on one of your retries the call will go through and you’ll be able to complete the task.

Another Safari issue that is, in fact, a known defect that Apple has acknowledged is the fact that Safari will incorrectly cache the data that’s in an HTTP post. For those of you that know about the difference between post and get, the whole idea on post was to defend against repudiation, or a replay attack. Well, unfortunately, Safari will cache that post, send it with a new time stamp, and to the server it looks like a new payload of data when in fact it an existing one. There are various band aids that we can put on that solution. Mainly we just need to be aware that it exists and make sure that our application has a defense mechanism where we look for that duplicate data and we don’t wind up adding it twice.

You can see a lot of the compromises that we had to make on this app had to do with the fact that we were shoehorning it into an existing app. If you’re pursuing a separate solution, what you want to have are dedicated pages that just have the bare minimum SharePoint on them. Then, instead, you’re using the best of breed tools for browser programming, J-Query and KnockOut, and all the other things that will let you bring a really rich user interface and also let you intelligently adapt to the different devices that you may encounter. Hopefully your carry from that is just, A, if you need some help doing it, ThreeWill has the expertise to get you there, and then, B, if you decide to go it on your own, there’s some resources and some ideas that you’ll want to look at and just be aware of as you move forward.

All right, now we’re going to go to the third and final part of our webinar. That is just talking a little bit about the capabilities of SharePoint 2013. One of the first things that you’ll see right out of the gate, is that Microsoft has done a sensational job of making SharePoint 2013 a more compelling option for mobile devices. The first of those is just being able to browse. Remember we talked about our 2 usage scenarios where you’ve got a user that’s desperate to find a piece of information that’s already on a SharePoint site. Well, you’ll see in the demonstration that I’m about to do that SharePoint 2013 has a really, really compelling solution now for those kinds of devices.

Another thing that we’re going to see here, is I mentioned Office web applications earlier and the fact that I could use that from a PC based browser. SharePoint 2013 brings us a higher level support of those within various devices. Even in some cases, being able to modify content from a handheld device. That’s a pretty big step forward. Now, instead of seeing some kind of questionable text rendering of the document, you’re actually going to see that document in it’s full fidelity.

Beyond that, from a more technical point of view, probably the biggest new capability in the SharePoint universe is this thing called a device channel. You’ll remember the challenge we faced in 2010 where it shows the one size fits all approach with the mobile master. Now, what we can do is actually declare and implement our own device channels, where we set up different master pages, layouts, and style sheets, either for a particular device or groups or categories of devices. If we specifically needed to target an android tablet, an android phone, an iPhone, a Windows phone, all of those different kinds of things, we can set up exactly what we need in order to target those and give the richest experience possible. Give Microsoft a round of applause there, that is a really big step forward that will allow us, as either SharePoint configuration people or outright developers, to give our users what it is that they really, really want.

Some other things to be aware of, we now have push notification capabilities. If you’re familiar with the concept in SharePoint of doing alerts on a list, where you get an email that notifies when you something changes on a list, you can just think about this as being mobile enable alerts, much like your cell phone knows how to receive an alert when you’ve received a new email on a server. It just gives us an even more interactive way where we can proactively notify people and let them know about what’s happening on our SharePoint server. Another new capability that we have is geo-location, or location aware. Imagine you’re writing a mobile app on SharePoint 2013 and you have employees that are going to go out to job sites and as a part of their job there, they have to inspect some things and make a record of it. It would be really nice and really convenient for us to be able to record the longitude and latitude of where that job site is so that we could automatically record that.

All right, so let me give you a quick look now at what the world is going to look like in the SharePoint 2013 world from a mobile device. I’ve got another environment here up and running. You can see, I have a SharePoint site here that I’ve built in SharePoint 2013. Again, very typical site in that we’ve got some documents and we’ve got other things. Notice that on the side I’ve got a document here and if I navigate and have a look at that site, it will actually open it inside of Word automatically and let me interact with it. If I come in from an environment where I have another browser, it’ll even let me render that document inside the browser. A pretty compelling way to be able to interact with things there.

Now, having shown that, let’s see what that same kind of site would look like from the mobile world. I’m going to switch back to my emulator once again, and I’m going to put it back in iPhone mode. Then, once it comes up, I’ll bring up Safari. Then, I’ll go ahead and navigate to this SharePoint 2013 site. It’s going to ask me for my credentials here, so I’ll go ahead and enter those. I know that as I type that in, you may be able to read that password, but again, this is a closed environment so I’m not going to worry too much about that.

Now, right off the bat, wow, what a difference. Much more interesting looking, much more compelling. Not only that, a much greater level of functionality. Notice that I’m confronted with the same document, if I click on it it’s actually going to render it with full fidelity right there in the browser and let me look at all of the details of that. That is pretty cool. Not only that, when we begin to look at other things, such as interacting with tasks, I can click on the my tasks link and actually add a task here, and that is a viable thing to do. Again, doing this in the old environment just really wasn’t a practical thing. Let’s give the task a name here, showing the webinar right now and then, once I’m done with it, I can actually scroll down to the bottom here and save my work.

Now, granted, you don’t want to be in a mode where you’re doing a ton of data entry things from a handheld device. But, just the fact that you have this level of functionality from your phone, lets you jot a quick and dirty in to your tasks list and then give you the opportunity to deal with it when you get back to the office and connected. Another thing I want to point out to you here, if we navigate back a little bit, notice that we also have the ability to access all of the content on this site. For those of you that are familiar with apps and how they work, we can actually interact with those apps from this location, run them, do whatever we want to do with them. On its own, that is a pretty compelling vision of what’s possible.

Now, let’s take it one step further. I’m going to close that browser window and once again I’m going to switch myself to an iPad, and then rotate it so we have a nice, landscape view. Then, go back and visit that exact same site. You can see here, it’s prompting me for credentials again. Then, I’ll put in my password and log in. You can see the effect that the device channels actually have here. Where, because we’re on a tablet and because we have a much larger view of the world, it’s actually going to give us a page that’s much closer to what we would experience in a PC browser. Then, obviously, these are out of the box device channels, whether you’re writing an app or just trying to configure a site to give the best look possible for your users, it’s your opportunity to go in and actually create those device channels and configure them the way that you would like.

All right, so we’re in the home stretch here. We’re getting near the top of the hour. I’ve got just a few more points to hit with you and then we’ll try to do a little bit of Q and A time at the end. Then, those of you that have been to some of my previous webinars, you may know a lot about the new SharePoint 2013 app architecture. For those of you that do not, let me spend just a few seconds talking about that. The way that we write applications, and the way that they deploy, and the way that they run, is radically different in SharePoint 2013 when compared with its predecessors.

Now, that’s important for a couple of reasons. If you’re a SharePoint developer, number 1, you’re going to have to learn how to do that. For our conversation here, the second and perhaps most important part of this, is that these new applications are built upon the very same technologies that you might use in the mobile world. In particular, heavy use of Java Script and J-Query and HTML 5. If you’re truly trying to build a SharePoint based app, where it will look good in a browser on a PC, or a browser on a phone, or a browser on a tablet, you have the tools at your disposal to do that right now. Really, the only challenge for you as a developer, or for an IT administrator, is just, you people have got to get up to speed on your J-Query and HTML 5. Once you’ve got those under control, then you’ve got a pretty compelling story on how you can build these apps.

Another thing that’s an innovation here, that I think opens up even more possibility for mobile clients, and that is the commitment that Microsoft has been made to exposing all of their SharePoint functionality via REST in-points. If you’re a developer and you’re familiar with REST, what you know from this is that REST just gives you a simple way to make API calls from virtually any platform. If you are truly in a scenario where you absolutely have to have native look and feel and functionality, you can write natively to android or iOS, or Windows phone 7, and then be able to make calls, in the background, where you retrieve data from SharePoint, or push data in to SharePoint.

Again, I have a lot of experience over the years of working on apps where we try to do portability versus targeting a particular environment. I think it just depends on your user constituency as to whether you would build an HTML 5 based app that would look good on all browsers, or whether you would try to target native applications for certain mobile OS’s. The good news for you, as a consumer of these services from Microsoft, is that you have an open opportunity to do either or both. It really is just a very, very exciting opportunity, going forward, in building these kinds of applications.

As we get ready to wrap up here, what are our takeaways from what we’ve covered today? We probably knew this going in, but it’s certainly true here, that it’s always easier to engineer a particular solution from the start, as opposed to trying to bolt it on or retrofit it. Having said that, I hope you’ve also learned today that it is possible to take an existing SharePoint app and make the necessary tweaks and changes to it, so that it can be extended to a mobile platform. Another takeaway going forward, obviously, if you’re still on SharePoint 2010 and you’re going to be there for some period of time, it’s just going to be harder to extend those applications to your mobile users, but it certainly is possible. It’s going to be important for you to employ your Java Script and J-Query and HTML skills, and not only that, but to be able to intelligently integrate these technologies with a SharePoint 2010 environment that doesn’t necessarily acknowledge or understand those.

Then, at whatever point you’re fortunate enough to move up to SharePoint 2013, the out of box experience is head and shoulders above what we had before. In fact, in some cases, may be all you need in order to meet the needs of your users or customers. Then, as we begin building SharePoint 2013 apps, really the sky’s the limit between the fact that we have great support for J-Query and HTML 5, and the fact that we have a full fledged API that can be called from any platform that supports REST, which is virtually all of them, you just got a really compelling story there on being able to extend these apps to your various constituencies.

Now, as you think about going forward with mobile in your enterprise, just a couple of things to think about from the perspective of ThreeWill. I mentioned earlier, and I’ll bring it up here again, that the showcase app, or the case study that I showed you today, a lot of that was inspired by and based upon something that we did for an actual customer. One of engineers, Guy Lee, actually wrote up a very nice blog post on this talking about what we did and summarizing some lessons learned. You can go to the ThreeWill.com site and navigate to this easily enough, it’s just lesson learned about bringing a SharePoint app to mobile. A very good read and I encourage you, he’s able to get in to a little greater detail there from a technical perspective than we could do in a webinar. It’s a really compelling read.

Another thing you might want to check out, this is a blog post that I actually wrote early last year, just talking about how to add J-Query to SharePoint. Again, there’s no one proper way to do that. There’s just lots of recipes. This particular articles looks at 3 of those recipes and talks about the relative merits of each. If you are going to try to take a 2010 SharePoint app and extend it to the mobile world, you’re almost certainly going to have to employ J-Query to do that. This might help you get on your way.

Then, even though it is somewhat unrelated to SharePoint, it is important to mention that ThreeWill has actually created a new product called Popcorn, that is heavily invested in the mobile world. Really why that’s important is that we’re able to take the lessons that we learn there, and the expertise that we develop there, and bring that to our SharePoint mobile offerings as well. If you haven’t looked at Popcorn, I encourage you to take a look at it, it may be an application that would help you in your daily work, and it certainly will help you see some of the kinds of things that ThreeWill is able to do when it comes to this mobile universe.

read more
John UnderwoodMobile SharePoint Solutions Webinar

Big Bet #3 – Mobile SharePoint Applications

Tommy serves as the President at ThreeWill. In this role, he works with his leadership team to hire the best people, find the right business opportunities, and ensure that ThreeWill delivers for our clients on projects.

Mobile SharePoint Applications

Out of the five ThreeWill Big Bets for 2014, mobile-enabling SharePoint is the most exciting bet for me personally.  We are seeing the shift to mobile applications with our customers.  Mobile-enabling SharePoint is moving from being a concept to a required capability for reaching end users of our SharePoint solutions.

I can also see increased use of mobile applications to get my everyday work done.   Lately, I find myself using my mobile phone for 25% of my computing time for work.  In the next 3-5 years, I would not be surprised that I am on a mobile device(s) more than I am on a laptop.

Why ThreeWill is Bullish with Mobile on SharePoint

We are seeing a growing trend to integrate mobile experiences into enterprise software.  One of our largest enterprise customers has gone as far as setting a goal for mobile access to every internal and external application.  If that is not a wake up call to mobile, I don’t know what is!  In general, almost all of our other customers have a mobile requirement for at least one of their SharePoint applications.

Another promising sign is the ecosystem of commercial applications for mobile business solutions.  If you take a peek at The Rise Of Mobile Enterprise And The Myths Of BYOD – Forbes, note that between May and December of 2013 the landscape of mobile business applications went from 90 to 150.

The Tipping Point

The tipping point for smart phones being a viable mobile computing platform for enterprise solutions came to me at a personal level from an observation of my parents.  When my mom and dad went to their first iPhone this past year it was a significant milestone.  In my mind, I thought “if they are on board, then we are definitely in the late majority or laggardphase of the adoption cycle for smart phones”.  With a such powerful computing device, ever improving bandwidth and the maturing of platforms and marketplaces, mobile applications are becoming mainstream.  The big question is how far are enterprises behind the consumer market for making mobile devices just another endpoint for accessing an application.

Technology Challenges

When it comes to building mobile applications, there are many considerations to take into account (and I will not try to cover them all here).  The classic questions is, “What will be the technology platform used to build the mobile application?”.

Do you:

  1. Build a mobile app with the language and tools that is native to the platform (aka “native app”)
  2. Use a platform that allows you to develop once and compile down to native code for each mobile operating system or
  3. Go with an responsive design in HTML 5?

These decisions have tradeoffs just like most technology decisions.  For the most part, the key tradeoff is the management of code and knowledge of platforms vs. user experience. From my experience, I have found that native apps tend to provide a better user experience. Further, business users often like access to their applications even when they don’t have connectivity – which makes native apps a better choice today. However, developing and maintaining native apps across multiple platforms is challenging and costly. I am hopeful that with the evolution of HTML5 and compilers like Xamarin and PhoneGap, we will see more of the technology gap filled and developers will be able to achieve a great user experience while writing a single application that works across mobile platforms.

More to Come on Mobile Blog Topics

More on technology challenges and capabilities to come on our blog for mobile solutions on SharePoint 2010 and 2013.  I expect that you will see things like creating a Dropbox or OneDrive (aka SkyDrive) like experience for files that are located on your on-premises SharePoint servers.  Maybe we can share how we see new SharePoint 2013 features like Location and Device Channels used for mobile solutions.  Let us know what interests you so we can be sure to cover that on future blogs.

Organizational Challenges

Adding mobile applications to the permutation of the tests that need to be run for your applications is not a trivial decision to make.  This additional testing variable is akin to moving from supporting one browser and then expanding to other browser clients (like Chrome and Safari) or supporting Windows and then expanding to another OS (like Mac).  I would even say that adding mobile support to your application is much more difficult than say adding support for another browser.  With mobile you really need to build the application for mobile and not just make an existing screen function on a mobile device.

Designing your applications to work on a mobile device needs to be done in a purposeful way.  Most mobile applications are comprised of the 1-5 key flows that need access by the mobile professional.  With these 1-5 key flows, the design effort is around the mobile footprint and intuitive mobile UI interactions.  The key elements of a mobile application is ease of use and simplicity.  Mobile applications are generally used in short bursts of seconds to a few minutes to get a task done on-the-go.

Mobile in the Enterprises will also have to contend with managing the security around the devices.  With BYOD (bring your own device), the security of your enterprise data becomes a challenge.  You have to determine what is enough security and balance that with the ease of accessing corporate data and using your devices that are provided by the company and/or BYOD.  Security is quite a deep topic that could take its own post.  Probably the biggest organizational challenge for mobile applications on SharePoint will be security.  We are facing those challenges with our customers and find it is unique for each customer.  It takes time and buy in, so you need to have patience to arrive at the solution.

What is Your View of SharePoint Mobile?

Do you see your business mobile-enabling SharePoint?  What keeps you from mobile-enabling your business processes in SharePoint for the end users that are on-the-go?  We would love to hear your opinion on this.

read more
Tommy RyanBig Bet #3 – Mobile SharePoint Applications

What are your SharePoint big bets for 2014? Here are ours…

Tommy serves as the President at ThreeWill. In this role, he works with his leadership team to hire the best people, find the right business opportunities, and ensure that ThreeWill delivers for our clients on projects.

ThreeWill has bet on SharePoint for several years.  We continue to “ante-up” on that bet as we go into 2014.  This is a critical year for enterprises to make the right decisions as it comes to embracing Cloud, Social and Mobile solutions with SharePoint. The Top 5 areas of focus for 2014 at ThreeWill are:

  1. SharePoint 2013 Migrations and Hybrid Environments – How can we help our clients move off of older versions of SharePoint to reap the benefits of the investments that Microsoft has put into SharePoint?  How can we provide clear guidance on beginning to move to the cloud?
  2. SharePoint 2013 Apps – How can we help our clients build collaborative line of business apps on the latest SharePoint release?
  3. Mobile SharePoint Applications – How can we bring SharePoint to the mobile workforce?
  4. Enterprise Social with SharePoint – How can we drive more adoption of SharePoint with the recent advancements in social?
  5. Solution Sustainment – How can we make sure that our clients have a partner that will be around for years to come to make improvements and ad-hoc support for their SharePoint investments?

Each week I will put out another blog that shares our thoughts on why we see these areas of focus as critical for the upcoming year.  A key role that we play for our clients is to make sure they are getting the most leverage out of their investment in SharePoint.  With Microsoft’s move to the cloud and end user’s demand for mobile and social in the way they get work done, we see an incredible opportunity to help our clients. Let us know if you are focusing in on some of the same areas next year.  Cast your vote and see results from others…

I love to hear other perspectives on the ideas we present on our blog.  We welcome everyone into this conversation to affirm or challenge our ideas.  We look to innovate in the area of helping teams “Work Together Better” and that comes from putting your views out there and letting them be challenged and affirmed.  I look forward to the comments. Lastly, if you haven’t heard yet…we are bringing the Fab 40 to SharePoint 2013.  Let us know which templates are your favorite and sign up to be notified when they are released.

read more
Tommy RyanWhat are your SharePoint big bets for 2014? Here are ours…

New Webinar – Mobile Solutions for the Enterprise

John Underwood is a Technical Evangelist at ThreeWill. He has nearly thirty years of software development experience. He is an experienced technical instructor with superior presentation skills and is proficient in delivering standard curriculum as well as developing and delivering custom curriculum.


Trying to support BYOD? Does your mobile sales force need access to sales intelligence on their phone or tablet? In this webinar, you’ll see how ThreeWill can help you meet the needs of the mobile professionals in your enterprise.


IT Leaders, IT Resources, Business Stakeholders


Thu, Sep 26, 2013 3:00 PM – 4:00 PM EDT

Register Now
read more
John UnderwoodNew Webinar – Mobile Solutions for the Enterprise

Lessons Learned About Bringing a SharePoint App to Mobile

Guy is a Senior Consultant with ThreeWill. He has over 14 years of information technology experience delivering value and efficiencies to customers and providing solutions. These include evaluation, selection, design, development, deployment and support of several large-scale projects including in-house software applications and off the shelf software and hardware. He has a high level of troubleshooting skills related to application development, windows based operating systems and networking.

Bringing a SharePoint App to Mobile

Here are some things I learned while working on the Mobile version of a SharePoint line of business application. The existing application uses sandboxed solutions/javascript and the SharePoint client object model.   Basically the effort was plagued with screen lock ups and authentication prompts when using Safari on iPhone and iPad.  Other browsers (like Chrome) did not have the same issue(s).

General Mobile Best Practices

  • Use the viewport meta tag to scale the page according to the device-width
  • Changed web.config to bypass SharePoint’s OOTB mobile view (see this)
  • Used different page layouts, pages, stylesheets and media queries to target smaller form factor
  • Ideally media queries can be used to target high resolution (like Retina) screens for loading images, etc that are higher quality.  this works on most phones/browsers except Windows Phone 8’s IE10 (in reports 96dpi even though it’s high res).  this is a known bug and Microsoft is expected to release a patch
  • Made use of the UserAgent to target different mobile devices (iPad vs iPhone, etc)
  • Minify css and js (AjaxMinify)
  • Reduce the number of requests by combining files such as css and js (AjaxMinify)
  • Reduce the size of images

Safari Mobile (iPhone and iPad) Browser Issues

  • Had to implement JavaScript “SetTimeout” when calling the Client Object Model’s ExecuteQueryAsync (was getting intermittent errors like “Invalid Request”)
  • Safari was caching the POST (see this) so we added a remarked datetime stamp so it always unique
  • Replaced some of the images non-image representations where possible
  • Added a redirect page as the welcome page to reduce the load (a better solution would be server side; however, we couldn’t due to AT&T’s policy restrictions)
  • When switching to landscape and back to portrait causes the font size to change.  You can fix by adding “* { -webkit-text-size-adjust:100%;}” to the mobile stylesheet(s)


  • If you’re wanting to do mobile development that utilizes Safari, make sure you have a Mac.  The best simulator that I found was the iOS Simulator included with Xcode.  Then, you can use the Safari Web Inspector to debug (note that traditional breakpoints cause Safari to crash–at least that has been my experience) and see which resources are being loaded, etc.
  • For the Android, use the SDK
  • For Windows Phone, use the SDK

When using the emulators on a Windows 8 machine for both Android and WIndows Phone you could encounter an issue with Hyper-V.  Both emulators can make use of Intel’s VT-x Virtualization Technology.  Before starting the Android emulator ensure you have disabled Hyper-V.  Then re-enable when wanting to use the Windows Phone emulator.


  • In order to use VT-x, you’ll need to run the “Hardware Accelerated Execution Manager” if you haven’t already.  Instructions (and other emulator information) can be found (here)

Windows Phone

  • While I haven’t done extensive testing with the Windows Phone and IE10, I did find that window.orientation (javascript) is not available on the device.  I was not able to use media queries at all with IEMobile 8.0.  I finally just used a IE condition to load a Windows Phone stylesheet.  I also used percentages for sizing since I couldn’t tell if the user had rotated the phone.
  • Media Queries – I think these are supposed to work; however, with my testing they didn’t.  It could be the doctype; however, I didn’t have time to get to the root issue.

Please note that this is a working post that I’ll continue to update…please share your questions and your experiences in the comments below.

read more
Guy LeeLessons Learned About Bringing a SharePoint App to Mobile

Internet of Things

Tommy serves as the President at ThreeWill. In this role, he works with his leadership team to hire the best people, find the right business opportunities, and ensure that ThreeWill delivers for our clients on projects.

This is the second of five blog posts on a series entitled “ThreeWill Predictions for 2013.”

What Is the “Internet of Things”?

Gartner’s Strategic Technology Trend for the “Internet of Things” is stated as the following:

“The Internet of Things (IoT) is a concept that describes how the Internet will expand as physical items such as consumer devices and physical assets are connected to the Internet. Key elements of the IoT which are being embedded in a variety of mobile devices include embedded sensors, image recognition technologies and NFC payment. As a result, mobile no longer refers only to use of cellular handsets or tablets. Cellular technology is being embedded in many new types of devices including pharmaceutical containers and automobiles. Smartphones and other intelligent devices don’t just use the cellular network, they communicate via NFC, Bluetooth, LE and Wi-Fi to a wide range of devices and peripherals, such as wristwatch displays, healthcare sensors, smart posters, and home entertainment systems. The IoT will enable a wide range of new applications and services while raising many new challenges.”

How This Impacts Enterprises

The network continues to expand over time with more and more smart devices that contain specialized sensors.  These sensors can provide context to your applications and bring “intelligent” applications to a new level.  This “Internet of Things” is becoming a more prominent part of our company strategy as we see this as enabler for the mantra we have at ThreeWill, which is “does this solution help our customer work together better“.

At ThreeWill our passion is Work Together Better.  As you see front and center on our website our focus is to “… help innovative enterprises work together better by integrating leading collaboration platforms like SharePoint, Jive, and Chatter.”

We believe that in order for enterprises to “Work Together Better” it requires smarter applications.  Applications that can service you the right information at the right time.  For example, using sensors in networked devices to provide context to applications.  Taking that context and creating an intelligent push of information when a sensor in the device intercepts information that is important to the user (like receiving an incoming call on a cell phone).

Yesterday’s Science Fiction is becoming Today’s Non-fiction Reality

I remember talking to a large telecommunication client of ours about the very example of “pharmaceutical containers and automobiles” mentioned by Gartner about 3 years ago and it is so exciting to see cellular technology get to the point of putting intelligence into a pill bottle.  These are things that I remember seeing on science fiction TV shows like Battlestar Galactica and Star Trek when I was a kid.  Very exciting to see this become reality.  What I am looking forward to is the Star Trek Transporter so I can avoid Atlanta traffic and easily visit my customers around the world.

Internet of Things and Contextual Intelligence

ThreeWill is diving in head first into contextual intelligence through our collaborative efforts of exploring next generation context aware applications with Plantronics.  Applications today need to take advantage of more than the PC or Laptop.  They need to be reaching to the edges of the network through devices like wearable technology that are incorporated into your everyday life.  One of the most innovative devices we have built a product for is Plantronics’ Voyager PRO UC.  It is an exciting “Internet of Things” device you can incorporate into enterprise solutions.  This device has sensors that detect states of the user and provide a bridge between the user and their laptop.  In our product Popcorn, we leverage the caller id to initiate screen pops of enterprise data that is related to the incoming caller.  This facilitates an intelligent contextual conversation.  The intellectual property of your company is served to you “at the right time and place”.  We are very excited about what our early adopters of this product have said about how this is “magic” and makes there days more effective and efficient.   This bluetooth headset as a value added device has brought life for us Gartner’s “Internet of Things”.

Learn More

If you want to learn more about contextual intelligence, Plantronics’ website has a section of their developer community dedicated to Learning about Contextual Intelligence that is a great place to start.

read more
Tommy RyanInternet of Things

Personal Cloud

Tommy serves as the President at ThreeWill. In this role, he works with his leadership team to hire the best people, find the right business opportunities, and ensure that ThreeWill delivers for our clients on projects.

This is the first of five blog posts on a series entitled “ThreeWill Predictions for 2013.”

If you step back and think about the “Personal Cloud,” you can definitely see how this has already influenced our digital life at a personal level.  More and more these days you are seeing the ability to access your data on any device (laptop, phone or tablet).  In order for that information to follow you to each of your devices, there has been an emergence of Personal Clouds.  In the consumer world, Personal Cloud examples can be seen through services from photo sharing on flickr to file sharing on Dropbox to note taking on Evernote.  Users do not want to copy this information from device to device.  They want it centrally stored in their personal cloud and in sync with each of their devices.

The beauty of the Personal Cloud is that it not only facilitates multiple device support for applications, but it hosts backup and recovery (not the responsibility of the device).  Cheaper storage and faster more accessible networks have enabled these services to emerge at an affordable price or “free.”  I still am amazed that I have unlimited picture storage with flickr for $24.95 a year (and what is harder to believe is that it was available for that price when I started that back in 2007). These Personal Clouds open up a world of new applications that can be built.

We believe our customers want our solutions to be seamless across devices and allow the user to access information at any time from any device and have that user experience to be intuitive no matter what device you use to access the information.  As application developers, the challenges we face for Personal and Enterprise Clouds are synchronization, data protection, mobile responsive design and local data cache management.  These are key challenges that we look at as we build our applications.

When I refer to “Enterprise Clouds,” I am referencing what is typically meant by the “Cloud,” which is multi-tenant web hosted services for your enterprise data like Salesforce for CRM, Jive for Social and SharePoint Online for CMS.

We look forward to the improvements to our applications that leverage Personal Clouds (Linked In, Twitter, Facebook) and Enterprise Clouds (Salesforce, Jive, SharePoint Online) in the applications we build (like Popcorn).  We believe Personal Clouds will be key to “accessing your information at the right time and the right place.”

read more
Tommy RyanPersonal Cloud

Salesforce for SharePoint Devs

Eric Bowden has over 19 years of software development experience around enterprise and departmental business productivity applications.

Salesforce for SharePoint Devs

This year, I attended my first Dreamforce. For those not familiar, Dreamforce is the largest annual conference for Salesforce. It was a great week! ~90,000 registered, ~48,000 attended (http://www.forbes.com/sites/raywang/2012/09/23/485/), hundreds of sessions and clinics, keynotes…

We were even treated to a The Red Hot Chili Peppers concert!

The conference included plenty of innovation, live demos, and real customer success stories. I attended a variety of sessions, mostly focusing on various components of app dev in Salesforce.

Note: Salesforce was originally created as a CRM tool for sales professionals. But today, it is a platform:  http://www.salesforce.com/platform/cloud-platform/.

As you know, I’m focused on custom application development projects which Connect To, Build On, and Extend Microsoft SharePoint as a platform. I started my experience with Salesforce through the lens of an integrator. I was focused on understanding how to bring the best of Salesforce to SharePoint users, and how to bring the best of SharePoint to Salesforce users.

But, it wasn’t long into my journey that I started to see advantages of Salesforce over SharePoint. SharePoint is an awesome hammer, but not every problem is a nail.

Developers, Developers, Developers

First, let me introduce Salesforce to SharePoint developers. Salesforce is an innovator, they have quick release cycles, and their product and strategy for custom app dev has much in common with SharePoint.

Similar to SharePoint, there are several avenues for custom app dev in Salesforce:

  • Point and click configuration:   This is similar to what we call using “out of the box” features in SharePoint. It includes development of custom objects (think custom lists  on steroids), page layouts, views, configured workflows, etc…
  • Apex:  Apex is a proprietary language for coding back-end functions such as triggers and page code behind. This language is highly capable and is syntactically similar to Java.  Unit tests are required and must be executed prior to deployments.
  • VisualForce:  Used for page UI customization. Visual Force pages include server-side markup and rendered HTML, a similar concept as asp.net pages (http://wiki.developerforce.com/page/User_Interface).
  • Salesforce Touch:  Mobile app dev using a hybrid app approach  (http://www.salesforce.com/platform/touchplatform/).   Allows mobile developers to create apps using VisualForce page and javascript/jquery, presented as a native app.  The API includes important goodies such as local storage and access to device services (e.g. the camera).
  • Force.com Canvas (available as a Pilot feature Winter ’13 ):  This is a technique where you can render your app within an iframe in Salesforce, with context!

All of the app customizations are easily packged for distribution using a point and click UI.

Fingers crossed: I have a feeling there may be some exceptions to this, but I don’t have concrete scenarios to prove it. Any exceptions would most likely involve writing Apex code which runs “onInstall”.

You’ve gotten this far, why not take a break and enjoy a favorite from the Red Hot Chili Peppers?

So, where would I see Salesforce serving our clients as an option over SharePoint?

  1. Choose Salesforce app dev for records centric applications. Some important advantages found in the Salesforce data model are a structured query language which supports joins and aggregates  (Foreign Key Support and Aggregation Functions), computed fields which support aggregates of child tables, and support for transactions, savepoints, and rollback (Apex Transaction Control). Further, reports are built in.
  2. Choose Salesforce where scale is important. Salesforce scales automatically. However, there are governors. Consequently, they recommend that you perform load testing when appropriate.
  3. I would not choose Salesforce for apps which require a document repository, workflow, deep UI customizations etc… Though Salesforce does have capabilities in many of these areas, the capability for customization is not as rich and/or not an easy point of entry for .net developers.  After gaining more experience with custom app dev in Salesforce, I expect I’ll be more comfortable recommending more complex code customizations. But as a Salesforce n00b, I would want to limit app dev projects to ootb  configuration, lightweight Apex code and simple UI customizations. SharePoint is still my Swiss Army Knife of choice.

Obviously, Salesforce will be a poor choice for many clients regardless of it’s capabilities. For example, clients who have significant investment in SharePoint infrastructure and team capability may not be well served to introduce a new tool, Salesforce.


In summary, I’m impressed with what I see in Salesforce and am happy to include it in my box of tools for serving our clients.  For now, I see a specific scope of requirements which I would look to Salesforce for a solution.  However, I have a good feeling about Salesforce and I’m eager to learn more, including Canvas apps, VisualForce, and Touch (mobile).

read more
Eric BowdenSalesforce for SharePoint Devs