
Kanwal Khipple had a question on the Office 365 Yammer network the other day about how can you surface Delve blog articles on a SharePoint site?
To figure out if it’s doable and how you need to understand how the Delve article solution is built. I won’t go into the actual digging, but rather lay out the building blocks from a technical perspective.
And if you want the short story, surfacing metadata other than Title and Author is not trivial – from a search perspective. Which is also what you see in a Delve card.

When creating a new blog article from Delve you end up with a story on a URL much like this one: https://pzlcloud.sharepoint.com/portals/personal/mikaelsvenson/_layouts/15/PointPublishing.aspx?storyid=1

The URL include a story id, which is fed through a page named PointPublishing.aspx. The actual item itself is stored in a library called Pages in a new site under the portals/personal path, and the library has the URL of https://pzlcloud.sharepoint.com/portals/personal/mikaelsvenson/pPg.

You have a library with the path name pPg which hosts the actual article files. The path for the file you see in the above screenshot is named This-my-test-Title.pointpub. The extension name of the file points to the name of the aspx page it was fed through on viewing. Publishing to the point!
The contents of this file for my very short post is a JSON object inside of the .pointpub file and looks like this:
{ "Version": "1.0", "PostType": 1, "Title": "This my test Title", "SubTitle": "this is my test subtitle", "ThumbnailSource": "#315f7e", "Author": "anonymous author", "ControlData": { "cid1440425091645779245": { "Version": "1.0", "IsInternalControl": true, "ControlName": "ImageHeaderControl", "ControlType": 4, "DataContext": { "ImageControlSize": 12, "ImageSourceType": 3, "ImageSource": "#315f7e", "CaptionText": "", "Title": "This my test Title", "Subtitle": "this is my test subtitle", "Author": null, "PublishDate": null, "__type": "ImageHeaderControlDataContext" }, "__type": "ControlData" }, "cid1440425091725242595": { "IsInternalControl": true, "ControlName": "RichTextControl", "ControlType": 0, "Version": "1.0", "DataContext": { "Subtype": 1, "Value": "<p>How about them yankees?<\/p>", "NoDefaultValue": false, "__type": "TextControlDataContext" }, "__type": "ControlData" } }, "ControlMap": { "Rows": [ { "Columns": [ { "ControlId": "cid1440425091645779245", "HasChildren": false } ] }, { "Columns": [ { "HasChildren": false, "ControlId": "cid1440425091725242595" } ] } ], "GridSize": 12, "__type": "ControlMap" }, "__type": "PersistedPostModel" }
The drawback from a search perspective is that the only real metadata you have on a Delve article is the Title and the Author, as all the other metadata is hidden inside the file blob itself. Using the SharePoint 2013 Query Tool (with a source fix as it broke on some weird managed property) I get the following list of managed properties which has retrievable data, nothing much fun really. Which means that if you want to show anything else, you need to get the file blob and parse out the values you want – unless Microsoft decides to do something special for the Delve articles.
Rank | 5.33526802062988 |
DocId | 122461335 |
Author | Mikael Svenson |
AuthorOWSUSER | mikael.svenson@puzzlepart.com | Mikael Svenson | 693A30232E667C6D656D626572736869707C6D696B61656C2E7376656E736F6E4070757A7A6C65706172742E636F6D i:0#.f|membership|mikael.svenson@puzzlepart.com |
ContentSource | SharePoint Content |
ContentType | application/octet-stream |
Story Page | |
ContentTypeId | 0x010100DA3A7E6E3DB34DFF8FDEDE1F4EBAF95D004890E830D755C34E892BBFBB1B1C2D04 |
CrawlTime | 2015-08-25T05:53:20.0000000Z |
Created | 2015-08-24T14:04:53.0000000Z |
CreatedBy | Mikael Svenson |
CreatedOWSDATE | 2015-08-24T14:04:53Z |
DefaultEncodingURL | https://pzlcloud.sharepoint.com/portals/personal/mikaelsvenson/pPg/This-my-test-Title.pointpub |
DetectedLanguage | en |
DetectedLanguageRanking | 9 |
DiscoveredTime | 2015-08-24T14:07:29.5100000Z |
DisplayAuthor | Mikael Svenson |
DocumentSignature | -7627236096027894607;26358137872471357;-7495234929293607372;72597403516975385;7658639472829065416;-26002263360039820 |
EditorOWSUSER | mikael.svenson@puzzlepart.com | Mikael Svenson | 693A30232E667C6D656D626572736869707C6D696B61656C2E7376656E736F6E4070757A7A6C65706172742E636F6D i:0#.f|membership|mikael.svenson@puzzlepart.com |
ExcludeFromSummary | PointPublishing.aspx |
FallbackLanguage | 1044 |
FileExtension | aspx |
FileType | txt |
Filename | This-my-test-Title.pointpub |
HostingPartition | e03b5249-1555-4b59-ba09-cfc385668865 |
IndexDocId | 122461335 |
InternalFileType | 5 |
IsContainer | FALSE |
IsDocument | TRUE |
IsExternalContent | FALSE |
LastModifiedTime | 2015-08-25T05:51:29.0000000Z |
ListID | {01c5a207-be05-49b2-84e0-a61b747b159b} |
ListItemID | 1 |
MetadataAuthor | Mikael Svenson |
ModifiedBy | Mikael Svenson |
ModifiedOWSDATE | 2015-08-25T05:51:29Z |
OriginalPath | https://pzlcloud.sharepoint.com/portals/personal/mikaelsvenson/_layouts/15/PointPublishing.aspx?storyid=1 |
ParentLink | https://pzlcloud.sharepoint.com/portals/personal/mikaelsvenson/pPg/Forms/AllItems.aspx |
Path | https://pzlcloud.sharepoint.com/portals/personal/mikaelsvenson/_layouts/15/PointPublishing.aspx?storyid=1 |
People | mikael.svenson@puzzlepart.com | Mikael Svenson | 693A30232E667C6D656D626572736869707C6D696B61656C2E7376656E736F6E4070757A7A6C65706172742E636F6D i:0#.f|membership|mikael.svenson@puzzlepart.com;Mikael Svenson |
PhoneNumber | 41219241873 41219241873 1873 1873 3 3 |
PrivacyIndicator | 2 |
ReplyCount | 0 |
SPSiteURL | https://pzlcloud.sharepoint.com/portals/personal/mikaelsvenson |
SPVersion | 15 |
SPWebUrl | https://pzlcloud.sharepoint.com/portals/personal/mikaelsvenson |
SecondaryFileExtension | pointpub |
SecurityId | {94F39EFE-98B0-4D29-BEC0-A645FD881A2E} |
SiteID | {6cc3ffd8-9ce5-48bd-9c17-5348289818b3} |
SitePath | https://pzlcloud.sharepoint.com/portals/personal/mikaelsvenson/_layouts/15/;com.sharepoint.pzlcloud./portals/personal/mikaelsvenson/_layouts/15/ |
SiteTemplate | POINTPUBLISHINGPERSONAL |
SiteTemplateId | 66 |
SiteTitle | mikael.svenson |
Size | 1075 |
Title | This my test Title |
UIVersionStringOWSTEXT | 2.0 |
UniqueID | {46513057-F77F-4318-829A-977431AA0FE5} |
UrlDepth | 6 |
ViewableByAnonymousUsers | FALSE |
ViewableByExternalUsers | FALSE |
WebApplicationId | {72d57e48-4036-4947-a6a7-586f689d4b2e} |
WebId | {0384AFA3-4DF8-42E9-A979-A2BDE05618A2} |
contentclass | STS_ListItem_DocumentLibrary |
encoding | System.Text.UTF8Encoding |
language | en |
languages | en |
owsPeople | mikael.svenson@puzzlepart.com | Mikael Svenson | 693A30232E667C6D656D626572736869707C6D696B61656C2E7376656E736F6E4070757A7A6C65706172742E636F6D i:0#.f|membership|mikael.svenson@puzzlepart.com |
owstaxIdSPLocationInfo | https://pzlcloud.sharepoint.com/portals/personal/mikaelsvenson|{01c5a207-be05-49b2-84e0-a61b747b159b}|1 |
owstaxIdSPLocationList | {01c5a207-be05-49b2-84e0-a61b747b159b} |
owstaxIdSPLocationSite | https://pzlcloud.sharepoint.com/portals/personal/mikaelsvenson |
PartitionId | e03b5249-1555-4b59-ba09-cfc385668865 |
UrlZone | 0 |
Culture | en-US |
ResultTypeId | 1447 |
RenderTemplateId | ~sitecollection/_catalogs/masterpage/Display Templates/Search/Item_Default.js |
piSearchResultId | 0_1 |