How to control Customer’s SharePoint Extranet site?


There is a great need of sharing business content with company’s partner or a customer. On a day to day basis, Companies have large files that they want to share with the customers and partners, so either they can use Dropbox or a file sharing link or take control of their own content.

You can use SharePoint online extranet’s site to collaborate with your customers and partners in a controlled environment. Its just a game of permissions.

With the Office 365 Security and Compliance Centre, you can investigate, which content is being viewed by whom? and who is downloading what? This is called a Controlled environment that Office 365 provides. This works as a surveillance tool of your data monitoring, and you can get an audit report of user activities.


You want to share Documents with your customers’ in a controlled environment. You have Office 365 subscription, and you are using SharePoint online as your Content Management System.


1 – Create a fresh site collection. For test purpose name it as  “Test 20”

2 – Now, after the site collection is created, open the sharing properties of this new site collection. There will be a sharing button on the top of the page. Check the box beside this site collection and then click “Sharing”

You can then share this site collection with external users. External users are of two types:

1 – Authenticated (they have Office 365 OR Microsoft based IT systems in their organisation)

2 – Anonymous (Can be any one)

You can share the extranet with the external users who accept sharing invitations and sign in as an authenticated user. This means, that your customers and partners must have Office 365 or Microsoft on-premises solution as their core IT system (,,, else they cannot access your extranet site – unless you open the SharePoint site for Public (like a website) and share link with anyone.

You can then send a sharing invitation to them like you would share the site with your internal team mates.

Note: I tried with, the sharing doesn’t work any more.



3 –  Keep the “Default link type” and “Default link permission” settings default.



4 – Now this is really important from security point of view. You need to make sure, that users, only from your customer and partners domain, can access your extranet site. For example ABC is your customer and XYZ is your partner company, you want to send the invitations only to people with email addresses on these two domains and

If accidentally some one sends an invite to – it will be bounced back and give user an error. This is a Security Control that SharePoint Admins can implement.



5 –  For extra Security layer, SharePoint admins can deploy another control, which is giving sharing permissions. If you disable this, then only Site Owners can send a sharing invitation to a customer or a partner user. Usually the Business User is the Site Owner, which means, that if some one wants to add any customer user or send an invite – they would request the Business User , to add that customer user. Users with any other permission level would not be able send an invite, unless they are Site Owners.

This is one way setting, you cannot undo this.



6 –  Now click Save and all done.

7 – Site owner(s) can now share the Site, Library, List with the Users. Site Owners should be trained on SharePoint permissions, as they will be managing it on-going and not the SharePoint Site Collection Administrator.

If the site owner wants to deploy unique permissions on each Library or a list – then he/she needs to break the inheritance of each App (Library, List) and then give unique permissions.

If you have any question or comments, please share your feedback and the if you find it useful, please share it with others.




How to get user email address in InfoPath form with SharePoint Online?


If you are still creating Business forms in InfoPath, with SharePoint online version – then at times you might want to get the email address of the user on form load.  In this blog, I will discuss how you can get email address of any of the domain user using the “substring after” InfoPath function.

1 – Edit the InfoPath form in your Form Library

2 – Create a text field and name it as “UserEmailID”

3 – Now, use this function to get the email address of the user. Edit text box properties -> see the Value area and click “fx” -> insert function Text-> substring -after and then write below lines:

substring-after(username(), “|membership|”)

The full account ID of the user is i:0#.f|membership| and this function returns only the email address of the user, which is after the |membership|

4 – Email address will be stored in the text field. The end.

If you have to get email address of any other user, then you can repeat the same process , pick their AccountID, use this function and store value in a text field.

Happy SharePointing.

How to add a Calendar Web part from one Subsite to another SharePoint Team Site?


This blog is about adding a Calendar App as a web part in a SharePoint Site, when the Calendar app is on another subsite. For example you have a Meetings calendar on Subsite A and you want to access the Meetings calendar on the team site. In this scenario, you can follow below steps:


1 – Open the Meeting’s Calendar in browser, Internet Explorer using your Admin credentials



2 – Now, edit the Calendar app in SharePoint designer








3 – SharePoint designer will open


4 – Click Site Pages and then create a Web Part page, Full page, Vertical. Name the page as Calendar.aspx


5 – Now, edit the Calendar.aspx page in Advanced Mode



6 – The aspx page will open in edit mode, and the cursor will be on line 30. You need to add the Calendar app here, so note the line number or the Place holder lines of code.





7 – Now, Click “Insert” and click “Data View” and select your Calendar app.




In case the Data View option is greyed out, then Click Edit and then Parse HTML.




8 – After you have added the Calendar app in the page, save the page in the Site Gallery. Click the code, where you added the Calendar app, and then WEB PART -> To Site Gallery.


It will open another box, read it and then press Yes.




9 – All done now. You can see this Calendar webpart under Miscellaneous section.


10 – Create a test page, edit the page, and insert a web part. You will see your calendar web part under Miscellaneous.



Happy SharePointing..

How to set Picture slide show Web part on a SharePoint online page?


If you want to add a Picture slide show, on a SharePoint online page, then you can follow below instruction.

Let’s call the SharePoint site name as Make sure you have the Site admin rights to run below.

1 – Download latest version of the SharePoint Online Management Shell. Download link -> Click Here

2 – Connect to your SharePoint Online tenant within PowerShell session

$creds = Get-Credential
Connect-SPOService -Url -Credential $creds

3 –  Enable Public CDN in the tenant (Reference : What is CDN?)

Set-SPOTenant -PublicCdnEnabled $true

if it is already True, then it means that CDN is  already enabled in your organisation. Then, leave this step and follow step number 4.

4 – Add CDN origin, where you will keep your pictures for slide show. I am keeping the pictures in the Picture Library. Add this Picture Library in the Content Delivery Network:

New-SPOPublicCdnOrigin -Url “”

5 – It will take 15 minutes to reflect the changes in your environment.

Now, add the Picture web part on the SharePoint’s page as follows:

1 – Edit the page, where you want to add the Picture slide show

2 – Insert a web part

3 – Go to Media and Content and then select Picture Library Slideshow Web Part

4 – Edit this web part, and select the “Picture Library”, that you added as CDN origin previously

Library slideshow

5 – Click Ok and then save and publish the page

6 – You will see the Picture slide show on the web page.

You can edit the web part after, and change other details as well like:

  • Duration to view picture
  • Library view
  • Picture display mode
  • Display with

Thanks for reading.

Dynamics 365 CRM – How to resolve script error, while saving leads?


I have Dynamics 365 version 9.0 environment in Australia, and I was receiving a script error while I was saving a new lead in Dynamics 365 CRM. The error was as below:

Error on leads snapshot for forum

In this script error, MarketingSales reference seemed missing in my ABC Dynamics organisation and I would need to import the Lead entity in the instance. The detailed logs were as below:

ReferenceError: ‘MarketingSales’ is undefined

   at eval code (eval code:1:1)

   at RunHandlerInternal (

   at RunHandlers (

   at ExecuteHandler (

   at Mscrm.TurboForm.Control.CustomScriptsManager.prototype.$Db_1 (

   at Mscrm.TurboForm.Control.CustomScriptsManager.prototype.executeHandler (

   at Mscrm.TurboForm.Control.CustomScriptsManager.prototype.executeHandlerByDescriptor (

   at Mscrm.TurboForm.Control.ViewModel.FormViewModel.prototype.fireOnLoad (

   at Mscrm.TurboForm.Control.Data.DataEntity.prototype.$My_1 (

   at $v_7 (


I imported an unmanaged solution in the environment for “Lead” entity and published all customisation. It worked, and i am not receiving script error so far.

Thank you.

MS Dynamics 365 – Product Bug in v8.2 – Cannot create a project based quote


MS Dynamics 365 provides seamless integration between Office 365 apps and SharePoint Project documents, i love the feature of schedule board and importing outlook appointments in the time sheet. But on the other hand Dynamics 365 needs alot of improvement on the User interface and bug resolution. I am using CRM and Project Services Automation in Dynamics 365 version 8.2. The version 9.0 is planned to roll out in Australia, from Feb-2018 on wards.

There is a serious product bug in the MS Dynamics 365 version 8.2 that i am facing, in the Quote module. I am already working with Microsoft, and there hasn’t been any resolution or root cause analysis for this product bug. The way forward is to wait for the Dynamics product upgrade to version 9.0 in March 2018.

In this blog, I will discuss the bug and hope to get feedback from the community, if anyone is facing the same issue.

Definition of the bug:

Cannot create a project based quote


When creating a new project based quote, the Quoteline Project Information view gives error on save event. The error is ” The following error occurred: Missing Quantity“. Please see the snapshot below:

Quoteline error.jpg

Case steps:

1  – I created a new quote in MS Dynamics 365, under Sales

2 – I filled in all the details on the Quote dashboard (Summary tab)

3 – Under Quote lines, I created a new Project-based line item, by selecting the + sign on the right side

4 – When I clicked the plus sign, another window opens with a form. The form is Quoteline: Information

Note: If I try to change the default view to “Quoteline: Project Information”, in the customisation – this view runs in an infinite loop. The loop starts, as soon as i click the + sign in the Project-based line item. The view loops between Quoteline: Information view and Quoteline: Project Information view

5 – Now,  I changed the view of the form from Quoteline: Information to Quoteline: Project Information

6 – I filled in the details

  • Product type as Project based service
  • Lookup for the Quote name (this I have to manually select, it doesn’t come automatically)
  • Define the name of the Quoteline
  • define billing method as time and materials
  • Click Save

7 – When I clicked save, I received the error The following error occurred: Missing Quantity and the view changes to Quoteline: Information

8 – However, I have selected the Quoteline: Project Information view and Quantity field is not even a mandatory field

9  – After this error, if i try to change the view from Quoteline : Information to Quoteline: Project Information, it loops back to the Quoteline: Information view, with the error as belowQuoteline error

10 – I cannot create a quote

11 – I closed the quote page

Resolution by Microsoft:

None so far

Root Cause Analysis:


Way forward:

To upgrade Dynamics 365 environment to version 9.0 and check with Microsoft again.


Time Entry Form – Dynamics 365 – Limitations


With the Microsoft Dynamics 365 becoming popular day by day, the software still has some limitations.

I have my Dynamics 365 subscription and I am still on the 8.2 version, as 9.0 version is not available in Oceania yet. I have been struggling to customise the “Time Entry Form” in Dynamics 365 as per business rule but no luck in this case due to product design limitation.

The “Type” field in the “Time Entry” entity cannot be customised, it has 3 option sets namely:

1 – Work

2 – Absence

3 – Vacation

We can only rename these option sets and cannot add a new option set in this entity, as I tried adding few non-billable option sets but that would always come up with a billable form with Project and Tasks fields, and not work accurately.

This link states that the July-2017 update can allow customers to add new Time Entry Types for PSA and CRM administrator can modify the java script: msdyn_/Common/Models/OptionSets/TimeEntryType.js and add new option set items accordingly there after customized the Time Entry Optionset in CRM.

We have to wait for Microsoft to get the updates deployed in Oceania Region and we dont have a definite date for that unfortunately.