Ashley
Blog - Robert Bogue [MVP]
Rob's Notebook
SharePoint Calendar
Thor Projects LLC - Welcome : Blog - Robert Bogue [MVP]
Friday, July 03, 2009

Andrew Connell, Indianapolis, August 26th: Building High Performance Features and Solutions on Microsoft Office SharePoint Server 2007

I'm happy to announce that Andrew Connell of Critical Path Training has agreed to come to Indianapolis on August 26th (2009) to deliver his "world famous" session "Building High Performance Features and Solutions on Microsoft Office SharePoint Server 2007" to the SharePoint Users Group of Indiana (SPIN). If you've ever seen Andrew speak at a conference (Microsoft TechEd, SharePoint Connections, etc.) you know this will be a great presentation filled with tons of real world advice from the work Andrew has done with clients on large scale deployments of SharePoint. Andrew is perhaps best known for his Web Content Management expertise in the SharePoint platform but he's also a powerful developer. Andrew and I worked together with Paul Andrew on http://www.mssharepointdeveloper.com/ where any ASP.NET developer can get 10 sessions on the basics of developing for SharePoint for free.

The abstract he provided for this session is:

"Performance should be one of the top areas of focus on everyone's mind when embarking on a Internet facing Microsoft Office Server 2007 site. In this session we'll look at the built-in caching capabilities in the SharePoint platform, including disk-based and page output caching. In addition we'll take a look at various hot-button issues developers should be aware of when developing components for a public site built on MOSS 2007. Topics include object model techniques, how to properly manage memory in order to avoid the dreaded OutOfMemory exception, key sizing numbers to keep in mind when architecting your implementation and minimizing the page payload to speed up those page load times. After this session, you'll be armed with the power to create high performance and scalable solutions in MOSS 2007!"

If you're within three hours driving distance or so of Indianapolis I'd highly recommend you attend this meeting. The registration url is: http://spinaug.eventbrite.com/. The doors will open at 5:30 PM and the meeting will start at 6:00 PM. We've moved from our normal venue to accommodate a larger than normal attendance -- however, we recommend that you sign up early to make sure that you get your seat at this special event.


Categories: Professional | 0 Comments
 
Friday, June 19, 2009

MOSS 2007 Field Guids, Internal Names, Display Names, and Types

On a project I'm currently working on I needed to do some translations between Guids, Internal names, and display names for some of the out of the box fields so I generated a quick tool that would dump the fields out with their GUIDs so I could do the translation quickly. The output is below for those who might find it handy.

GUID

Internal Name

Display Name

Type

246d0907-637c-46b7-9aa0-0bb914daa832

_Author

Author

Text

0fc9cace-c5c2-465d-ae88-b67f2964ca93

_Category

Category

Text

58014f77-5463-437b-ab67-eec79532da67

_CheckinComment

Check In Comment

Lookup

52578fc3-1f01-4f4d-b016-94ccbcf428cf

_Comments

Comments

Note

370b7779-0344-4b9f-8f2d-dc1c62eae801

_Contributor

Contributor

Note

6b4e226d-3d88-4a36-808d-a129bf52bccf

_CopySource

Copy Source

Text

3b1d59c0-26b1-4de6-abbd-3edb4e2c6eca

_Coverage

Coverage

Text

9f8b4ee0-84b7-42c6-a094-5cbde2115eb9

_DCDateCreated

Date Created

DateTime

810dbd02-bbf5-4c67-b1ce-5ad7c5a512b2

_DCDateModified

Date Modified

DateTime

2ea78cef-1bf9-4019-960a-02c41636cb47

_EditMenuTableEnd

Edit Menu Table End

Computed

3c6303be-e21f-4366-80d7-d6d0a3b22c7a

_EditMenuTableStart

Edit Menu Table Start

Computed

8a121252-85a9-443d-8217-a1b57020fadf

_EndDate

End Date

DateTime

36111fdd-2c65-41ac-b7ef-48b9b8da4526

_Format

Format

Text

26d0756c-986a-48a7-af35-bf18ab85ff4a

_HasCopyDestinations

Has Copy Destinations

Boolean

3c76805f-ad45-483a-9c85-7ac24506ce1a

_Identifier

Resource Identifier

Text

c101c3e7-122d-4d4d-bc34-58e94a38c816

_IsCurrentVersion

Is Current Version

Boolean

b835f7c6-88a0-45d5-80c9-7ab4b2888b2b

_LastPrinted

Last Printed

DateTime

43bdd51b-3c5b-4e78-90a8-fb2087f71e70

_Level

Level

Integer

34ad21eb-75bd-4544-8c73-0e08330291fe

_ModerationComments

Approver Comments

Note

fdc3b2ed-5bf2-4835-a4bc-b885f3396a61

_ModerationStatus

Approval Status

ModStat

1020c8a0-837a-4f1b-baa1-e35aff6da169

_Photo

Contact Photo

URL

2eedd0ae-4281-4b77-99be-68f8b3ad8a7a

_Publisher

Publisher

Text

75bed596-0661-4edd-9724-1d607ab8d3b5

_PublishingMigratedGuid

Migrated GUID

Guid

5e75c854-6e9d-405d-b6c1-f8725bae5822

_Relation

Relation

Note

edecec70-f6e2-4c3c-a4c7-f61a515dfaa9

_ResourceType

Resource Type

Text

16b4ab96-0ce5-4c82-a836-f3117e8996ff

_Revision

Revision

Text

ada3f0cb-6f95-4588-bb08-d97cc0623522

_RightsManagement

Rights Management

Note

034998e9-bf1c-4288-bbbd-00eacfc64410

_SharedFileIndex

Shared File Index

Text

b0a3c1db-faf1-48f0-9be1-47d2fc8cb5d6

_Source

Source

Note

c63a459d-54ba-4ab7-933a-dcf1c6fadec2

_SourceUrl

Source Url

Text

1dab9b48-2d1a-47b3-878c-8e84f0d211ba

_Status

Status

Choice

7841bf41-43d0-4434-9f50-a673baef7631

_UIVersion

UI Version

Integer

dce8262a-3ae9-45aa-aab4-83bd75fb738a

_UIVersionString

Version

Text

78be84b9-d70c-447b-8275-8dcd768b6f92

_Version

Version

Text

b0b3407e-1c33-40ed-a37c-2430b7a5d081

ActualWork

Actual Work

Number

7b016ee5-70aa-4abb-8aa3-01795b4efe6f

AdminTaskAction

Action

URL

93490584-b6a8-4996-aa00-ead5f59aae0d

AdminTaskDescription

Description

Text

cf935cc2-a00c-4ad3-bca1-0865ab15afc1

AdminTaskOrder

Order

Number

9d76802c-13c4-484a-9872-d7f9641c4672

Anniversary

Anniversary

DateTime

d3429cc9-adc4-439b-84a8-5679070f84cb

ArticleByLine

Byline

Text

71316cea-40a0-49f3-8659-f0cefdbdbd4f

ArticleStartDate

Article Date

DateTime

53101f38-dd2e-458c-b245-0c236cc13d1a

AssignedTo

Assigned To

User

f55de332-074e-4e71-a71a-b90abfad51ae

AssistantNumber

Assistant's Phone

Text

2aea194d-e399-4f05-95af-94f87b1f2687

AssistantsName

Assistant's Name

Text

67df98f4-9dec-48ff-a553-29bece9c5bf4

Attachments

Attachments

Attachments

3329f39d-70ed-4858-b8c8-c5237634bf08

AttendeeStatus

Response

Choice

61cbb965-1e04-4273-b658-eedaa662f48d

Audience

Target Audiences

TargetTo

1df5e554-ec7e-46a6-901d-d85a3881cb18

Author

Created By

User

e977ed93-da24-4fcc-b77d-ac34eea7288f

AutomaticUpdate

Automatic Update

