Thursday, May 24, 2012

InfoWise handy SharePoint plug-ins

  • Enterprise Capacity Solution - Multiple site collection navigation management
  • Smart List Pro - Tab based forms with field hiding - For lists/libraries with lots of metadata
    • Not true permissions since datasheet view and web services gets around it
    • User group or other field based default values and hide rules
    • Regex column validation
  • Smart Print Pro - Print list views

Thursday, May 10, 2012

Solution Architecture - To SharePoint or Not to SharePoint

You are architecting a web based software solution and are considering custom development (Asp.Net and SQL) or SharePoint list and library based architecture.  You can decide based on the following list of SharePoint pros and cons.  If you can pick 3 or 4 items (or 1 very important item) from the Pro list and are aware of the items in the cons list, it is likely beneficial to use SharePoint.
  • Pros
    • Authentication, authorization, and membership - Claims, forms, AD, LDAP, and custom
      • Security trimming throughout the product - Very important
    • Document and content management
      • If you plan to upload files, plan to use SharePoint - Very important
    • Item Data
      • Site, library, and list columns
      • Managed metadata
      • Customizable ad-hoc list and library views
    • Search and Indexing
      • Security trimmed - Very important
    • Publishing, approval, versioning, and check outs
      • Versioning - Very important
      • Remember to turn these on where appropriate
    • Navigation
      • Security trimmed
      • Dynamically populated
    • Web content management - Sites, pages, wikis, blogs, and web parts.
    • Recycle Bin - The big undo
    • Email Alerts, RSS
    • Integrated workflow and task engine - Pre-built Approval and Review workflows
    • Retention policies, legal holds, and record management
    • Email enabled libraries
    • Unified user interface (Master pages, layouts, themes, and styles)
    • Reporting integration
      • Excel services
        • Better with PowerPivot (SQL Enterprise or BI)
      • SSRS
      • MS Access
      • PerformancePoint services
    • External lists and external chart web part
      • Using business connectivity services
    • MySites (personal web sites) and user profiles
    • MS Office integration
      • Including Office Web Apps (with MS Office volume license)
      • SharePoint Workspace for offline caching and synchronization
    • Plethora of third party products and solutions
    • Standardized skill-sets - by SharePoint focus
      • Ex: Architect, developer, analyst, admin, designer, end-user, bi analyst, librarian, etc.
    • Web Part Framework integration
      • This is also available in ASP.Net, but does not have audience integration and requires some master page work and is not as flexible for reuse and customization by end-users.
    • APIs: web services, client object model, sever object model, and PowerShell
    • MS Support
    • Load balanced, scalable architecture
    • COTS - little to no coding required for many solutions
  • Cons
    • Relational support limited
      • SharePoint supports lookups with referential integrity and reflected columns but does not support hierarchical/tree view and complex entity relationships without custom development
      • SSRS does not allow you to query with a join or union
    • System integration complexity
      • Integrating and maintaining SharePoint and related applications in your environment can be complex and requires a professional to do correctly.  This can be mitigated by using a hosted SharePoint provider.  This admin level complexity is greatly outweighed by SharePoint's inherent functionality.
    • Performance
      • You can't optimize the performance as well as with a SQL database.  If your system is highly transactional, consider moving these pieces to SQL and front-ending in SharePoint
    • New skill set to utilize fully
      • SharePoint is still in the early stages of user adoption and training.  Many users will need to be trained to understand how best to use SharePoint.
    • Storage hungry
      • SharePoint solutions with document libraries can eat up disk space faster than a file share.  Make sure to plan SQL capacity and possibly Remote Blob Storage
    • Wildfire effect
      • If proper governance plans, quotas, IT professionals, and permissions aren't in-place, SharePoint training and support needs may surpass the IT department's ability to provide
    • Initial cost
      • Initial costs (server licenses and CALs) should be surpassed by reduced development costs and increased productivity. 
      • Search Server 2010 Express (SharePoint Foundation 2010 w/ advanced search)  is available for low cost solutions.  This will not have all the features listed above.
    • Not easy to synchronize functionality and content across distributed farms, sites, and lists
      • If you plan to utilize site or list templates, you must have a plan to integrate new features into sites after they have been created.  Data migrations, schema changes, and feature additions must be addressed in a solution package or powershell script.
    • Troubleshooting bugs and limitations
      • The more you use SharePoint, the more you will run into its limitations and bugs.  Troubleshooting issues is usually not straightforward and requires SharePoint knowledgable IT staff and/or many hours on the support line.  Fortunately, limitations are very often overcome by community and third party products and are a google search away.  See the rest of my blog for many of these bugs, limitations, and workarounds.
    • Easy to poorly architect a solution
      • With great ease of implementation, comes incredibly horrible solutions
        • Generally, do not:
          • Use folders
            • unless they are doc sets, email enabled folders, or OneNote sections
            • folder level security and explorer view needs are a possible exception
          • Copy/move documents unless you have a good reason
            • Utilize in-place publishing, versioning, security, and filtered views whenever possible
          • Overwrite the standard list/library CRUD forms
            • you can add to the pages, just don't remove the dynamically generated form web part
            • Try to use custom fields, third party products, or views to implement custom functionality within a column
          • Use too many site collections
            • Site collections isolate functionality.  Only split if you are sure there will be little crossover in SharePoint functionality.  Search will work across site collections.
          • Use too many sites
            • Sites should map to your main navigation, you don't want too many at each level
            • The exception would be for dynamically generated templated sites, but you would need to implement code for instantiation, navigation, and disposal.
              • Ex: Project sites and my sites.
          • Use too many lists/libraries
            • Items with similar metadata and security should be in the same library and separated by content type or metadata values.
          • Develop a custom solution that can be addressed using native SharePoint functionality
        • Generally, do:
          • Have a seasoned SharePoint specialist gather requirements and architect a  solution
            • This person should know all the dos and don'ts
          • Use site content types and site columns
            • Define site columns and content types at the lowest level site needed to encompass all sub-sites where they will be used
          • When custom development is needed
            • Use javascript, ajax, and jquery
              • but not for security
            • Use PowerShell for administrative functions
            • Build SharePoint Designer workflows
            • Build Visual Studio workflow actions
            • Build Visual Web Parts
            • Build EventHandlers
            • Package and deploy visual studio solutions as a .wsp
            • Be careful with performance on the above
              • Dispose items properly
              • Cache any collection references, don't use the index
                • Ex: Don't use splist.items[x], instead use getitembyid or equivalent
          • Perform user testing
          • Use lookup lists and columns
          • Performance testing
          • Disaster recovery testing
            • Backup plans are useless without successfully tested recovery plans

