Configure Google Domains with Office 365 and Custom Azure Web App Domain

If you are setting up Office 365 with custom domain you will be asked to configure name server pointing to below in the domain admin page. In our case it will be Google domains registration page.

dns entries for o 365.PNG

If you altered name servers into Office 365 it wont help you to propagate DNS entries with Google domain management tool since you have handed over responsibilities to Microsoft Online DNS services.

⚡ Note – You required to enter DNS record in Office 365 but not in the google domain registration console.

You could achieve adding custom domain entries buy following path or finding domains in search in Office 365 admin portal.

☛ Home –> Setup –> Domains –> New Custom Record

adding custom domains

 It may take many minutes to propagate around the world based on the condition and you could check success of propagation with tool ViewDNS.

⚓ References

Improved LOOK to Office365

Since this is quick update on the Microsoft Office team and no influence on the functionality aspect, thought of make post ultra summarized. Older Office365 started rolling out in December and will continue through early 2017. Quick view will be enhanced in the home page of yours login as below.

There is a change on your apps on the cloud but more or less this is a UX (user experience) side improvements which makes Office user happy.

You can create new documents and also view latest modified documents at a glance on the home page. Documents will be simply quick preview of your OneDrive.

Your start page as can be selected on your preference with tapping on the “Settings Gear” which appears on the top right corner.

References

https://blogs.office.com/2016/12/28/the-new-office-com-gets-first-major-update/

REST and OData with Office365 APIs

When communicate with Office or SharePoint APIs, its important fact that knowledge on representational transfer protocol and OData protocols while moving with deep customization’s.

what is REST (Representational State Transfer)?

In simple terms REST is all about below;

  • Predefined set of stateless operation which identified by URL
  • Responses may contain HTML, JSON, XML or any other defined format which supported
  • GET, POST, PUT, DELETE are most common forms of HTTP verbs

rest_api

Eg.

GET:
http:///_api/web/lists/GetByTitle('Test')
GET:
https://outlook.office.com/api/v2.0/me/MailFolders/sentitems/messages/

what is OData (Open Data Protocol)?

  • Equipped with query and creational capabilities on REST APIs
  • Initiated by Microsoft in year 2007
  • Format [http or https]://<REST Endpoint URL>/<query>
http://<end point URI>?$select=value&$filter=condition$orderby=value

Open Standardization?
Standards which are developed with the involvement of community (mostly with developers). Open standards inherited to office 365 API development in following manners;
• Most of Office 365 APIs are exposed as a RESTful APIs
• Its implemented with OData 4.0 (as for year 2016)

OData queries?
OData queries is common standard which elaborated above also included in the SharePoint and Office365 end point data querying. Its ultra simple if you know the basics and played with this. Follow the following links and be expert on this.

www.odata.org : Official site for OData

graph.microsoft.io : Explore Microsoft Office365 API with queries

OData validator to validate your REST endpoints

Note : If you noticed there are versions associated with most of cloud based endpoints. Cloud services are continuously pushing changes to its services as sooner changes are ready, so then returned patterns may changed for same query. To avoid custom applications get break due to changed on endpoint, it classifies under version metadata. Simply you can pick any version which satisfies your requirement.

Querying SharePoint Endpoints as below;

SharePoint REST service query option syntax
Courtesy : msdn.microsoft.com

 

Further references 

Optimize SharePoint REST API with client side caching | Angular JS

If you working with any REST API and having the requirement of getting too many data from the from the DB or lists (in SharePoint) [GET requests]. You may facing slowness in the App, Web Part or in client side web part.

To overcome above issue with the load, one option would be caching of recurring data while you made all other performance improvement points. Following describes how yo improve performance of SharePoint Online/On-prem application which relies on REST API by using caching and uses Angular JS for client side development.

Note: Out of the box (OOTB) Angular JS having caching implementation on the $http, but in following sample I have used “angular-cache” since it give more features such as access to local storage and session storage.

First you should include following references https://github.com/jmdobry/angular-cache/tree/master/dist and include those it in your project.

Secondly, you should configure the caching options. Either you configure caching globally as below on the Angular app.js

//If need to apply all HTTP requests globally