Boolean

96226eed-ec6f-4f0e-add5-9cfe66a441a0

AutoUpdate

Auto Update

Boolean

e9359d15-261b-48f6-a302-01419a68d4de

BaseAssociationGuid

Base Association Guid

Text

7615464b-559e-4302-b8e2-8f440b913101

BaseName

Name

Computed

4f03f66b-fb1e-4ed2-ab8e-f6ed3fe14844

BillingInformation

Billing Information

Text

c4c7d925-bc1b-4f37-826d-ac49b4fb1bc1

Birthday

Birthday

DateTime

7662cd2c-f069-4dba-9e35-082cf976e170

Body

Body

Note

c7e9537e-bde4-4923-a100-adbd9e0a0a0d

BodyAndMore

Post

Computed

af82aa75-3039-4573-84a8-73ffdfd22733

BodyWasExpanded

Body Was Expanded

Computed

6547d03a-76d3-4d74-9d34-f51b837c0879

Business2Number

Business Phone 2

Text

344e9657-b17f-4344-a834-ff7c056bcc5e

CallbackNumber

Callback Number

Text

92a011a9-fd1b-42e0-b6fa-afcfee1928fa

CarNumber

Car Phone

Text

9ebcd900-9d05-46c8-8f4d-e46e87328844

Categories

Categories

Text

6df9bd52-550e-4a30-bc31-a4366832a87d

Category

Category

Choice

2a464df1-44c1-4851-949d-fcd270f0ccf2

CellPhone

Mobile Phone

Text

3881510a-4e4a-4ee8-b102-8ee8e2d0dd4b

CheckoutUser

Checked out User

User

6440b402-8ec5-4d7a-83f4-afccb556b5cc

ChildrensNames

Children's Names

Text

e52012a0-51eb-4c0c-8dfb-9b8a0ebedcb6

Combine

Merge

Computed

6df9bd52-550e-4a30-bc31-a4366832a87f

Comment

Description

Note

9da97a8a-1da5-4a77-98d3-4bc10456e700

Comments

Comments

Note

038d1503-4629-40f6-adaf-b47d1ab2d4fe

Company

Company

Text

27cb1283-bda2-4ae8-bcff-71725b674dbb

CompanyNumber

Company Main Phone

Text

034aae88-6e9a-4e41-bc8a-09b6c15fcdf4

CompanyPhonetic

Company Phonetic

Text

35363960-d998-4aad-b7e8-058dfe2c669e

Completed

Completed

Boolean

86a78395-c8ad-429e-abff-be09417b523e

ComputerNetworkName

Computer Network Name

Text

939dfb93-3107-44c6-a98f-dd88dca3f8cf

ConnectionType

Connection Type

Choice

3a4b7f98-8d14-4800-8bf5-9ad1dd6a82ee

ContentCategory

Content Category

Choice

c042a256-787d-4a6f-8a8a-cf6ab767f12d

ContentType

Content Type

Text

03e45e84-1992-4d42-9116-26f756012634

ContentTypeId

Content Type ID

ContentTypeId

b0204f69-2253-43d2-99ad-c0df00031b66

CorrectBodyToShow

Correct Body To Show

Computed

8c06beca-0777-48f7-91c7-6da68bc07b69

Created

Created

DateTime

4dd7e525-8d6b-4cb4-9d3e-44ee25f973eb

Created_x0020_By

Document Created By

Text

998b5cff-4a35-47a7-92f3-3914aa6aa4a2

Created_x0020_Date

Created

Lookup

58eb8694-8bd6-4f98-8097-374bd97ffec4

CustomContentTypeId

Content Type ID

Text

81368791-7cbc-4230-981a-a7669ade9801

CustomerID

Custom ID Number

Text

38269294-165e-448a-a6b9-f0e09688f3f9

Data

Data

Note

a9ea6e2d-bc5c-4ccc-bad8-8ddfe519710f

DataSource

Data Source

URL

24bfa3c2-e6a0-4651-80e9-3db44bf52147

DateCompleted

Date Completed

DateTime

ac3a1092-34ad-42b2-8d47-a79d01d9f516

DecisionStatus

Status

Choice

4ed6dfdf-86a8-4894-bd1b-4fa28042be53

Deleted

Deleted

Boolean

05fdf852-4b64-4096-9b2b-d2a62a86bc59

Department

Department

Text

9730102c-9470-4515-960e-6dfb2d89a68b

DetailLink

Detail Link

URL

59956c56-30dd-4cb1-bf12-ef693b42679c

DiscussionLastUpdated

Last Updated

DateTime

c5abfdc7-3435-4183-9207-3d1146895cf8

DiscussionTitle

Discussion Subject

Computed

f0218b98-d0d6-4fc1-b15b-aabeb89f32a9

DiscussionTitleLookup

Discussion Title

Lookup

dd83a5ed-83c5-47b7-823a-415c6ea1b8a3

DisplayFolder

Display Folder

Text

2fd53156-ff9d-4cc3-b0ac-fe8a7bc82283

DLC_Description

Description

Text

80289bac-fd36-4848-b67a-bc8b5b621ec2

DLC_Duration

Duration

Number

081c6e4c-5c14-4f20-b23e-1a71ceb6a67c

DocIcon

Type

Computed

4d54445d-1c84-4a6d-b8db-a51ded4e1acc

Duration

Duration

Integer

503f1caa-358e-4918-9094-4a2cdc4bc034

Edit

Edit

Computed

d31655d1-1d5b-4511-95a1-7a09e9b75bf2

Editor

Modified By

User

fce16b4c-fe53-4793-aaab-b4892e736d15

EMail

E-Mail

Text

e232d6c8-9f49-4be2-bb28-b90570bcf167

Email2

E-mail 2

Text

8bd27dbd-29a0-4ccd-bcb4-03fe70c538b1

Email3

E-mail 3

Text

8cbb9252-1035-4156-9c35-f54e9056c65a

EmailBody

Email Body

Note

32f182ba-284e-4a87-93c3-936a6585af39

EmailCalendarDateStamp

E-Mail Calendar Date Stamp

DateTime

7a0cb12b-c70c-4f99-99f1-a232783a87d7

EmailCalendarSequence

E-Mail Calendar Sequence

Integer

f4e00567-8a9d-451b-82d4-a4447f9bd9a5

EmailCalendarUid

E-Mail Calendar UID

Note

a6af6df4-feb5-4dbf-bef6-d81230d4a071

EmailCc

E-Mail Cc

Note

e7cb6f60-f676-4b1d-89a3-975b6bc78cad

EmailFrom

E-Mail From

Text

124527a9-fc10-48ff-8d44-960a7db405f8

EmailReferences

References

Note

4ce600fb-a927-4911-bfc1-11076b76b522

EmailSender

E-Mail Sender

Note

072e9bb6-a643-44ce-b6fb-8b574a792556

EmailSubject

E-Mail Subject

Text

caa2cb1e-a124-4068-9496-14feef1a901f

EmailTo

E-Mail To

Note

b9e6f3ae-5632-4b13-b636-9d1a2bd67120

EncodedAbsThumbnailUrl

Thumbnail URL

Computed

7177cfc7-f399-4d4d-905d-37dd51bc90bf

EncodedAbsUrl

Encoded Absolute URL

Computed

a1ca0063-779f-49f9-999c-a4a2e3645b07

EncodedAbsWebImgUrl

Web Image URL

Computed

2684f9f2-54be-429f-ba06-76754fc056bf

EndDate

End Time

DateTime

20a1a5b1-fddf-4420-ac68-9701490e09af

Event

Event Type

Integer

b8bbe503-bb22-4237-8d9e-0587756a2176

EventCanceled

Event Canceled

Boolean

5d1d4e76-091a-4e03-ae83-6a59847731c0

EventType

Event Type

Integer

6a09e75b-8d17-4698-94a8-371eda1af1ac