Tuesday, May 1, 2012

SharePoint Report Builder disconnected bug

Scenario
  • You have configured SQL Reporting Services 2008 R2 (SSRS) in integrated mode against SharePoint Server 2010 or SharePoint Foundation 2010
  • The SharePoint site collection containing your report library has anonymous access enabled for the authentication zone you are using.
    • Ex: You are building a report for a public website hosted on SharePoint and accessing it via the default zone where both Windows Auth and Anonymous are enabled
  • You try to add a new report to the library (after correctly configuring the report content types) or open an existing report using Report Builder 3.0
Issue
  • The report does not correctly connect to the integrated report server.
  • New document / report builder report symptoms:
    • "No current report server.  Connect"  appears at bottom left
    • Saving the report prompts for a location on your computer
  • Opening an existing report in report builder will open a blank report instead
Resolution
  • This occurs because Report Builder does not use your existing windows authentication token from Internet Explorer and instead tries to initiate new credentials.  By default, anonymous access is provided, which does not have permissions to create or edit a report on the server.  You can workaround this by performing one of the following actions:
  • Disable anonymous access on the zone you are using to build reports
OR
  • Create another zone where anonymous access is disabled and use that url/ip/port when designing reports
OR
  • Build reports locally and manually upload/download them to/from the report document library
The zones are configured via central admin / manage web applications / authentication providers You may need to set alternate access mappings and/or extend a web application to configure additional zones

Wednesday, March 21, 2012

#SharePoint Lookup Column DefaultValue Datasheet View Bug

Scenario
  • You have set a Lookup Column's default value property via code
    • There is no way to set this via the SharePoint UI with the exception of the workaround to default the first item in the lookup by making the column required
  • You receive the following errors
    • "The text entered for ColumnName isn't an item from the list." dialog box
    • The spreadsheet will not save the row and an invalid entry window will pop up

Side Note