(function () {
'use strict';

// create app
var app = angular.module('app', [
, 'angular-cache'
]);

// startup code
app.run(['$http', 'CacheFactory', function ($http, CacheFactory) {
//cache configs
$http.defaults.cache = CacheFactory('nylFileData', {
maxAge: 15 * 60 * 1000 // Items added to this cache expire after 15 minutes
, cacheFlushInterval: 60 * 60 * 1000 // This cache will clear itself every hour
, deleteOnExpire: 'aggressive' // Items will be deleted from this cache when they expire
, storageMode: 'localStorage' // This cache will use `localStorage`.
});
}]);

Further configurations http://jmdobry.github.io/angular-cache/#configuration-options

Else you can define configurations per Angular service or may be per request.

(function () {
'use strict';
var serviceId = "myService";

angular
.module('app')
.factory(serviceId, ['$http', '$q', 'CacheFactory', myService]);

function myService($http, $q, CacheFactory) {
// init factory
init();

var service = {
getData: getData

};

return service;

//initialization
function init() {
//Cache initialization
CacheFactory('cacheData', {
maxAge: 15 * 60 * 1000 // Items added to this cache expire after 15 minutes
, cacheFlushInterval: 60 * 60 * 1000 // This cache will clear itself every hour
, deleteOnExpire: 'aggressive' // Items will be deleted from this cache when they expire
, storageMode: 'localStorage' // This cache will use `localStorage`
});
}
}
})();

Finally, you should should bind your cache with the request.

 //get data function
function getData() {
var deferred = $q.defer();
var start = new Date().getTime();

//request
$http({
method: 'GET',
cache: CacheFactory.get('cacheData'),
url: webUrl + '/_api/web/lists/getByTitle(\'My List\')/Items',
headers: {
'Accept': 'application/json;odata=verbose',
'Content-Type': 'application/json;odata=verbose'
}
}).then(function successCallback(data) {
// when the response is available
deferred.resolve(data);
console.log('Time to retrieve data - [' + (new Date().getTime() - start) + 'ms]', data, serviceId, false);
}, function errorCallback(error) {
// or server returns response with an error status.
deferred.reject(error);
});

return deferred.promise;
}

When to use & Not to use SharePoint Framework

As for all there are black and white sides of this model as well same as web parts and add-in models. This article will be discuss good and bad of it.

Works for IoT (Internet of Things)

Modern tend is accessing internet from any device user equipped with such as mobile, tab, laptop, desktop and so on. Even modern SharePoint team sites are responsive there are loopholes. If your requirement is more mobility centric, this would be better option.

Users are still active with the legacy interface  

If in a requirement users are still active with the legacy application and finds improvement in the application while its up and running. Developing from the scratch or migrating would be more expensive idea such as in this context. So what you could do is develop client side with SharePoint framework which is future proofed and allowing user to work on both.

Need of long running operations and impersonation 

If you have the requirement to run long running operations, this is not ideal method to used with such as provisioning site in SharePoint since browsers does not allows to perform long hooks by default. And other thing is, if you need to perform tasks as administrator or with elevated privileges, this wont be a good idea.

Require high level of app data security 

This is all about client side development, means your data finally resides in the browser. If you are looking for higher degree of app data separation and provisioning, this may be not a better option.

Further, ups and downs will continue in later post. Until that, do explore on SharePoint framework.

What you should know about “SharePoint Framework”

SharePoint framework would give you the experience which you have developed solutions client side such as Angular, Ember, JQuery, Knockout or etc. TypeScript will give you thinner layer between the SharePoint server and client side framework but it also not a mandatory fact.

Decoupled

Since its loosely coupled with the SharePoint server, it will be easy us to make upgrades easy and do the maintenance on presentation layer. Also it allows us to integrate power of the modern client side frameworks with greater user experience.

All about client side scripts 

All resides on the clients browser and it will give the same behavior while your felt with client side web development. You may be must to scripts enabled on the browsers to consume this services. It will include the strengths of add-ins and frameworks.

Trust 

SharePoint framework would take your current browsers authentication to authenticate against the SharePoint server. Other than in web parts and in apps model, you wont equipped with authentication impersonation.

Independent hosting 

With the decoupled characteristic of the framework, you will be allowed to host your content where ever you want. It may be cloud, on-premise server, private host or any form hosting since you have access to URi’s of the SharePoint.

Extensible  

As Microsoft announce itself, this would be a extensible module for the SharePoint user experience. You will be totally free to include modern features such as responsive, nice animations, smart design architectures and so on on your preference. Rather than we develop within the boundaries of the template we get. This will be tend towards opening doors of open source.

Summary

Selecting to do your customization is more or less selecting best comparing competitive advantages. If you selected to develop on this some how, SharePoint would play the role of API.