Expires

Expires

DateTime

1c5518e2-1e99-49fe-bfc6-1a8de3ba16e2

ExtendedProperties

Extended Properties

Note

7d95d1f4-f5fd-4a70-90cd-b35abc9b5bc8

fAllDayEvent

All Day Event

AllDayEvent

8fca95c0-9b7d-456f-8dae-b41ee2728b85

File_x0020_Size

File Size

Lookup

39360f11-34cf-4356-9945-25c44e68dade

File_x0020_Type

File Type

Text

56605df6-8fa1-47e4-a04c-5b384d59609f

FileDirRef

Path

Lookup

8553196d-ec8d-4564-9861-3dbe931050c8

FileLeafRef

Name

File

94f89715-e097-4e8b-ba79-ea02aa8b7adb

FileRef

URL Path

Lookup

78a07ba4-bda8-4357-9e0f-580d64487583

FileSizeDisplay

File Size

Computed

c53a03f3-f930-4ef2-b166-e0f2210c13c0

FileType

File Type

Computed

4a722dd4-d406-4356-93f9-2550b8f50dd0

FirstName

First Name

Text

ea8f7ca9-2a0e-4a89-b8bf-c51a6af62c73

FirstNamePhonetic

First Name Phonetic

Text

e9df93f4-7951-474b-8cc4-e240c2f5e600

FormattedGoal

Formatted indicator goal

Text

3366aae9-30a9-43f5-a2cb-1a6ee44e2ce4

FormattedValue

Formatted indicator value

Text

f53d350d-854e-4962-9318-89d56d30773a

FormattedWarning

Formatted indicator warning

Text

65572d4d-445a-43f1-9c77-3358222a2c93

FormCategory

Form Category

Text

78eae64a-f5f2-49af-b416-3247b76f46a1

FormData

Form Data

Note

1fff255c-6c88-4a76-957b-ae24bf07b78c

FormDescription

Form Description

Text

1a03fa74-8c63-40cc-bd06-73b580bd8744

FormId

Form ID

Text

96c27c9d-33f5-4f8e-893e-684014bc7090

FormLocale

Form Locale

Text

66b691cf-07a3-4ca6-ac6d-27fa969c8569

FormName

Form Name

Text

467e811f-0c12-4a93-bb04-42ff0c1c597c

FormRelativeUrl

Form Relative Url

Text

17ca3a22-fdfe-46eb-99b5-9646baed3f16

FormURN

Form_URN

Text

94ad6f7c-09a1-42ca-974f-d24e080160c2

FormVersion

Form Version

Text

f2e63656-135e-4f1c-8fc2-ccbe74071901

fRecurrence

Recurrence

Recurrence

30bb605f-5bae-48fe-b4e3-1f81d9772af9

FSObjType

Item Type

Lookup

d733736e-4204-4812-9565-191567b27e33

FTPSite

FTP Site

URL

9c4be348-663a-4172-a38a-9714b2634c17

FullBody

FullBody

Computed

475c2610-c157-4b91-9e2d-6855031b3538

FullName

Full Name

Text

23550288-91b5-4e7f-81f9-1a92661c4838

Gender

Gender

Choice

6e4b3aad-350d-42fa-bd61-d1de715b45db

Goal

KPI Goal Threshold

Number

4181b96a-3125-4f75-b823-3a4d675c6b19

GoalCell

Goal Cell

Text

20906227-d1c8-430c-989a-30a62e3e40b2

GoalFromWorkBook

Goal from workbook

Boolean

69ac2b6e-f626-49b4-b0cc-c2b9580e8719

GoalSheet

Goal Sheet

Text

da31d3c9-f9da-4c35-88d4-60aafa4c3f19

GovernmentIDNumber

Government ID Number

Text

c86a2f7f-7680-4a0b-8907-39c4f4855a35

Group

Group Type

Integer

ae069f25-3ac2-4256-b9c3-15dbc15da0e0

GUID

GUID

Guid

47f68c3b-8930-406f-bde2-4a8c669ee87c

HasCustomEmailBody

Has Custom Email Body

Boolean

a932ec3f-94c1-48b1-b6dc-41aaa6eb7e54

HeaderStyleDefinitions

Style Definitions

HTML

203fa378-6eb8-4ed9-a4f9-221a4c1fbf46

Hobbies

Hobbies

Text

8c5a385d-2fff-42da-a4c5-f6a904f2e491

Home2Number

Home Phone 2

Text

5aeabc56-57c6-4861-bc12-bd72c30fc6bd

HomeAddressCity

Home Address City

Text

897ecfd7-4293-4782-b463-bd68440a5fed

HomeAddressCountry

Home Address Country

Text

c0e4b4c6-6245-4846-8561-b8c6c01fefc1

HomeAddressPostalCode

Home Address Postal Code

Text

f5b36006-69b0-418c-bd4a-f25ca7e096bb

HomeAddressStateOrProvince

Home Address State Or Province

Text

8c66e340-0985-4d68-af03-3050ece4862b

HomeAddressStreet

Home Address Street

Text

c189a857-e6b0-488f-83a0-f4ee0a3ad01e

HomeFaxNumber

Home Fax

Text

2ab923eb-9880-4b47-9965-ebf93ae15487

HomePhone

Home Phone

Text

0c5e0085-eb30-494b-9cdd-ece1d3c649a2

HTML_x0020_File_x0020_Type

HTML File Type

Text

1d22ea11-1e32-424e-89ab-9fedbadb6ce1

ID

ID

Counter

4cbd96f7-09c6-4b5e-ad42-1cbe123de63a

IMAddress

IM Address

Text

a5d2f824-bc53-422e-87fd-765939d863a5

ImageCreateDate

Date Picture Taken

DateTime

1944c034-d61b-42af-aa84-647f2e74ca70

ImageHeight

Picture Height

Integer

922551b8-c7e0-46a6-b7e3-3cf02917f68a

ImageSize

Picture Size

Computed

7e68a0f9-af76-404c-9613-6f82bc6dc28c

ImageWidth

Picture Width

Integer

f6df49ec-807b-4d40-a7da-a17684121f92

IncludeHierarchy

Include child indicators

Boolean

26c4f53e-733a-4202-814b-377492b6c841

Indentation

Indentation

Computed

68227570-72dd-4816-b6b6-4b81ff99a393

IndentLevel

Indentation Level

Computed

7a282f86-69d9-40ff-ae1c-c746cf21256b

Initials

Initials

Text

50a54da4-1528-4e67-954a-e2d24f1e9efb

InstanceID

Instance ID

Integer

af5036db-36f4-46c8-bde7-a677bd0ef280

IsActive

Is Active

Boolean

a579062a-6c1d-4ad3-9d5e-035f9f2c1882

ISDNNumber

ISDN

Text

bd2216c1-a2f3-48c0-b21c-dc297d0cc658

IsRootPost

Is Root Post

Computed

9ba260b2-85a1-4a32-ad7a-63eaceffe6b4

IsSiteAdmin

Is Site Admin

Boolean

3f277a5c-c7ae-4bbe-9d44-0456fb548f94

IssueStatus

Issue Status

Choice

92b8e9d0-a11b-418f-bf1c-c44aaa73075d

Item

Primary Item ID

Integer

b824e17e-a1b3-426e-aecf-f0184d900485

ItemChildCount

Replies

Lookup

c4e0f350-52cc-4ede-904c-dd71a3d11f7d

JobTitle

Job Title

Text

b66e9b50-a28e-469b-b1a0-af0e45486874

Keywords

Keywords

Note

291aacda-4cfb-4d59-968b-5e2ea0c9eab7

KPI

KPI

Text

0121cb2b-4515-44f2-9d5a-0dcb3bf556aa

KpiComments

KPI Comments

Note

249a1c1a-5a3e-4173-abad-779b01892510

KpiDescription

