Tuesday, June 16, 2020

"Share with anyone" with the link setting is greyed out and unable to share Externally a folder/file with your Office 365 Group's SharePoint site, Why?




0) Ensure External Sharing is properly setup on your Office 365 Tenant! Follow these two Microsoft Posts to validate - https://docs.microsoft.com/en-us/sharepoint/turn-external-sharing-on-or-off and https://docs.microsoft.com/en-us/sharepoint/change-external-sharing-site

1) Ensure you set the Office 365 Group Privacy as "Public within organization"

2) Navigate to your site collection features page - https://<yourtenantname>.sharepoint.com/sites/<yoursitename>/_layouts/15/ManageFeatures.aspx?Scope=Site

3) Ensure you deactivate this Site collection feature “Limited-access user permission lockdown mode”! 

4) Voila! You should now be able to Externally share folders and documents located inside the document libraries within site <yoursitename>


Thursday, March 14, 2019

Follow steps below to solve the issue with this crazy error related to creating Personal Sites in SharePoint 2013 / SharePoint 2016 namely "Exception calling "CreatePersonalSite" with "0" argument(s): "A failure was encountered while attempting to create the site." -

1) Navigate to Content Databases <central admin url>/_admin/cntdbadm.aspx

2) Ensure the Current number of Site Collections is less than the Maximum Number of Site Collections settings.

3) If not then increase the Maximum Number of Site Collections settings to ensure its significantly greater than current number of Site Collections

4) Re-run your PowerShell Script

Thursday, May 18, 2017

Interesting statistics (with supporting reference articles) illustrating how Digital Trends affect how people work

Interesting statistics illustrating how Digital Trends affect how people work!
  1. People working remotely has increased 4x from 1995 to 2015 -
  2. 90% of the world’s data was generated over the last 2 years -
  3. KRC Research 2013 Online Survey demonstrates that out off the 764 employees polled:
  4. Millennials will comprise 50% of US Workforce by 2050
  5. Generational Preferences of "Modern Collaboration Tools" at work:

Thursday, December 29, 2016

Tried creating a new variation label source site and got an error (with correlation id) when trying to access "Variation Labels" under Site Settings


OK! This one is a very strange error that  I encountered while setting up Translation sites in Office 365. While setting up a new source Translation Label site, the site was successfully provisioned but when I tried to access "Variation Labels" under Site Settings - got an Error page with correlation ID.



Upon further digging around, I found the culprit, a hidden library called "Variation Labels" where one of the columns "Title" should actually have a display name of "Label" but instead was still called "Title". If you enabled Publishing Feature on your Site Collection or created a Publishing Site you should be able to navigate to this library using  a URL like https://<your site collection URL>//Variation%20Labels/ - once you are in this library, click on Library Settings and ensure the Display Name of the "Title" column is "Label" (if not click on the column name and update the display name). Basically the different columns in this library should look like below:



Now try accessing "Variation Labels" under Site Settings and VOILA! there will be no exception and you will be able to see your variation label source site listed there.

Saturday, December 24, 2016

How to fix SSRS Page Count issue Page 1 of 2 ? where the page count is missing for some bizzare reason


SSRS Page Count issue "Page 1 of 2 ?", where the page count is missing is really due to a feature that was included since SQL Server 2008 Reporting Services called "On Demand Processing", which renders one page at a time to handle load and improve performance (especially for large reports)


You can fix this issue easily by adding a textbox to the report footer, set the textbox properties to "Hidden=true". Now set the textbox expression to "=Globals!TotalPages" (don't use quotes).

Voila!! Just like that when you refresh / re-run your report, it should now show the total number of pages in the SSRS report action bar

Thursday, November 03, 2016

How to resolve the "Loading" screen issue that constantly shows while using "Add an App" in sharepoint2013 (especially if you have built your own custom master page).

STEP 1) Ensure you add "DeltaPlaceHolderPageTitleInTitleArea" and "DeltaPlaceHolderLeftNavBar" to the tag below in Master page
<!--SPM:<SharePoint:SPClientIDGenerator runat="server" ServerControlID="DeltaPlaceHolderMain;DeltaPlaceHolderPageTitleInTitleArea;DeltaPlaceHolderUtilityContent;DeltaPlaceHolderLeftNavBar"/>-->