I have developed a SharePoint solution that will allow a user to specify column defaults from a root site list for all instances of a Site Column within a specified site. For example, a company has several offices that each have a category that may change.  Each office has it's own team site. Every document and list item in the company must also have the office category populated for filtering and searching.  The user would set the office category from an office list at the root site which includes the office team site url, at that time, my tool updates the default value in each list/library where that site column is used within that team site.  If you would like more info, please comment to this post or contact Kiefer Consulting.

Issue
  •  Datasheet view does not work properly
    • You will run into errors if any of the following are the case
      • The client is running Office 2010 64bit with the 2007 Office System Driver: Data Connectivity Components workaround
        • The name and id are swapped in this case.  If you set the defaultvalue to the backwards combo the default will work for this client configuration but will not work with the standard new item form or other client configurations.
          • Ex: "Name1;#1"
      • The client is running an older version of Office
      • A defaulted lookup is multi-select
    • You may run into errors if the following is the case
      • A defaulted lookup is not visible within the Datasheet view
Resolution
  • There is only one unique circumstance where Datasheet view will work with standard formatted defaults
    • Office 2010 32bit is installed on the client
    • The lookup columns are single-select
    • All defaulted columns are visible within the Datasheet view
  • To code for maximum datasheet support, you must use a repeated id format workaround
    • Ex: spfieldlookup.defaultvalue = "1;#1;#2;#2"
    • This will solve the "The text entered for ColumnName" issue for multi-selects and non-visible fields in Office 2010 32bit
      • This will also work for Office 2007 for single-select columns, and non-visible multi-select fields.  You will still get the error for visible multi-select fields
    • The side effect to this format is that the id value will be visible, instead of the display value, until the user moves off the row.

Monday, February 27, 2012

SharePoint 2007 to 2010 Help Desk Upgrade

Scenario
  • You have installed the HelpDesk Fab 40 Template
  • You are performing a database attach upgrade from SharePoint 2007 or WSS 3.0 to SharePoint Server or Foundation 2010 and have run test-spcontentdatabase
