Orangutech’s CEO Writes About WPC Experience

On March 26, 2012, in SharePoint, by matdesmarais

Orangutech’s CEO, Mike Maadarani, has just blogged about his personal experience attending the Microsoft World Partner Conference. He shares the positive impact it had on our company. Check out the article here:

The Positive Impact of WPC on Our Business, by Mike Maadarani


I just ran into an issue at a client site that was very puzzling. I happened to find the solution here while browsing for something else:


Essentially, the issue is that the documents were being tagged with managed metadata values by users that had contribute level access to the site, SharePoint was not returning any error message, ULS logs were also clear. The document properties would save and if the user went back to view the properties of the document, the values were blank.

The same exercise from a site collection administrator account did not behave like this.

The solution to this problem as described in the blog post was to add the NT AUTHORITYAuthenticated Users as read permission in the TaxonomyHiddenList.

The contributor level users were tagging the documents properly but when displaying the values, their account could not retrieve the list item in the hidden list hence the blank values.

Thank you Prashanth.


SharePoint 15 (vNext) will introduce yet another class: SPFileRightsManagementSettings. This class represents the Information Rights Management (IRM) settings for file downloads in Microsoft SharePoint Foundation. It will allow control of the following properties:

Name Description
AllowPrint Gets or sets a value   indicating whether the viewer can print the document.
AllowScript Gets or sets a value   indicating whether the viewer can run script on downloaded document.
AllowWriteCopy Gets or sets a value   indicating whether the viewer can write on a copy of the downloaded document.
DocumentAccessExpireDays Gets or sets the number of   days before a downloaded document will expire.
GroupName Gets or sets the group name   (email address) to which the permission applies.


This will allow for further granularity on the access permissions of SPFiles. The ability to control what a user can do like printing, running scripts, or modifying a downloaded copy of the document will definitely be of value in the future. Also having the ability to expire a document at a specific time will aleviate the need for custom workflows to remove content on expiration.

More to come as I uncover new information on SharePoint 15. Stay tuned!



Further investigation in the API technical documentation reveals the existance of a class named MdsCompliantAttribute in the Microsoft.SharePoint.WebControls namespace. This value indicates whether the script, style, and field registrations of a class are compliant with the Minimal Download Strategy (MDS) framework. There is not a lot of documentation about this Minimal Download Strategy framework other that it being very similar to Ajax asynchronous loading.

The similarity to Ajax is hinted at with the following remark in the details of this MdsCompliantAttribute class:

This custom attribute class should only be applied when all registrations—such as scripts and styles—are performed through the SPPageContentManager class methods. All controls that render inside an AjaxDelta control must either have this attribute or be in a whitelisted assembly for which all controls are compliant.

Further details on the SPPageContentManager class indicates the following note:

Manages all the resource content that may be registered on a SharePoint page, including script files, inline scripts, style files, inline styles, and hidden input fields. Spweb Ensures that the content can be either appropriately placed on a fully-rendered HTML page or correctly transmitted to a browser in the case of a partial page load.

Hopefully this MDS framework will allow for faster load times for the end users by reducing the amount of full page refreshes required while browsing around. AjaxDelta seems to indicate loading the destination’s required files asynchronously but only the ones that are not loaded in the current page. Again, this is supported by the partial page load indication and the Delta word attached to Ajax.

More to come in other parts of this series.


I was flipping around the SharePoint 15 Technical documentation on the API… I found a few interesting tidbits in there:

There seems to be a lot of references to an “SPApp” class. This SPApp seems to make reference to actual apps (read webparts that are self contained like Apple/Android/WinPhone7 Mobile Apps) that would run on the SharePoint 15 platform.

Further investigation bring up a new method in the SPWeb class to LoadAndInstallApp() which is described as: “Uploads and installs an app package.” Which returns a Microsoft.SharePoint.Administration.SPAppInstance that references the instance of the created application.

An SPAppInstance represents an SPApp object installed to a specific SPWeb site.

The SPAppInstanceStatus represents the lifecycle status of the SPApp and contains the following members:

Member name Description
InvalidStatus An internal product error has occurred.
Installing The app instance is in the process of installing.
Canceling The app instance was installing, but was cancelled, and is   now uninstalling.
Registering The app instance is in the middle of a transaction   registering tasks for a state transition.
Uninstalling The app instance is uninstalling.
Installed The app instance is installed.
Uninstalled The app instance is uninstalled.
Upgrading The app instance is upgrading.
Initialized The app instance has been created, but not yet installed.
UpgradeCanceling The app instance was upgrading, but has cancelled.
Disabling The app instance is disabling.
Disabled The app instance is disabled.


So these apps would be loaded at the SPWeb level… but where do they come from??

The Microsoft.SharePoint.Administration.DatabaseProvider.PackageSource enumeration seems to provide the answer with the following sources list:

Member name Description
InvalidSource An internal product error has occurred.
StoreFront The package is from the marketplace.
CorporateCatalog The package is from a corporate gallery.
DeveloperSite The package is from a developer site.
ObjectModel The package is loaded via an object model.
RemoteObjectModel The package is uploaded via CSOM.


The documentation indicates there would be apps coming into SharePoint from a marketplace (aka App Store), a Corporate catalog (internal gallery that departments could reuse the apps) or from a developer site.

There are a lot of other documentation on these SPApp classes like SPApplicationCredentials, SPAppCatalog, AppManagement.SPAppPrincipalInfo, SpAppDeployment etc…

There will be more coming as I discover new exciting details on the next version of SharePoint.