STEP 2) Add a Div hidden snippet just above the footer or at bottom of master page before the </body> end tag, with the following controls (cross check whether the following controls are not already present on the Master page - HINT: Find by the id name - if they exist dont re-add them)
   
<div style="display:none;">
 <!-- remove start and end tags below for DeltaPlaceHolderLeftNavBar and PlaceHolderLeftNavBar if already exists in master page -->
 <!--SPM:<SharePoint:AjaxDelta id="DeltaPlaceHolderLeftNavBar" BlockElement="true" CssClass="ms-core-navigation" role="navigation" runat="server">-->
 <!--SPM:<asp:ContentPlaceHolder id="PlaceHolderLeftNavBar" runat="server">-->
 <!--SPM:</asp:ContentPlaceHolder>-->
 <!--SPM:</SharePoint:AjaxDelta>-->
 <!-- remove start and end tags below for DeltaPlaceHolderPageTitleInTitleArea and PlaceHolderPageTitleInTitleArea if already exists in master page -->
 <!--SPM:<SharePoint:AjaxDelta id="DeltaPlaceHolderPageTitleInTitleArea" runat="server">-->
 <!--SPM:<asp:ContentPlaceHolder id="PlaceHolderPageTitleInTitleArea" runat="server">-->
 <!--SPM:</asp:ContentPlaceHolder>-->
 <!--SPM:</SharePoint:AjaxDelta>-->
</div>

Wednesday, December 09, 2015

How to get the current List GUID within your SharePoint Designer Workflow



You can get the Current List GUID by following the 4 simple steps below within your SharePoint Designer Workflow:

1) Use the "Extract substring from End of String" Action to copy 108 characters from the end of the Workflow Context: Workflow Status URL (Output to Variable:WorkflowStatusURLWithListGUID)


2) Use the "Extract substring from Start of String" Action to copy 44 characters from start of the WorkflowStatusURLWithListGUID (Output to Variable:ListGUID)

3) You can now use the Workflow Variable ListGUID within your custom actions or to construct dynamic strings where Current List GUID is required

For e.g. A Common use of the List GUID is when using workflows associated with SharePoint Calendar list and there is a requirement to export the SharePoint Event to *.ics file (so that the SharePoint Event can be added by user to his/her personal Outlook Calendar). To do this add a hyperlink to a URL similar to this within email Action:

<insert workflow context: current site url>/_vti_bin/owssvr.dll?CS=109&Cmd=Display&List=<insert List GUID here>&CacheControl=1&ID=<insert current item id here>&Using=event.ics

Friday, August 07, 2015

Convert Word documents to PDF in bulk using SharePoint 2013 Word Automation Services - PowerShell Script


Find below the PowerShell script to save PDF version of Word documents in a SharePoint 2013 document library. Take note of the input parameters and corresponding value in the script below, so that you can set your own value for this script to run properly


# Uncomment the line below if running this script within Windows PowerShell ISE
#Add-PSSnapin Microsoft.SharePoint.PowerShell

# Input parameters for the script
# Input the SharePoint list Name - replace Shared Documents with your Document Library Name
$listUrl="Shared Documents"

# Get the Word Automation Service Proxy
$wasp = Get-SPServiceApplicationProxy | where { $_.TypeName -eq "Word Automation Services Proxy" }

#Create the Conversion job
$conversionJob = New-Object Microsoft.Office.Word.Server.Conversions.ConversionJob($wasp)

# Get the web url
# Input the SharePoint URL - replace sharepoint.test.com with your sharepoint site url
$web = Get-SPWeb "http://sharepoint.test.com/"