KPI Description

Note

3c497036-038f-41db-aec7-c9849649b135

KpiStatus

KPI Status

Number

d81529e8-384c-4ca6-9c43-c86a256e6a44

Language

Language

Choice

173f76c8-aebd-446a-9bc9-769a2bd2c18f

Last_x0020_Modified

Modified

Lookup

fdc8216d-dabf-441d-8ac0-f6c626fbdc24

LastNamePhonetic

Last Name Phonetic

Text

fd3e3a59-bf10-4c99-b678-5dd7fcc6cb28

LastUpdated

Most recent indicator data update

DateTime

076193bd-865b-4de7-9633-1f12069a6fff

LessLink

Less Link

Computed

61b97279-cbc0-4aa9-a362-f1ff249c1706

LimitedBody

Limited Body

Computed

46045bc4-283a-4826-b3dd-7a78d790b266

LinkDiscussionTitle

Subject

Computed

3ac9353f-613f-42bd-98e1-530e9fd1cbf6

LinkDiscussionTitleNoMenu

Subject

Computed

5cc6dc79-3710-4374-b433-61cb4a686c12

LinkFilename

Name

Computed

9d30f126-ba48-446b-b8f9-83745f322ebe

LinkFilenameNoMenu

Name

Computed

03f89857-27c9-4b58-aaab-620647deda9b

LinkIssueIDNoMenu

Issue ID

Computed

1a03fa74-8c63-40cc-bd06-73b580bd8743

LinkTemplateName

Form Name

Computed

82642ec8-ef9b-478f-acf9-31f7d45fbc31

LinkTitle

Title

Computed

bc91a437-52e7-49e1-8c4e-4698904b2b6d

LinkTitleNoMenu

Title

Computed

f44e428b-61c8-4100-a911-a3a635f43bb5

List

List ID

Guid

288f5f32-8462-4175-8f09-dd7ba29359a9

Location

Location

Text

56747800-d36e-4625-abe3-b1bc74a7d5f8

LowerValuesAreBetter

Lower values are better

Boolean

ba934502-d68d-4960-a54b-51e15fef5fd3

ManagersName

Manager's Name

Text

9b2bed84-7769-40e3-9b1d-7954a4053834

MasterSeriesItemID

MasterSeriesItemID

Integer

fbba993f-afee-4e00-b9be-36bc660dcdd1

MessageBody

Body

Computed

2ef29342-2f5f-4052-90d3-8192e0705e51

MessageId

Message ID

Text

687c7f94-686a-42d3-9b67-2782eac4b4f8

MetaInfo

Property Bag

Lookup

418c8d29-6f2e-44c3-8955-2cd7ec3e2151

MiddleName

Middle Name

Text

3126c2f1-063e-4892-828f-0696ec6e105f

Mileage

Mileage

Text

28cf69c5-fa48-462a-b5cd-27b6f9d2bd5f

Modified

Modified

DateTime

822c78e3-1ea9-4943-b449-57863ad33ca9

Modified_x0020_By

Document Modified By

Text

fb6c2494-1b14-49b0-a7ca-0506d6e85a62

MoreLink

More Link

Computed

bfc6f32c-668c-43c4-a903-847cca2f9b3c

Name

Account

Text

76d1cc87-56de-432c-8a2a-16e5ba5331b3

NameOrTitle

Name

Computed

6b0a2cd7-a7f9-41ca-b932-f3bebb603793

Nickname

Nickname

Text

e241f186-9b94-415c-9f66-255ce7f86235

Notes

About Me

Note

5602dc33-a60a-4dec-bd23-d18dfcef861d

Occurred

Date Occurred

DateTime

26169ab2-4bd2-4870-b077-10f49c8a5822

Office

Office

Text

16b6952f-3ce6-45e0-8f4e-42dac6e12441

OffsiteParticipant

External Participant

Text

4a799ba5-f449-4796-b43e-aa5186c3c414

OffsiteParticipantReason

External Participant Reason

Text

c814b2cf-84c6-4f56-b4a4-c766938a97c5

ol_Department

Department

Text

493896da-0a4f-46ec-a68e-9cfd1a5fc19b

ol_EventAddress

Event Address

Text

ca4addac-796f-4b23-b093-d2a3f65c0774

Order

Order

Number

0850ae15-19dd-431f-9c2f-3aff3ae292ce

OrganizationalIDNumber

Organizational ID Number

Text

90fa9a8e-aac0-4828-9cb4-78f98416affa

OtherAddressCity

Other Address City

Text

3c0e9e00-8fcc-479f-9d8d-3447cda34c5b

OtherAddressCountry

Other Address Country

Text

0557c3f8-60c4-4dfb-b5ba-bf3c4e4386b1

OtherAddressPostalCode

Other Address Postal Code

Text

f45883bc-8733-4b77-ab5d-43613986aa12

OtherAddressStateOrProvince

Other Address State Or Province

Text

dff5dfc2-e2b7-4a19-bde7-76dabc90a3d2

OtherAddressStreet

Other Address Street

Text

aad15eb6-d7fd-47b8-abd4-adc0fe33a6ba

OtherFaxNumber

Other Fax

Text

96e02495-f428-48bc-9f13-06d98ba58c34

OtherNumber

Other Phone

Text

dcde7b1f-918b-4ed5-819f-9798f8abac37

Outcome

Outcome

Text

d4e44a66-ee3a-4d02-88c9-4ec5ff3f4cd5

owshiddenversion

owshiddenversion

Integer

f79bf074-daf7-4c06-a314-15b287fdf4c9

PagerNumber

Pager

Text

a9ec25bf-5a22-4658-bd19-484e52efbe1a

ParentFolderId

Parent Folder Id

Integer

1be428c8-2c2d-4e02-970b-6663eb1d7080

ParentId

Parent ID

Number

774eab3a-855f-4a34-99da-69dc21043bec

ParentLeafName

Source Name (Converted Document)

Lookup

28081524-7c2f-4f08-9319-9c737b495bc1

ParentName

Report Parent Name

Text

bc1a8efb-0f4c-49f8-a38f-7fe22af3d3e0

ParentVersionString

Source Version (Converted Document)

Lookup

4d2444c2-0e97-476c-a2a3-e9e4a9c73009

PendingModTime

Pending Modification Time

DateTime

d2311440-1ed6-46ea-b46d-daa643dc3886

PercentComplete

% Complete

Number

d43e8a19-f4f3-4e6a-b8c1-02e972c3ed6f

PercentExpression

Percent Expression

Boolean

ba3c27ee-4791-4867-8821-ff99000bac98

PermMask

Effective Permissions Mask

Computed

5aa071d9-3254-40fb-82df-5cedeff0c41e

PersonalWebsite

Personal Website

URL

adfe65ee-74bb-4771-bec5-d691d9a6a14e

PersonImage

Posted By

Computed

b4ab471e-0262-462a-8b3f-c1dfc9e2d5fd

PersonViewMinimal

Posted By

Computed

d9339777-b964-489a-bf09-2ac3c3fe5f0d

Picture

Picture

URL

38bea83b-350a-1a6e-f34a-93a6af31338b

PostCategory

Category

Lookup

bd716b26-546d-43f2-b229-62699581fa9f

Preview

Web Preview

Computed

8c0d0aac-9b76-4951-927a-2490abe13c0b

PreviewOnForm

Preview

Computed

d69bcc0e-57c3-4f3b-bbc5-b090edf21f0f

PrimaryNumber

Primary Phone

Text

a8eb573e-9e11-481a-a8c9-1104a54b2fbd

Priority

Priority

Choice

f0753a13-44b1-4269-82af-5c34c57b0c67

Profession

Profession

Text

c5c4b81c-f1d9-4b43-a6a2-090df32ebb68

ProgId

ProgId

Lookup

b1b53d80-23d6-e31b-b235-3a286b9f10ea