Issue
  • The test-spcontentdatabase report contains the following errors (the cooresponding feature names have been added):
    • Category        : MissingFeature - HelpDeskModules
      Error           : True
      UpgradeBlocking : False
      Message         : Database [MOSS_ContentDB] has reference(s) to a missing featu
                        re: Id = [75a0fea7-02cb-4f87-bb11-1ffde748a953].
      Remedy          : The feature with Id 75a0fea7-02cb-4f87-bb11-1ffde748a953 is r
                        eferenced in the database [MOSS_ContentDB], but is not instal
                        led on the current farm. The missing feature may cause upgrad
                        e to fail. Please install any solution which contains the fea
                        ture and restart upgrade if necessary.
    • Category        : MissingFeature - HelpDeskListInstances, HelpDeskServiceRequestsList
      Error           : True
      UpgradeBlocking : False
      Message         : Database [MOSS_ContentDB] has reference(s) to a missing featu
                        re: Id = [75a0fea7-fe9d-4119-9615-2c2ef22d6fdb].
      Remedy          : The feature with Id 75a0fea7-fe9d-4119-9615-2c2ef22d6fdb is r
                        eferenced in the database [MOSS_ContentDB], but is not instal
                        led on the current farm. The missing feature may cause upgrad
                        e to fail. Please install any solution which contains the fea
                        ture and restart upgrade if necessary.
    • Category        : MissingFeature - HelpDeskListInstances, KnowledgeBaseKeywordsList
      Error           : True
      UpgradeBlocking : False
      Message         : Database [MOSS_ContentDB] has reference(s) to a missing featu
                        re: Id = [75a0fea7-12fe-4cad-a1b2-525fa776c07e].
      Remedy          : The feature with Id 75a0fea7-12fe-4cad-a1b2-525fa776c07e is r
                        eferenced in the database [MOSS_ContentDB], but is not instal
                        led on the current farm. The missing feature may cause upgrad
                        e to fail. Please install any solution which contains the fea
                        ture and restart upgrade if necessary.
    • Category        : MissingFeature - HelpDeskListInstances, HelpDeskTasks
      Error           : True
      UpgradeBlocking : False
      Message         : Database [MOSS_ContentDB] has reference(s) to a missing featu
                        re: Id = [75a0fea7-3b2a-4838-8a0c-57ba864feed3].
      Remedy          : The feature with Id 75a0fea7-3b2a-4838-8a0c-57ba864feed3 is r
                        eferenced in the database [MOSS_ContentDB], but is not instal
                        led on the current farm. The missing feature may cause upgrad
                        e to fail. Please install any solution which contains the fea
                        ture and restart upgrade if necessary.
    • Category        : MissingFeature - HelpDeskListInstances
      Error           : True
      UpgradeBlocking : False
      Message         : Database [MOSS_ContentDB] has reference(s) to a missing featu
                        re: Id = [75a0fea7-97c5-4487-88e4-70fde8f79b25].
      Remedy          : The feature with Id 75a0fea7-97c5-4487-88e4-70fde8f79b25 is r
                        eferenced in the database [MOSS_ContentDB], but is not instal
                        led on the current farm. The missing feature may cause upgrad
                        e to fail. Please install any solution which contains the fea
                        ture and restart upgrade if necessary.
    • Category        : MissingFeature - HelpDeskListInstances, HelpDeskSupportFaqList
      Error           : True
      UpgradeBlocking : False
      Message         : Database [MOSS_ContentDB] has reference(s) to a missing featu
                        re: Id = [75a0fea7-70e3-40b1-b395-c06f85d0d158].
      Remedy          : The feature with Id 75a0fea7-70e3-40b1-b395-c06f85d0d158 is r
                        eferenced in the database [MOSS_ContentDB], but is not instal
                        led on the current farm. The missing feature may cause upgrad
                        e to fail. Please install any solution which contains the fea
                        ture and restart upgrade if necessary.
    • Category        : MissingFeature - HelpDeskExpertsList, HelpDeskListInstances
      Error           : True
      UpgradeBlocking : False
      Message         : Database [MOSS_ContentDB] has reference(s) to a missing featu
                        re: Id = [75a0fea7-e63b-4059-8f5a-ce9cbbadad2a].
      Remedy          : The feature with Id 75a0fea7-e63b-4059-8f5a-ce9cbbadad2a is r
                        eferenced in the database [MOSS_ContentDB], but is not instal
                        led on the current farm. The missing feature may cause upgrad
                        e to fail. Please install any solution which contains the fea
                        ture and restart upgrade if necessary.
    • Category        : MissingFeature - HelpDeskListInstances
      Error           : True
      UpgradeBlocking : False
      Message         : Database [MOSS_ContentDB] has reference(s) to a missing featu
                        re: Id = [75a0fea7-d31d-491a-9177-f0e461a81e3f].
      Remedy          : The feature with Id 75a0fea7-d31d-491a-9177-f0e461a81e3f is r
                        eferenced in the database [MOSS_ContentDB], but is not instal
                        led on the current farm. The missing feature may cause upgrad
                        e to fail. Please install any solution which contains the fea
                        ture and restart upgrade if necessary
  • There will also be some MissingSetupFile - Need to install messages as well.
Resolution
  • The following solution is to get existing sites working.  To create new sites using the fab 40 templates, you may download and install the 2010 upgraded versions
    • I would recommend starting from a blank site template to build a tailored solution instead of using these templates due to the issues we've had modifying and upgrading them
  • The solution is to copy and then install the missing features
    • Copy the erroring feature folders from the 12 hive on the 2007 server to the 14 hive on the 2010 server
      • ...\12\template\features
      • ...\14\template\features
      • The ones we copied were: HelpDeskExpertsList, HelpDeskInIssuesList, HelpDeskListInstances, HelpDeskModules, HelpDeskServiceRequestsList, HelpDeskSupportFaqList, HelpDeskTasks, HelpLibrary 
    • Install the features on the 2010 server from PowerShell (SharePoint 2010 Management Shell)
      • Ex: install-spfeature -path "helpdeskservicerequestslist"
        • Do this for each of the folders copied earlier

Wednesday, February 15, 2012

Android: Upload documents, images, list items, or metadata to SharePoint

Scenario
  • You are developing an Android OS application on an Android tablet or Android phone and need to upload a document or photo to a SharePoint list or library.
Issues
  • NTLM authentication is not natively supported
  • SOAP protocal is difficult to implement
  • REST interface is limited
  • Need to batch upload multiple documents and set metadata while reducing bandwidth
  • Need to thread multiple uploads
Resolution
  • Kiefer Consulting, Inc. has experienced SharePoint and Mobile development teams that can help address these issues.

User Profile properties from a User or Group Column

Scenario
  • You have user profile properties (Company, Role, Contact Info, etc.) in a user's SharePoint profile.  You have a People Picker (User or Group) Field in a list and select that user.  You would also like the selected user's profile properties to be automatically saved to columns in the list.