# Set the credentials to use when running the conversion job.
$conversionJob.UserToken = $web.CurrentUser.UserToken

# Conversion Job Name
$conversionJob.Name = "ConvertDOCXtoPDF1"
$conversionJob.Settings.OutputFormat = [Microsoft.Office.Word.Server.Conversions.SaveFormat]::PDF
$conversionJob.Settings.UpdateFields = $true
$conversionJob.Settings.OutputSaveBehavior = [Microsoft.Office.Word.Server.Conversions.SaveBehavior]::AlwaysOverwrite

#Get list
$list = $web.Lists[$listUrl]

# Replace the variable "SubFolderName" with your own folder name or remove SubFolders[..] if querying all files in root folder
foreach ($itm in $list.RootFolder.SubFolders["SubFolderName"].Files){
    # Replace .docx with .doc or other Word file extensions depending on the Word formats you are trying to convert
    if($itm.Name.ToLower().EndsWith(".docx") -eq $true) {
        Write-Host $($itm.ServerRelativeUrl)
        # Note the job below will convert all Word files to PDF and save it into the same location as where source Word document are. Modify code below to save to alternate location
        $conversionJob.AddFile($($web.Site.MakeFullUrl($itm.ServerRelativeUrl)), $($web.Site.MakeFullUrl($itm.ServerRelativeUrl).ToLower().Replace(".docx", ".pdf")))
               
    }
}
# Start the conversion job
$conversionJob.Start()

Saturday, June 06, 2015

Create a shortcut link to the "New Document" ribbon menu item to create a new document from a document template

The ribbon in SharePoint 2013 is useful but not user friendly if one is looking to create a document based on a pre-defined document template that is associated with a content type. Find below the code snippet that can be used to add a custom JQuery button or override existing script on button(s) to easily open a document based on a pre-defined Word template that is associated with the document library or content type:

Primary function

// Ensure that you replace the siteURL, docTemplateURL and docLibraryURL with your own values
// e.g. siteURL = http://intranet/
// e.g. docTemplateURL = http://intranet/doc%20ibrary/forms/template.docx
// e.g. docLibraryURL = http://intranet/doc%20ibrary
function createNewDocumentInstance(siteURL, docTemplateURL, docLibraryURL){

  var createDocumentURL = siteURL + "/_layouts/CreateNewDocument.aspx?id=" + docTemplateURL;

  // Invoke the internal SharePoint function to create a new document based on the document template
  createNewDocumentWithRedirect2(event, docTemplateURL, docLibraryURL, 'SharePoint.OpenDocuments', false, createDocumentURL, true, 0);

}

Possible Use (EXAMPLE Only)

function replaceAnchorTagOnClickEventAndHref(aTag, siteURL, docTemplateURL, docLibraryURL)
{
  aTag.click(function() {
   // Handle home page hyperlink update to open new document instance based on content type
    createNewDocumentInstance(siteURL, docTemplateURL, docLibraryURL);
    return false;
  }); // End onclick event for aTag to open document in New Window
 
  aTag.attr("href", "#");
}
$(document).ready(function() {

  // Find the anchor tag that needs to be set with the onclick event
  // e.g. if the anchor text is set to 'My New Document Hyperlink'
  var aTag = $(".link-item a:contains('My New Document Hyperlink')");

  if (aTag.length > 0) {
    replaceAnchorTagOnClickEventAndHref(aTag,
               "http://intranet/",
             "http://intranet/MyDocLibrary/Forms/TestContentType/TestContentTypeTemplate.docx",
            "http://intranet/MyDocLibrary/");
}

Thursday, March 12, 2015

How to configure Yammer or a specific Yammer group to accept the post updated via email right away without sending back a confirmation email to the sender?


You can configure it through the admin control panel in Yammer.

Admin > Design and Configuration > below Email Settings, uncheck ''Require all users in your network to confirm their posts made by email before posting'' > then Save.