PublishedDate

Published

DateTime

b510aac1-bba3-4652-ab70-2d756c29540f

PublishingAssociatedContentType

Associated Content Type

ContentTypeIdFieldType

d211d750-4fe6-4d92-90e8-eb16dff196c8

PublishingAssociatedVariations

Variations

LayoutVariationsField

0a90b5e8-185a-4dec-bf3c-e60aae08373f

PublishingAuthenticatedUse

Safe for Authenticated Use

Boolean

18f165be-6285-4a57-b3ab-4e9f913d299f

PublishingCacheability

Cacheability

Choice

773ed051-58db-4ff2-879b-08b21ab001e0

PublishingCacheAllowWriters

Allow writers to view cached content

Boolean

5b4d927c-d383-496b-bc79-1e61bd383019

PublishingCacheCheckForChanges

Check for Changes

Boolean

9550e77a-4d10-464f-bc0c-102d5b1aec42

PublishingCacheDisplayDescription

Display Description

Text

983f490b-fc53-4820-9354-e8de646b4b82

PublishingCacheDisplayName

Display Name

Text

bdd1b3c3-18db-4acf-a963-e70ef4227fbc

PublishingCacheDuration

Duration

Number

d8f18167-7cff-4c4e-bdbe-e7b0f01678f3

PublishingCacheEnabled

Enabled

Boolean

db03cb99-cf1e-40b8-adc7-913f7181dac3

PublishingCachePerformACLCheck

Perform ACL Check

Boolean

aea1a4dd-0f19-417d-8721-95a1d28762ab

PublishingContact

Contact

User

c79dba91-e60b-400e-973d-c6d06f192720

PublishingContactEmail

Contact E-Mail Address

Text

7546ad0d-6c33-4501-b470-fb3003ca14ba

PublishingContactName

Contact Name

Text

dc47d55f-9bf9-494a-8d5b-e619214dd19a

PublishingContactPicture

Contact Picture

URL

a990e64f-faa3-49c1-aafa-885fda79de62

PublishingExpirationDate

Scheduling End Date

PublishingScheduleEndDateFieldType

7581e709-5d87-42e7-9fe6-698ef5e86dd3

PublishingHidden

Hidden Page

Boolean

66f500e9-7955-49ab-abb1-663621727d10

PublishingImageCaption

Image Caption

HTML

f55c4d88-1f2e-4ad9-aaa8-819af4ee7ee8

PublishingPageContent

Page Content

HTML

3894ec3f-4674-4924-a440-8872bec40cf9

PublishingPageIcon

Page Icon

Image

3de94b06-4120-41a5-b907-88773e493458

PublishingPageImage

Page Image

Image

0f800910-b30d-4c8f-b011-8189b2297094

PublishingPageLayout

Page Layout

URL

188ce56c-61e0-4d2a-9d3e-7561390668f7

PublishingPreviewImage

Preview Image

URL

543bc2cf-1f30-488e-8f25-6fe3b689d9ac

PublishingRollupImage

Rollup Image

Image

51d39414-03dc-4bd0-b777-d3e20cb350f7

PublishingStartDate

Scheduling Start Date

PublishingScheduleStartDateFieldType

914fdb80-7d4f-4500-bf4c-ce46ad7484a4

PublishingVariationGroupID

Variation Group ID

Text

766da693-38e5-4b1b-997f-e830b6dfcc7b

PublishingVariationRelationshipLinkFieldID

Variation Relationship Link

URL

4689a812-320e-4623-aab9-10ad68941126

PublishingVaryByCustom

Vary by Custom Parameter

Text

89587dfd-b9ca-4fae-8eb9-ba779e917d48

PublishingVaryByHeader

Vary by HTTP Header

Text

b8abfc64-c2bd-4c88-8cef-b040c1b9d8c0

PublishingVaryByParam

Vary by Query String Parameters

Text

d4a6af1d-c6d7-4045-8def-cefa25b9ec30

PublishingVaryByRights

Vary by User Rights

Boolean

8ee23f39-e2d1-4b46-8945-42386b24829d

Purpose

UDC Purpose

Choice

e393d344-2e8c-425b-a8c3-89ac3144c9a2

QuotedTextWasExpanded

Quoted Text Was Expanded

Computed

d1aede4f-1352-48d9-81e2-b10097c359c1

RadioNumber

Radio Phone

Text

d12572d0-0a1e-4438-89b5-4d0430be7603

RecurrenceData

RecurrenceData

Note

dfcc8fff-7c4c-45d6-94ed-14ce0719efef

RecurrenceID

Recurrence ID

DateTime

ac57186e-e90b-4711-a038-b6c6a62a57dc

RedirectURL

Redirect URL

URL

9b4cc5a9-1119-43e4-b2a8-412c4031f92b

ReferredBy

Referred By

Text

875fab27-6e95-463b-a4a6-82544f1027fb

RelatedIssues

Related Issues

LookupMulti

9161f6cb-a8e6-47b8-9d24-89415de691f7

RelevantMessages

Email Messages

Note

5d36727b-bcb2-47d2-a231-1f0bc63b7439

RepairDocument

Relink

Computed

87cda0e2-fc57-4eec-a696-b0de2f61f361

ReplyNoGif

Reply

Computed

d8921da7-c09b-4a06-b644-dffebf73c736

ReportCategory

Report Category

Choice

fef4b2e1-4b89-4929-981b-c1967e0b3178

ReportCreated

Report Created

DateTime

efca5f2b-de72-42a8-aefd-1257af8698a8

ReportCreatedBy

Report Created By

User

8caf7ffe-9d2c-406c-9743-7a252b5c8ae5

ReportCreatedByDisplay

Report Created By

Computed

a533d496-5aeb-4027-9542-ee6ba9a8c9e3

ReportCreatedDisplay

Report Created

Computed

2a16b911-b094-46e6-a7cd-227eea3effdb

ReportDescription

Report Description

Note

27c603f5-4dbe-4522-894a-ae77715dc532

ReportHistoryLink

History

Computed

851c7906-3c95-46bc-a81e-30588602d910

ReportLink

Link to Report

Computed

b0bd6f6d-ed80-4ff8-8be0-ef9238a16835

ReportLinkFilename

Name

Computed

cc33f143-e697-42db-9c83-8db4e6928e9d

ReportModified

Report Modified

DateTime

f70965c3-6ac6-4e9e-914c-3c1b4e219b6f

ReportModifiedBy

Report Modified By

User

64016533-26ca-4ae6-8e1f-7cc34687e416

ReportModifiedByDisplay

Report Modified By

Computed

3892917d-92f2-4263-ae0c-22670474069d

ReportModifiedDisplay

Report Modified

Computed

fc6862c4-6aac-4f08-b60e-3a8454f26040

ReportModifiedLink

Report Modified Link

Computed

db364cb0-8c0c-46e7-a996-684e1f2caeb2

ReportName

Name

Computed

2e8881da-0332-4ad9-a565-45b5b8b2702f

ReportOwner

Owner

User

bf80df9c-32dc-4257-bcf9-08c2ee6ca1b1

ReportStatus

Report Status

Choice

de1baa4b-2117-473b-aa0c-4d824034142d

RequiredField

Required Field

Computed

82dd22bf-433e-4260-b26e-5b8360dd9105

ReusableHtml

Reusable HTML

HTML

890e9d41-5a0e-4988-87bf-0fb9d80f60df

ReusableText

Reusable Text

Note

eeaeaaf1-4110-465b-905e-df1073a7e0e6

Role

Role

Text

ad97fbac-70af-4860-a078-5ee704946f93

RulesUrl

$Resources:RulesUrl

Text

90884f35-d2a5-48dc-a39f-7bcbc9781cf6

SaveToReportHistory

Save to report history

Boolean

dddd2420-b270-4735-93b5-92b713d0944d

