SharePoint 2007 Colleague Tracker Data

Just answered a very interesting question in the forums around Colleague Tracker Data.  The jist of the question was how do you clear colleague tracker data?  After some exploring, I found the data is stored in the UserProfileEventLog table and queried via the [profile_GetUserColleagueEvents] stored proc.  There is a profile_ResetAll stored procedure, but if you look at it, it doesn't reset the Event Log data!  Bummer for this guy's issue! 

Here's the MSDN post

Chris

SharePoint 2010 Content DB versus SharePoint 2007 Content DB

Here are the changes between the content database structure of 2007 and 2010.  AGAIN, this is based on beta!

  • New Tables:
    • AllFileFragments
    • AllListsAux
    • AllListsPlus
    • AllListUniqueFields
    • AllLookupRelationships
    • AllWebParts
    • CustomActions
    • Resources
    • SharedAccessRequests
    • SiteDeletion
    • SolutionResourceUsageDaily
    • SolutionResourceUsageDailyOrdinal
    • SolutionResourceUsageLog
    • SolutionResourceUsageWindowed
    • Solutions
    • WebsPlus
  • Deleted Tables:
    • Categories
    • Image0x
    • WebCat
    • WebParts
  • Added Columns
  • Delete Columns
  • New Stored procedures
  • Deleted Stored Procedures

Enjoy!
Chris

SharePoint 2010 versus SharePoint 2007 Object Model (Microsoft.SharePoint.dll)