Issue
  • You cannot do this out of the box.
Resolution
  • Kiefer Consulting, Inc. has developed a custom workflow that will allow you to do this. 
    Contact me if you need this.

Monday, January 16, 2012

Lync Attendee Install - Join a Lync Meeting - Public Users

Scenario
You have been invited to a Lync meeting where you will be using microphone, speakers, screen sharing, webcam, whiteboarding, document annotation, or other attendee features and have not yet installed the Lync Attendee client software.

Resolution
Install the Lync Attendee client. 

IMPORTANT:
If you have the full version of Lync installed and do not have a Lync login, you will need to uninstall Lync before installing Lync Attendee.  Otherwise, you may use your Lync login with the full version of Lync to join the meeting.
  • Navigate to the URL provided by your meeting organizer (this person has a Lync account)
  • Select the View alternatives for joining the meeting hyperlink
  • Select the Lync Attendee hyperlink
  • Click the Run option at the bottom of your browser
  • Proceed through the installer wizard until you click Finish
  • Close the browser and any Lync windows already opened
  • Re-navigate to the meeting URL provided by your meeting organizer
  • This time you should see the Microsoft Lync Attendee client open up
  • Select the Join as Guest option and enter your display name
  • Always trust and Connect when prompted to Sign In
  • You should now be in the meeting. 
  • See documentation here for using specific features or configuring Lync Attendee

Tuesday, November 15, 2011

SharePoint 2010 SQL AutoGrowth Settings

Scenario
  • You would like your SharePoint 2010 and Reporting Services (SSRS) databases to perform well by avoiding excessive database auto-growth and disk fragmentation. Note that this is in addition to other SQL performance tuning steps such as splitting up the tempdb across physical files and optimizing SQL Server disk access speeds.
Solution

Note: The following settings are initial baselines.  You should adjust the Initial Size and Autogrowth settings appropriately.  Monitoring and reporting on auto-growth is vital to this process.

Also, make sure you have a SQL Server Maintenance plan in-place to backup your transaction logs every 5 to 60 minutes.  If you don't do this, you must do full backups from SQL Server, not SharePoint to avoid using up all your disk space.  The interval chosen for you transaction log backups will be the maximum data loss interval in-case of failure.
  •  Change Initial Size and Autogrowth Settings
    • Right click the database in SQL Server Management Studio
    • Click Properties
    • Select Files, change as in the table below, and click OK
      • If blank, leave as-is or set to the auto growth setting
Database
File
Initial Size
Autogrowth
master
Data
10MB
10MB
Log

10MB
tempdb
Data
20MB
20MB
Log

10MB
spfarm_AdminContentDB
Data
500MB
100MB
Log

10%
spfarm_BusinessDataCatalogDB
Data
10MB
10MB
Log

10MB
spfarm_ConfigDB
Data
250MB
100MB
Log
500MB
50MB
spfarm_EnterpriseSearch
Data
50MB
20MB
Log

20MB
spfarm_EnterpriseSearch_CrawlStore
Data
250MB
250MB
Log

50MB
spfarm_EnterpriseSearch_PropertyStore
Data
50MB
20MB
Log

20MB
spfarm_MetaDataDB
Data
50MB
20MB
Log

20MB
spfarm_MySites_Content
Data
250MB
250MB
Log

100MB
spfarm_PerformancePointDB
Data
50MB
50MB
Log

20MB
spfarm_ProfileDB
Data
100MB
50MB
Log

20MB
spfarm_SecureStoreDB
Data
10MB
10MB
Log

10MB
spfarm_SocialDB
Data
10MB
50MB
Log

30MB
spfarm_StateServiceDB
Data
100MB
20MB
Log

20MB
spfarm_SyncDB
Data
100MB
20MB
Log

20MB
spfarm_UsageAndHealthDB
Data
150MB
50MB
Log

20MB
spfarm_WebAnalyticsReportingDB
Data
20MB
20MB
Log

20MB
spfarm_WebAnalyticsStagingDB
Data
20MB
20MB
Log

20MB
spfarm_WordAutomationDB
Data
20MB
20MB
Log

20MB
spfarm_WWW_Root_Content
Data
1,000MB
500MB
Log
100MB
100MB
ReportSerer
Data
50MB
50MB
Log

20MB
ReportServerTempDB
Data
20MB
20MB
Log

10MB