ScopeId

ScopeId

Lookup

7ebf72ca-a307-4c18-9e5b-9d89e1dae74f

SelectedFlag

Selection Checkbox

Computed

5f47e085-2150-41dc-b661-442f3027f552

SelectFilename

Select

Computed

b1f7969b-ea65-42e1-8b54-b588292635f2

SelectTitle

Select

Computed

cb2413f2-7de9-4afc-8587-1ca3f563f624

SendEmailNotification

Send Email Notification

Boolean

105f76ce-724a-4bba-aece-f81f2fce58f5

ServerUrl

Server Relative URL

Computed

48b4a73e-8853-44ac-83a8-3a4bd59ce9ec

Service

Associated Service

Text

4753e73b-5b5d-4bbc-8e09-c9683b0d40a7

ShortestThreadIndex

Shortest Thread-Index

Note

2bec4782-695f-406d-9e50-f1d39a2b8eb6

ShortestThreadIndexId

Shortest Thread-Index Id

Text

8ffccefe-998b-4896-a6df-32d566f69141

ShortestThreadIndexIdLookup

Shortest Thread-Index Id Lookup

Lookup

086f2b30-460c-4251-b75a-da88a5b205c1

ShowCombineView

Show Combine View

Text

4ef69ca4-4179-4d27-9e6c-f9544d45dfdc

ShowInCatalog

Show in Catalog

Boolean

11851948-b05e-41be-9d9f-bc3bf55d1de3

ShowRepairView

Show Repair View

Text

829c275d-8744-4d9b-a42f-53f53eb60559

SipAddress

SIP Address

Text

f590b1de-8e28-4c17-91bc-bf4096024b7e

SpouseName

Spouse

Text

64cd368d-2f95-4bfc-a1f9-8d4324ecb007

StartDate

Start Date

DateTime

f90bce56-87dc-4d73-bfcb-03fcaf670500

StatusBar

Posting Information

Computed

76a81629-44d4-4ce1-8d4d-6d7ebcd885fc

Subject

Subject

Text

d886eba3-d018-4103-a322-d5780127ef8a

Suffix

Suffix

Text

b3525efe-59b5-4f0f-b1e4-6e26cb6ef6aa

SummaryLinks

Summary Links

SummaryLinks

27761311-936a-40ba-80cd-ca5e7a540a36

SummaryLinks2

Summary Links 2

SummaryLinks

e6f528fb-2e22-483d-9c80-f2536acdc6de

SurveyTitle

Title

Text

af0a3d4b-3ceb-449e-9bf4-51103f2032e3

SystemTask

System Task

Boolean

3914f98e-6d99-4218-9ba3-af7370b9e7bc

TaskCompanies

Related Company

Text

cd21b4c2-6841-4f9e-a23a-738a65f99889

TaskDueDate

Due Date

DateTime

50d8f08c-8e99-4948-97bf-2be41fa34a0d

TaskGroup

Task Group

User

c15b34c3-ce7d-490a-b133-3f4de8801b76

TaskStatus

Task Status

Choice

8d96aa48-9dff-46cf-8538-84c747ffa877

TaskType

Task Type

Integer

e7be7f3c-c436-481d-8865-669e5146f53c

TelexNumber

Telex

Text

467e811f-0c12-4a93-bb04-42ff0c1c597b

TemplateId

Template Id

Text

4b1bf6c6-4f39-45ac-acd5-16fe7a214e5e

TemplateUrl

Template Link

Text

cef73bf1-edf6-4dd9-9098-a07d83984700

ThreadIndex

Thread Index

ThreadIndex

58ca6516-51cd-41fb-a908-dd2a4aeea8bc

Threading

Threading

Computed

c55a4674-640b-4bae-8738-ce0439e6f6d4

ThreadingControls

Threading Controls

Computed

769b99d9-d361-4948-b687-f01332391629

ThreadTopic

Thread Topic

Text

ac7bb138-02dc-40eb-b07a-84c15575b6e9

Thumbnail

Thumbnail

Computed

6cc1c612-748a-48d8-88f2-944f477f301b

TimeZone

TimeZone

Integer

fa564e0f-0c70-4ab9-b863-0177e6ddd247

Title

Title

Text

e451420d-4e62-43e3-af83-010d36e353a2

ToggleQuotedText

Toggle Quoted Text

Computed

f3c4a259-19a2-44b8-ab3d-e9145d07d538

TotalWork

Total Work

Number

11a86235-9d18-4134-b58c-fa7243f4cbba

Trend

Trend

Number

6d0f8993-5050-41f3-be6c-18902d282357

TrimmedBody

Trimmed Body

Note

f54697f1-0357-4c5a-a711-0cb654bc73e4

TTYTDDNumber

TTY-TDD Phone

Text

63055d04-01b5-48f3-9e1e-e564e7c6b23b

UID

UID

Guid

4b7403de-8d94-43e8-9f0f-137a3e298126

UniqueId

Unique Id

Lookup

e247cbb0-abb3-4759-b9f4-0128e37dd34a

UpdateError

Update Error

Note

c29e077d-f466-4d8e-8bbe-72b66c5f205c

URL

URL

URL

aeaf07ee-d2fb-448b-a7a3-cf7e062d6c2a

URLNoMenu

URL

Computed

2a9ab6d3-268a-4c1c-9897-e5f018f87e64

URLwMenu

URL

Computed

5928ff1f-daa1-406c-b4a9-190485a448cb

User

User ID

Integer

566656f5-17b3-4291-98a5-5074aadf77b3

UserField1

User Field 1

Text

182d1b9e-1718-4e11-b279-38f7ed0a20d6

UserField2

User Field 2

Text

a03eb53e-f123-4af9-9355-f92bd75c00b3

UserField3

User Field 3

Text

adefa4ca-14c3-4694-b531-f51b706efe9d

UserField4

User Field 4

Text

6df9bd52-550e-4a30-bc31-a4366832a87e

V3Comments

Append-Only Comments

Note

f0816223-fd98-41f9-aa57-b7f7db462faa

Value

KPI Value

Number

3b32f47b-f1a1-45ff-b5ad-7b28b84c720a

ValueCell

Value Cell

Text

93df9772-1e34-40c5-8c54-4bf3cdd56b34

ValueExpression

Value Expression

Note

d096d5f3-b399-462b-9a32-83f82d9237d4

ValueSheet

Value Sheet

Text

2c7db8af-02b0-4177-b77f-15c942c08427

ViewGuid

View Guid

Text

4a389cb9-54dd-4287-a71a-90ff362028bc

VirusStatus

Virus Status

Lookup

e84a049e-230d-4751-8d5c-8f615e968df2

Warning

KPI Warning Threshold

Number

eeaabf1d-f6ae-4dc6-873f-7397a17c36f0

WarningCell

Warning Cell

Text

3c6188a0-2761-4e0a-9fc0-ee32d47e4d49

WarningFromWorkBook

Warning from workbook

Boolean

3e223474-75ff-466b-b53f-9b641ce74b6c

WarningSheet

Warning Sheet

Text

a71affd2-dcc7-4529-81bc-2fe593154a5f

WebPage

Web Page

URL

c33527b4-d920-4587-b791-45024d00068a

WikiField

Wiki Content

Note

fc2e188e-ba91-48c9-9dd3-16431afddd50

WorkAddress

Address

Note

6ca7bd7f-b490-402e-af1b-2813cf087b1e

WorkCity

City

Text

3f3a5c85-9d5a-4663-b925-8b68a678ea3a

WorkCountry

Country/Region

Text

9d1cacc8-f452-4bc1-a751-050595ad96e1

WorkFax

Fax Number

Text

8d426880-8d96-459b-ae48-e8b3836d8b9d

WorkflowAssociation

Workflow Association ID

Guid

de21c770-a12b-4f88-af4b-aeebd897c8c2

