Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Mission Impossible - A SharePoint solution with no custom code

1,076 views

Published on

Presentation held at the Norwegian SharePoint User Group on Februar 8th 2012.

Published in: Technology, Business
  • Be the first to comment

  • Be the first to like this

Mission Impossible - A SharePoint solution with no custom code

  1. 1. «Mission Impossible» A custom SharePoint solution with (almost) no code Thomas Svensen
  2. 2. The journey Who am I Where did we do it Why did we do it Which choices What challenges How did it go
  3. 3. am I
  4. 4. 94 Beginner to expert Data Warehouse Mobile Services Search based ads 99 05 10
  5. 5. Where did we do it
  6. 6. A Norwegian company in the Energy sector – with offices in many countries
  7. 7. Document Management History 2012 No.ofsolutions 2004Pre-historic
  8. 8. did we do it
  9. 9. 50,000 documents, divided into geographic and functional areas
  10. 10. Focus on «Out Of The Box» Less cost Less risk Faster rollout Support Easier upgrade Cloud ready! Fun 
  11. 11. Project team 2010 2011 Eskil – arkitekt Line – altmuligkvinne og «Tante Sofie» Thomas – arkitektur, utvikling og testThomas, sjekker du RBS?
  12. 12. Which choices
  13. 13. Which choices
  14. 14. The SharePoint Databases Content Config
  15. 15. SharePoint Database Size MS recommended max: 200 GB Customer max: 50 GB Need full backup/ restore, so limits still apply!
  16. 16. 20 GB Portal 20 GB Area 1 100 GB Area 1 docs 100 GB Area 1 docs 100 GB Area 2 docs 100 GB Area 2 docs 20 GB Area 2 100 GB Area 1 docs Provisioning sites using PowerShell Giving impression of hierarchy using PowerShell
  17. 17. 20 GB Portal 20 GB Area 1 100 GB Area 1 docs 100 GB Area 1 docs 100 GB Area 2 docs 100 GB Area 2 docs 20 GB Area 2 100 GB Area 1 docs Demo time
  18. 18. Handover to Operations
  19. 19. 20 GB Portal 20 GB Area 1 100 GB Area 1 docs 100 GB Area 1 docs 100 GB Area 2 docs 100 GB Area 2 docs 20 GB Area 2 100 GB Area 1 docs
  20. 20. Content farm 20 GB Portal 20 GB Area 1 100 GB Area 1 docs 100 GB Area 1 docs 100 GB Area 2 docs 100 GB Area 2 docs 20 GB Area 2 100 GB Area 1 docs Shared Services Farm Search Scope 1 Scope 2
  21. 21. Content farm 20 GB Portal 20 GB Area 1 100 GB Area 1 docs 100 GB Area 1 docs 100 GB Area 2 docs 100 GB Area 2 docs 20 GB Area 2 100 GB Area 1 docs Shared Services Farm Search Managed Metadata: Terms Columns Content Types All sites subscribe to the «hub» to ensure full sync
  22. 22. Folder metadata Folders can have metadata, but there is no sync to documents inside
  23. 23. Document set metadata Document sets have their metadata, automatically propagated inside it
  24. 24. Document Set Evaluation Pros • Easy for end users • No coding • Better findability • Promoted by Microsoft Cons • Not mature • Little experience anywhere • One level only
  25. 25. Document Set Findings Existing metadata with same name stops syncing No «folder specific views» No required properties
  26. 26. What challenges
  27. 27. What challenges
  28. 28. Coding – event receiver on folder Customer wish: Automatically create three specific document sets when a «unit» folder is created
  29. 29. Time to code First version working Full deploy Propagate standard metadata Look up managed metadata, incl. struggling with logging Cleanup, bug fix, test, document 2 days5 days10 days20 days
  30. 30. Logging SHOULD be easy! Log.error(«Hello world!») SPDiagnosticsService.Local.WriteTrace( 0, new SPDiagnosticsCategory( “Hello", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, “Hello world”); } The SharePoint version of «easy»...
  31. 31. Still no logging
  32. 32. Ideal logging: Easy to write No special permissions required Remotely accessible Centralized in a load balanced farm Easy to turn on/off at runtime
  33. 33. Log to a SharePoint list! public static void LogError(SPWeb web, string msg) { SPList logList = web.Lists.TryGetList("Logging"); if (logList != null) { var logItem = logList.Items.Add(); logItem["Title"] = msg; logItem.Update(); } } Simple interface Easy on/off Standard list
  34. 34. How did it go
  35. 35. Does everyone make this mistake?
  36. 36. Size matters 0 50 100 150 200 250 300 350 400 450 On disk Reported by SharePoint (adds metadata and "housekeeping") Reported by SQL (adds auditing, recycle bin and more "housekeeping") Gigabytes
  37. 37. The journey Who am I Where did we do it Why did we do it Which choices What challenges How did it go
  38. 38. Takeaways
  39. 39. Takeaways • Goal: Happy Users! • Path: Focus on «Out of the Box» • Risk: Missing on either of these
  40. 40. Questions?

×