There are the differences between the new object model (Microsoft.SharePoint.dll) and the old.  Some classes/interfaces/enums were removed, but nothing that looks to hurt anyone.  The really cool part though…no properties or methods were removed between the two versions (doesn't mean that they are not depreciated however)!  NOTE:This is based on a beta version of SharePoint 2010.

  • Classes/Interfaces/Enums in 2007:   3225
  • Classes/Interfaces/Enums in 2010:   6658
  • New namespaces in 2010:    46
    • Microsoft.BusinessData
      Microsoft.SharePoint.Administration.AccessControl
      Microsoft.SharePoint.Administration.Claims
      Microsoft.SharePoint.ApplicationPages.Calendar
      Microsoft.SharePoint.ApplicationPages.PickerQuery
      Microsoft.SharePoint.Applications.GroupBoard
      Microsoft.SharePoint.Applications.GroupBoard.MobileControls
      Microsoft.SharePoint.Applications.GroupBoard.Utilities
      Microsoft.SharePoint.Applications.GroupBoard.WebControls
      Microsoft.SharePoint.Applications.GroupBoard.WebPartPages
      Microsoft.SharePoint.BusinessData
      Microsoft.SharePoint.BusinessData.Administration
      Microsoft.SharePoint.BusinessData.Infrastructure
      Microsoft.SharePoint.BusinessData.Infrastructure.Collections
      Microsoft.SharePoint.BusinessData.MetadataModel
      Microsoft.SharePoint.BusinessData.MetadataModel.Collections
      Microsoft.SharePoint.BusinessData.MetadataModel.Constants
      Microsoft.SharePoint.BusinessData.MetadataModel.Dynamic
      Microsoft.SharePoint.BusinessData.MetadataModel.Static
      Microsoft.SharePoint.BusinessData.MetadataModel.Static.DataAccess
      Microsoft.SharePoint.BusinessData.Offlining
      Microsoft.SharePoint.BusinessData.Parser
      Microsoft.SharePoint.BusinessData.Runtime
      Microsoft.SharePoint.BusinessData.SharedService
      Microsoft.SharePoint.BusinessData.SharedService.Structs.ExtensionMethods
      Microsoft.SharePoint.BusinessData.SystemSpecific
      Microsoft.SharePoint.BusinessData.SystemSpecific.Db
      Microsoft.SharePoint.BusinessData.SystemSpecific.DotNetAssembly
      Microsoft.SharePoint.BusinessData.SystemSpecific.Wcf
      Microsoft.SharePoint.BusinessData.SystemSpecific.WebService
      Microsoft.SharePoint.BusinessData.Upgrade
      Microsoft.SharePoint.Calculation
      Microsoft.SharePoint.Client
      Microsoft.SharePoint.CoordinatedStreamBuffer
      Microsoft.SharePoint.Diagnostics.ULSEventTemplates
      Microsoft.SharePoint.JSGrid
      Microsoft.SharePoint.JsonUtilities
      Microsoft.SharePoint.MobileMessage
      Microsoft.SharePoint.RBSWrapper
      Microsoft.SharePoint.TenantAdministration
      Microsoft.SharePoint.UserCode
      Microsoft.SharePoint.Utilities.Cab
      Microsoft.SharePoint.Utilities.SimpleParsers
      Microsoft.SharePoint.Utilities.SqlTrace
      Microsoft.SharePoint.Utilities.Win32
      Microsoft.Xslt
  • I have attached lists of
    • All new classes/interfaces
    • All removed classes/interfaces
    • All Property Changes (adds and deletions) to old classes
    • All Methods Changes (adds and deletions) to old classes

Links:

New objects
Delete objects
New Properties
New Methods

Enjoy!
Chris

SharePoint 2007/2010 Security

I'm CISSP, computer science dude.  I can hack your computer, steal your credit card numbers and social engineer you all day long.  So when I say SharePoint is not secure, I mean it.  Case in point:

  • PROOF #1 – Any DBA can dump the contents of your content database by default in 2007 AND 2010.   Reference this blog post:  http://bit.ly/3pdf45
  • PROOF #2 – Web Application policy can be setup to give "Full Control" to anyone the Central Administrator decides to (including him or herself)
  • PROOF #3 – Site Collection Admins are "God" when it comes to the data in the Site Collection
  • PROOF #4 – Development = Production odds are less than 5% (once you give the developers the database backup, that's it, they own the content)
  • PROOF #5 – Ignorance kills your SharePoint – Removing certain blocked file types can cause security holes.  Reference this blog post:  http://bit.ly/3GpJkp
  • PROOF #6 – Blind public deployments of SharePoint to the internet (the _vti_bin problem).  Reference this blog post:  http://bit.ly/3RjJVD

Are these bad things, technically no if you trust the people you have assigned to each role.  But keep in mind, social engineering is a powerful foe!

How does You/I/SharePoint 2007/2010 fix this?

  • FIX #1 – 2007/2010 – Implement IRM/DRM – this encrypts your files and locks them down no matter where they will go (covered in my 50149 operations course)
    • Search has to be setup to have read access across the IRM domain
  • FIX #2 – 2007/2010 – Implement custom actions or event receivers to encrypt the documents when they are "added", "checked in", decrypt on "check out"  (covered in my 50064 course)
    • Prevents SQL DBA's from PROOF #1
    • Problem is, you lose functionality (workflows are "Added", which means the files are encrypted – DOH!, search can't index your content)
  • FIX #3 – 2010 only – implement an encryption RBS (watch for this in my future courses)
    • Things are awesome,  content is encrypted in data store, Search is setup with Read permissions through SharePoint – LIFE IS GOOD, until someone (like me) social engineers your IW staff to give me what I want
  • FIX #4 – build some kind of scrub routine on your content database before you give it to your developers
    • Hard to do given the structure of the content database, but possible if everything is tagged with content types/meta data (easier to do in SP2010)
  • FIX #5 – Don't remove things from blocked file types unless you really know what you are doing!
  • FIX #6 – Don't blindly deploy your internet website using SharePoint, reduce your hacker footprint as much as possible!

In reality, there is no security in this world.  Sorry…am I fair to pick on SharePoint, no, no matter what platform you choose, same issues will exist!

Chris

ACS Courses are going CBT for FREE! – http://cbt.architectingconnectedsystems.com

Yep, you heard right. To drive excitement for SharePoint 2010, we are turning all our courses into online versions!  I am recording all the courses and turning them into CBT and SCORM!  The 50064 course (PPTs and Labs, even the optional ones) has been recorded and I will be publishing the modules one by one over the next few days!  

Follow me on twitter to get updates when I publish a module:  http://twitter.com/givenscj

Here's the schedule:

 

As they become available, you can check them out here:

http://cbt.architectingconnectedsystems.com

Go SharePoint 2010!
Chris

Find all closed Web Parts in Content Database

Use this script to find all the closed web parts in your content database:

SELECT     w.fullurl + '/' + ad.dirname + '/' + ad.leafname
FROM         WebParts wp, alldocs ad, sites s, webs w
where tp_isincluded = 0
and wp.tp_pageurlid = ad.id
and ad.siteid = s.id
and webid = w.id

.stp List Export (Content Type Settings)

When exporting a list to .stp, the settings for the list will include the Fields that were added by a content type, and what seems to be the content type definition, HOWEVER, it does not move the content type definitions.  The Content Type will only exist for that instance of the List and no others when moving the .stp between sites!

CodeGen In a SharePoint World – What do you want?

If I was to build a free SharePoint CodeGen tool, what would you want in it?  I'll give you some examples:

  • Point at any datasource and generate:
    • Content Type Feature
    • List Template Feature
    • List Instance Feature
    • Web Parts to "Add/Delete/Modify"
    • BDC Application definition creation

What else would the SharePoint community like to have?

CodeGen With SharePoint BDC – Helpful Hints

I have been working on a lot of codegeneration techniques with SharePoint and approched the BDC today.  It seems that it doesn't like things like Guids that much when working with Search Stored Procedures.  It will create a default Guid instance and pass that value EVERY TIME!  And it will not allow "Wildcard" on Guid Types.

In order to get around this little fact, you have to build a dynamic sql stored procedure (that passes through the query in the proper way to avoid sql injection) that takes all string parameters!  Even then there are some types that cannot be compared with the "like" sql operator. 

I have everything working like a charm now (keeping to simple types), but man…that was a day's worth of work!