WorkflowInstance

Workflow History Parent Instance

Guid

de8beacf-5505-47cd-80a6-aa44e7ffe2f4

WorkflowInstanceID

Workflow Instance ID

Guid

8e234c69-02b0-42d9-8046-d5f49bf0174f

WorkflowItemId

Workflow Item ID

Integer

58ddda52-c2a3-4650-9178-3bbc1f6e36da

WorkflowLink

Link

URL

1bfee788-69b7-4765-b109-d4d9c31d1ac1

WorkflowListId

Workflow List ID

Guid

e506d6ca-c2da-4164-b858-306f1c41c9ec

WorkflowName

Workflow Name

Text

18e1c6fa-ae37-4102-890a-cfb0974ef494

WorkflowOutcome

Outcome

Text

bfb1589e-2016-4b98-ae62-e91979c3224f

WorkflowTemplate

Workflow Template ID

Guid

f1e020bc-ba26-443f-bf2f-b68715017bbc

WorkflowVersion

Workflow Version

Integer

fd630629-c165-4513-b43c-fdb16b86a14d

WorkPhone

Business Phone

Text

881eac4a-55a5-48b6-a28e-8329d7486120

Workspace

WorkspaceUrl

URL

08fc65f9-48eb-4e99-bd61-5946c439e691

WorkspaceLink

Workspace

CrossProjectLink

ceac61d3-dda9-468b-b276-f4a6bb93f14f

WorkState

State/Province

Text

9a631556-3dac-49db-8d2f-fb033b0fdc24

WorkZip

ZIP/Postal Code

Text

cd1ecb9f-dd4e-4f29-ab9e-e9ff40048d64

xd_ProgID

Html File Link

Text

fbf29b2d-cae5-49aa-8e0a-29955b540122

xd_Signature

Is Signed

Boolean

c4b72ed6-45aa-4422-bff1-2b6750d30819

XMLTZone

XMLTZone

Note

566da236-762b-4a76-ad1f-b08b3c703fce

XomlUrl

$Resources:XomlUrl

Text


Categories: Professional | 0 Comments
 
Saturday, June 13, 2009

What is a Best Practice?

Recently I've been being bumped into by things that are claiming to be best practices. In some cases they absolutely are, and in other cases it's more questionable. As I'm preparing for a SharePoint Saturday event in Chicago this morning I'm wearing my speaker shirt from the SharePoint Best Practices Conference. (A conference where many best practices are indeed shared.) I'm skimming through blog posts and emails and I see a note from Eric Shupps about a "best practices" article (that isn't). I'm reminded of a recent conversation about an article in MSDN magazine titled "10 Best Practices for Building SharePoint Solutions" – which has some summarily bad advice, some poorly communicated advice, and a few nuggets that are helpful.

The articles above sparked a lot of conversation about whether the articles were really best practices or whether they were bad advice. Because the answer was so clear that there were things in them that were bad advice we quickly left the conversation about best practices. So quickly in fact that we didn't clearly articulate what best practices even are.

In the general software development improvement presentations I used to do I had a tendency to quote James Bach "There is no consensus about what practices are best, unless consensus means 'people I respect also say they like it.'" (No Best Practices: How to Think About Methodology). I like this quote because it reflects what most people think of as a best practice and points out the slippery slope that we're on when we're talking about best practices.

Dictionary.com has this definition for a best practice "a practice which is most appropriate under the circumstances, esp. as considered acceptable or regulated in business; a technique or methodology that, through experience and research, has reliably led to a desired or optimum result." That's a fine definition but it's not much help in the key problem – knowing whether something is a best practice or not. Before I go there, I have to pause and say one of the points that my buddy Ben Curry makes is that Best Practice may not be best for you – you should evaluate whether the "best practice" is really appropriate for your organization – that's an important point. The standard disclaimers should apply to all "Best Practices". (Your mileage may vary; past performance is no indication of future returns, etc.)

So how do you determine whether something is a best practice? You open it up to peer review. One of the great things about the way that the patterns & practices team is working on their guidance is that they solicit feedback from an advisory committee and anyone that wants to talk about a code drop that they make available. In my work with the SharePoint Guidance team I can say that the input from the advisors is critical to helping to determine what guidance is provided. They're careful not to call their work best practices, but the process they're going through in talking through various approaches and finding what seems to be the best is the right process.

From my perspective, what makes a Best Practice a best practice is that it has been vetted with industry experts and talked through. In the computer security industry it's expected that new cryptographic algorithms will be open so that they can be examined and tested by the industry. The same process should apply to best practices throughout the computer industry. We should raise ideas as potential best practices to have others validate or reject our perspective on the approach.

The really sticky part about this is that you have to communicate an approach that you think may be a best practice before you can be sure it's a best practice. In general this means that the person putting forward the idea should say something like "This is what I do because I think it's best" and should follow that with "Does anyone here disagree?" However, many folks want to skip the validation step. (How many developers do testing?) They want to believe their approach is the best practice and put it forth as a postulate. Of course, life is rarely this simple.

This leaves us with a simple challenge for anyone claiming best practices (thanks James) – "Who says it's a best practice, that I trust?" (or besides you). Thought of another way (thanks Ben) – "Who says this practice is best for my situation?" In either case, saying something is a best practice doesn't make it so. (Unless you implicitly trust the author.)

I should now fully disclaim that no one has yet said that this article is a best practice. If you want to participate in making this article a best practice, feel free to comment below on why this is (or isn't) a best practice for identifying best practices ;)


Categories: Professional | 7 Comments
 
Friday, June 12, 2009

Central IL SharePoint Users Group

On Wednesday I had the pleasure of speaking at the inaugural Central Illinois SharePoint Users Group in Springfield. I did a topic called "Do You Know SharePoint." The deck is built around the idea that there are tons of things about SharePoint that most folks don't know. We talked about Content Types, Word, and QuickParts (get users to enter metadata without knowing it) and globally deployed site templates – and why they can be valuable sometimes.

With 35 people in attendance for an initial meeting the group is off to a great start. If you're interested in sponsoring or participating contact Darrin Bishop for more details.


Categories: Professional | 3 Comments
 
Friday, June 12, 2009

Windows 7, Windows Server 2008 R2, NAS, Samba, NTLMv2, 1326, and Why can’t I get in?

Sometimes my past comes back to haunt me. You see many moons ago in a land far away I wanted to learn about Linux. So I setup a server and ran it. I got to learn all about Samba and the ability to make Linux disks look like they were coming from a Windows file server. Back then I can loosely remember this problem with NTLM and NTLMv2. Windows in whatever flavor that it was didn't want to talk to Samba unless you hacked the registry. This particular fact was something that I let get buried over by new facts about SharePoint. However, that came back and bit me.

What some folks know is that many of the Network Attached Storage (NAS) devices, particularly on the low to middle of the market, actually run Samba underneath. Such is the case with the Thecus 5200Pro that I have here. I recently installed Windows 7 RC and the Windows Server 2008 R2 RC. Everything was going relatively well and then I realized that neither of them could see my NAS. That's bad. After some digging I started thinking about Samba because Thecus mentioned that their latest firmware upgrades the Samba version (to a well and truly out of date version of Samba). A bit of digging lead me to a message from Jim Pinkerton where he lays out the details of the issues related to connecting to Samba from Windows. If you want the cliff notes version, you need to set HKLM\System\CurrentControlSet\Services\Netlogon\Parameters DWORD RequireSignOrSeal = 0.

What was my NAS doing when I tried to connect? Bad username or password. (Logon error 1326) Why? Because it didn't/doesn't understand NTLMv2 – and Windows was requiring it.

Honestly, I'm going to be very interested to see where this goes. I'm quite curious to see if all of the vendors using Samba for their NAS devices will support Samba.org to get the extra code in it to support all of the things in Jim's message – or if the project will slowly die because of a lack of support. In the mean time, I'm being a little less secure than I want to be.


Categories: Professional | 0 Comments
 
Friday, June 05, 2009

Don't use LocalHost when Developing for SharePoint

In a recent situation with a client I was called into look at some problems that they were having making some web service calls and through a discussion I realized that the URL for the web service was hard coded to use localhost. On the surface this doesn't look like a problem. You know that localhost will resolve and it will point back to the same server. So what's wrong?

Well, SharePoint, because of its centralized management of multiple servers in a farm, by default uses host headers to determine which web application that a request should be routed to. A typical SharePoint server farm will have a few web applications (at least the main web application, central administration and a shared services provider.) So what happens when you hardcode a reference to localhost?

Well, on a local development server where there's really only one web site on port 80 and someone has gone in and manually added an entry into IIS to accept all requests on port 80 -- without requiring a host header or requiring local host -- everything works magically. However, when you get to a controlled environment which has multiple applications and the IIS entry hasn't been changed bad things start to happen.

First, the request isn't answered so someone adds allowing all requests without a matching host header entry to go to the web site. That makes the request physically go to the same server. However, doing this can make authentication information break.

So the second problem that's seen is that when you try to use the default network credential cache it doesn't work for the web service. This will either be the NTLM double hop issue or an issue with Kerberos and the application pool being trusted for delegation. Let's deal with the first situation with NTLM. Essentially for security concerns the credentials supplied by the user on one server can't be supplied by that server to a second server. I.e. we can't get off the same box with the credentials. I know you're saying that localhost isn't leaving the same box. However, from the perspective of Windows -- it might. You see localhost isn't really that special. It just happens that it's defined in the hosts file. Other than that it could be some other computer. (In fact you can map localhost to something other than the local computer if you want to -- but I wouldn't advise it.) What Windows sees is a request coming in on one URL (servera, for instance) and leaving on another. that's a double hop and it's blocked for NTLM traffic.

