Everything began from nothing.

Showing posts with label Architecture. Show all posts
Showing posts with label Architecture. Show all posts

Monday, 20 February 2017

SharePoint 2013 Base Types , List Template & Definitions Id, CT id



list of the IDs of the most common Base Types, List Definitions and Content Types. Especially useful if you’re writing CAML definitions of Lists, List Instances, or Content Types. Here are the lists I’ve gleaned from MSDN.

Base Types

These Base Types come from the SPBaseType enumeration.
Base TypeID
Custom List0
Document Library1
Not used2
Obsolete. Use 0 for discussion boards.3
Surveys4
Issues List5

List Definitions

These List Definitions come from the SPListTemplateType enumeration.
Enumeration NameDescriptionID
InvalidTypeNot used-1
NoListTemplateunspecified list type0
GenericListCustom list100
DocumentLibraryDocument library101
SurveySurvey102
LinksLinks103
AnnouncementsAnnouncements104
ContactsContacts105
EventsCalendar106
TasksTasks107
DiscussionBoardDiscussion board108
PictureLibraryPicture library109
DataSourcesData sources for a site110
WebTemplateCatalogSite template gallery111
UserInformationUser Information112
WebPartCatalogWeb Part gallery113
ListTemplateCatalogList Template gallery114
XMLFormXML Form library115
MasterPageCatalogMaster Page gallery116
NoCodeWorkflowsNo Code Workflows117
WorkflowProcessCustom Workflow Process118
WebPageLibraryWiki Page Library119
CustomGridCustom grid for a list120
SolutionCatalogSolutions121
NoCodePublicNo Code Public Workflow122
ThemeCatalogThemes123
DataConnectionLibraryData connection library for sharing information about external data connections130
WorkflowHistoryWorkflow History140
GanttTasksProject Tasks150
MeetingsMeeting Series (Meeting)200
AgendaAgenda (Meeting)201
MeetingUserAttendees (Meeting)202
DecisionDecisions (Meeting)204
MeetingObjectiveObjectives (Meeting)207
TextBoxText Box (Meeting)210
ThingsToBringThings To Bring (Meeting)211
HomePageLibraryWorkspace Pages (Meeting)212
PostsPosts (Blog)301
CommentsComments (Blog)302
CategoriesCategories (Blog)303
FacilityFacility402
WhereaboutsWhereabouts403
CallTrackCall Track404
CirculationCirculation405
TimecardTimecard420
HolidaysHolidays421
IMEDicIME (Input Method Editor) Dictionary499
ExternalListExternal600
IssueTrackingIssue tracking1100
AdminTasksAdministrator Tasks1200
HealthRulesHealth Rules1220
HealthReportsHealth Reports1221

Content Types

These content types come from the Content Type ID list.
Content TypeID
System0x
Item0x01
Document0x0101
Event0x0102
Issue0x0103
Announcement0x0104
Link0x0105
Contact0x0106
Message0x0107
Task0x0108
Workflow History0x0109
Post0x0110
Comment0x0111
East Asia Contact0x0116
Folder0x0120

Friday, 17 February 2017

SharePoint XSN provisionning with WSP

it's not very simple to package a form xsn in the wsp solution, specialy if you want to do a provisionning.


You probably tried to use something like:
1 <elements xmlns="http://schemas.microsoft.com/sharepoint/">
2    <module name="DefaultForms" rootwebonly="FALSE" url="Lists/Forms">
3      <file path="DefaultForms\TestForm.xsn" type="GhostableInLibrary" url="TestForm.xsn"/>
4    </module>
5 </elements>

But if you just put the XSN files in a module and deploy it to a Form-library like this, or just upload the xsn file to the library, the Info Path form will not be able to render (error: form is not browser enabled).
What you have to do to fix this is adding some extra properties:
 1 <elements xmlns="http://schemas.microsoft.com/sharepoint/">
 2   <module 
 3        name="DefaultFormulieren" 
 4        rootwebonly="FALSE" 
 5        url="Lists/Forms">
 6      <file path="DefaultForms\myform.xsn" 
 7            type="GhostableInLibrary" url="TestForm.xsn">
 8        <property name="ContentTypeId"
 9                  value="XXXXXXXXXXXXXXXXXXXXXXXXXXX"/>
10        <property name="ContentType" value="Form"/>
11        <property name="vti_contenttag" type="string" 
12                  value="{xxxxxxxxxxxxxxxxxxxxxxxxx},2,1"/>
13        <property name="ipfs_streamhash" type="string"
14                  value="u+Z+9oSpboLO+KfE7V3NmgN0DfxlgCQB0/R8/S3pVBM="/>   

15      </file>
16   </module>
17 </elements>

  • ContentTypeId and ContentType are self explaining, but how to find the vti_contenttag and ipfs_streamhash?

  1.  open the form in InfoPath-designer and publish it to a SharePoint site.
  2.  create a WSP from the existing site.


If it’s a publishing site you cannot in a normal way access the ‘save site as template’ page. So you should browse to / _layouts/savetmpl.aspx. There's no shame in doing this (or in forgetting), just remeber that it's hidden for a reason!


Make sure ‘Include content’ is selected.
Download the WSP and rename to .cab
Now you can extract this file with (for example) winrar.
Browse to the just extracted files. 

Open the Modules folder
Under 'files' you’ll find the XSN file (under a subfolder with the name of the library), I always use this file to be absolutely sure it’s exactly the same as when a user publishes the original XSN with infopath.

Go back to the root folder of your extracted WSP and open the 'propertybag' folder.
In this folder open the elements.xml. 

Find the File tag for your XSN file. (just search for .xsn).

Here you’ll find the vti_contenttag and ipfs_streamhash values. You can just add these to your module, since SharePoint itself figures out if values are fields or need to be set to the propertybag.