If you're using Kerberos and you're seeing problems it may be because the application pool account isn't trusted for delegation (in other words, it's not allowed to wrap credentials and send them on.) It's easy enough to trust the account for delegation -- but this creates a pretty large exposure area for that account and isn't generally something that should be the first choice.

So what's the answer? Simply, pick off the fully qualified host name off the current request and then manipulate the path to get to your web service. If you do this you stay on the same box (in the same application pool/application domain in most cases). This eliminates the double hop issue and substantially reduces the ways that Windows can get generally upset with your application from a security perspective.

So don't reference your web services via localhost -- if you want things to work.

[[ Note: I've framed this in the perspective of SharePoint, however, if you're calling yourself in any application you should do it from the URL the user used when you can. ]]


Categories: Professional | 1 Comment
 
Thursday, June 04, 2009

Article: Create Your SharePoint Governance Plan

It's been a while since I've written an article but this one at IntranetJournal.com is designed to help people understand the process I go through to work with folks on developing and maintaining a governance plan. It begins:

"One of the most common questions that I get from prospects as I'm talking to them about the creation of a governance plan and process is what does it look like. In other words, there are materials available which describe what should be in a governance plan but there isn't a ton of guidance on what the process of creating a governance plan and process are.

Unlike a few years ago you now have sample governance plans you can look at, there are articles describing the kinds of things that you need to make sure are in a governance document, and a governance resource center on TechNet.

The goal of this article is something slightly different. The other resources available describe what to create, in this article I'll focus on the process for creating the plan based on the engagements I've been a part of. Rather than a specific step-by-step process, what appears here is a rough framework that you can and should tailor to your unique situation. In the following you'll also find some insight as to the psychology of putting a plan together as well as the aspects of how we as humans learn and process information."

The full text is available at http://www.intranetjournal.com/articles/200906/ij_06_04_09a.html


Categories: Articles, Professional | 0 Comments
 
Sunday, May 31, 2009

InfoPath Pick Lists and Other

Recently I was trying to build an InfoPath form -- with the help of a form designer - -and we stumbled across a pattern that might be obvious for some, but it involves using multiple controls connected to the same spot in the in the data source. For instance, let's say that you have a city field but you want to help the users fill out the popular cities -- but new cities and towns are popping up so you don't want to have to have an up to date list. So you can do something like this:

You have a drop down list for the cities you know -- if they start typing InfoPath will start to locate the city. If they don't find what they want, they can select an entry from the list, OTHER (Specify). This (because of conditional formatting) will reveal the text box -- which is connected to the same spot in the data source. So here's what happens when they select OTHER (Specify). When they select it the secondary textbox shows up. When they type the value in and exit the field the property is copied into the data source and the conditional formatting for the text field will hide it again (since it doesn't say OTHER (Specify) any longer). And the drop down list will show the new value.

There is a problem with this approach. It only works for drop down lists that are based on a secondary data source not those where the values have been entered directly into the control. However, worst case you can base the drop down list on an embedded resource.


Categories: Professional | 1 Comment
 
Saturday, May 30, 2009

Why We Build WSPs and Option Explicit

Recently I got called in to look at something by a client and in a part of the process it became apparent that the developer hadn't created a SharePoint Solution (WSP) to deploy the solution. That and the lack of a centralized Visual Studio project made the problem really hard to find. The conversations were effectively ... "Well, we're going to do that when we're ready to deploy it."

This whole thing reminded me vividly of a conversation I had with a developer of mine that happened nearly ten years ago. At the time ASP was the name of the game. It was a huge jump forward from trying to write web applications with CGI-BIN. The problem with ASP pages is that they used VBScript for their development language. VBScript was/is a bad language. It was hard to debug and had all sorts of odd side-effects that you had to learn to expect. One of the really challenging things with VBScript is that by default it allows you to just use variables -- they don't have to be declared. This sounds like a great timesaving features. You don't have to write the code to declare the variables.

In reality this is a pretty pesky thing. What happens is that you mistype a letter in a long variable name and they don't see it. When the code EXPECTS that a previous line set a value and it doesn't happen weird/bad things happen. This particular developer called me over from time-to-time to help him look at problems in his code -- I was happy to do it. However, after about the fourth time I had found the issue was that he mistyped a variable name, I was tired of explaining how important it was to use Option Explicit. Option Explicit was a command you could put at the top of your file and among other things it would require variable declarations. The result is that if you do mistype a variable it will generate an error.

His response was that he added Option Explicit at the end of the process -- before he turns the code over. Here's the problem with that thinking -- you don't add Option Explicit because you want to, because it's a requirement, or because you feel like it. You add Option Explicit at the top of ASP files because it makes your life easier. It saves you hours of debugging on weird issues because a variable name was mistyped. I should say that I did get to the point that where I told him if I ever found another piece of code that didn't have it -- I'd fire him on the spot no matter what. That was finally effective at getting him to help himself. I didn't end up firing him he left on his own.

Why did this come up? Well, because we build WSPs not because it's easy. We build WSPs because it MAKES OUR LIFE EASIER. In this situation the problem was that the particular thing showed up in one environment but not in another. That screams to me that there was some sort of a deployment error. If we had a WSP we could have tested it in a few minutes on a blank virtual machine. (Of course the problem wouldn't have happened in the first place if the deployments were consistent.)

So the next time you're wondering whether you should start building WSPs at the start of your project -- help yourself out and do it. (Repeating for effect... Build WSPs EVERY time.)


Categories: Professional | 0 Comments
 
Tuesday, May 19, 2009

Do you know how to leak an exception in SharePoint?

I've mentioned a few times that I'm participating in the patterns and practices SharePoint Guidance advisory board. One of the things I raised with regards to exception handling was that some exceptions leak past your try-catch blocks. Does anyone have scenarios they can share where this happens? I know it does it but it's been so long that I don't remember the exact circumstances. My email is rob.bogue@thorprojects.com.


Categories: Professional | 0 Comments
 
 Next >>