Tuesday, November 3, 2015

SharePoint Saturday, Sacramento, 11/7/2015

My Presentation
Conference Link

Wednesday, August 12, 2015

SharePoint ParameterBinding the DateTime Control

Scenario
  • You have a custom form providing values to an XsltListViewWebPart or similar List View Web Part that supports ParameterBinding.
  • You need to provide a date picker control and would like to use the standard SharePoint control.  You only need the date, not time.
  • You are using SharePoint Designer and may not have access to code blocks or other server side code.
  • You are using the ParameterBinding in a CAML Query or similar.
Issue
  • The SharePoint date picker control is easy enough to add directly to a SharePoint aspx page, but accessing the values from the Form or Control ParameterBindings are not straightforward.
Resolution
  • Add JQuery and JQuery formatDateTime libraries to the page you are working on if they're not already included in your master page.
    • Example where you have downloaded the jquery and formatDateTime files to the root Style Library:
      <script language="javascript" type="text/javascript" src="/Style%20Library/Scripts/jquery-1.11.3.min.js"></script>
      <script language="javascript" type="text/javascript" src="/Style%20Library/Scripts/jquery.formatDateTime.min.js"></script>
  • Add the DateTime control followed by a standard TextBox element with the Same ID + "Value". 
    • This extra TextBox control will be used to pass the value to the ParameterBinding and should be hidden.  You should specify the date you wish to use when a blank is entered (be sure to change both).  The OnValueChangeClientScript property is used to call the JavaScript function you will add next.
    • Example:
      <SharePoint:DateTimeControl runat=server id="publishDateStart" OnValueChangeClientScript="spDateChanged('publishDateStart', '1901-01-01');" DateOnly="True"></SharePoint:DateTimeControl>
      <asp:textbox id="publishDateStartValue" runat="server" style="display: none;">1901-01-01</asp:textbox>
  • Add the following JavaScript code.  This converts the DateTime control's date format to the format required by your XSLT CAML query and stores it in your hidden textbox.  It also swaps in a date for a blank.
    •  Code:
      <script type="text/javascript">
      function spDateChanged(id, blankdate) {
      var datetimeID = '"_' + id + '_' + id + 'Date"';
      var dateSelected = $('[id$=' + datetimeID + ']:first');
      var dateSelectedValue = $('[id$="' + id + 'Value"]:first');
      if (dateSelected[0].value == "")
      {
      dateSelectedValue[0].value = blankdate
      }
      else
      {
      dateSelectedValue[0].value = $.formatDateTime('yy-mm-dd', new Date(dateSelected[0].value));
      }
      }
      </script>
      
  • Set your ParameterBinding element to the TextBox Control's ID
    • Example:
      <parameterbinding defaultvalue="" location="Control(publishDateStartValue)" name="AdoptedFrom"></parameterbinding> 
  • Note that this example does not include the time elements since it was not needed in my use case and would add in some extra complexity to the function above.  This was written for a 2010 SharePoint Server.
  • Also note that typed in entries need to be in the "m/d/yyyy" format.  Example: 1/1/2015
    •  
       

Wednesday, May 13, 2015

SharePoint Saturday, Silicon Valley, 5/30/2015

My Presentation
Conference Link

Monday, May 4, 2015

My MS Ignite 2015

Day 1 - Monday
  • Keynote (~23,000 attendees)
    • SharePoint 2016 release not mentioned in the keynote!
    • No mention of the SharePoint brand even though several new Office 365 SharePoint features were demoed
      • Does this mean MS is splitting off the SharePoint brand into its cloud use-cases: Office 365, Sites, OneDrive, Search, Delve, etc.?
        • Will SharePoint end up being rebranded as "Office 365 On-Prem"?
      • Or possibly an indicator of a lack-luster SharePoint 2016 release?
    • Best newly demoed SharePoint/Outlook feature is the new email integration with attach file links integrated into Azure groups and SharePoint security
    • Best Windows 10 demos were the Cortana Power BI demo and the facial recognition login demo
    • Other stuff:
      • Skye for Business, Threat Analytics, Ops Management Suite, Azure Stack On-Premises, Windows Update changes, and the Surface Hub
  • Evolution of SharePoint: Overview and Roadmap (over-capacity including overflow room)
    • SharePoint 2016 = Office 365 On Premises
      • Basically most of what is already on or is coming to Office 365 SharePoint will now be made available on premises
    • Deployment wizard will allow deployment by Role
      • WFE, App, Search, etc.
    • Delve will be made available to SharePoint 2013 on-prem (soon?) 
Day 2 - Tuesday
  • Power BI
    • Live Dashboards
      • Drill into data
      • Ad-hoc BI
    • Power BI Designer (client app)
      • Preview release version
    • On-Prem Data Sources
      • Scheduled Refresh or Analysis Services Live Query
    • API for data pushes / live monitoring
      • Demoed mobile phone accelerometer data live reporting
        • App used API to send data directly to dashboard
  • Transforming your SharePoint Full Trust Code to the Office App Model
    • Branding
      • Why brand collab sites?
      • Leverage Office 365 Themes
      • SharePoint Themes
      • CDM instead of Site Assets to avoid caching/blob cache issues
      • Use alternate CSS and javascript instead of modifying master pages when possible
    • Provisioning
      • App/add-ins
      • Scripting
      • PnP Provisioning Engine
        • Security
        • Fields
        • TermGroups
        • Lists
        • Pages
        • Files
        • ComposedLook
        • Apply-SPOProvisioningTemplate
          • Will provision new items only, no updates
    • Sandboxed Solutions
      • Still deprecated, should continue to n bb  work in 2016
    • Script parts
      • Embedded javascript (node/jquery)
    • Office 365 App Model
      • Mail, contacts, lists, libraries, and other Office 365 features
      • Standalone apps interface for ez app launch
Day 3 - Wednesday
  • NanoServer
    • Preview bits available
    • No UI at all
    • Remote Powershell and Managemen Console support
      • Limited cmdlet support, no local workflows
    • Clustering and HyperV supported
    • Fast boot, minimal services running
    • Graphical remote management web based tool demoed
      • Works on all versions of Windows server
      • Process Manager
      • PowerShell window
      • System Settings
      • Device Manager
      • Event Viewer
    • ServerCore will be renamed to Server
    • Full Server/Server with a GUI will be renamed to Client
      • Not allowed in containers
    • Visual studio server apps targeted to either Server or Nano, not Client
    • Nano is simply a subset of Server, full compatibility for all features that are in both
      • You select features and drivers at deployment
    • Demo of Chef deployment to Nano with Ruby, Python, and C# components
    • More videos on channel 9
    • Reduces attack surface and maintenance requirements
      • Fewer services, memory usage, patches, reboots
      • .4GB footprint compared to 4.84GB
    • No MSI support
      • Nano Server installer in the works
  • CRM Online and Office 365: What's New
    • Integration Points
      • Outlook/Exchange
        • Email folder mapping of metadata
        • Create entities from email
      • Excel
      • Power BI
      • OneNote
      • Office 365
        • Groups integration
      • OneDrive
      • SharePoint
      • Yammer
      • Skype
      • Skype for Business
  • Office 365 Groups -Eric Zenz
    • Office 365 Group = SharePoint Site Collection
    • Outlook and Office App integrations
    • Groups include
      • Files
      • Group Notebook
      • Shared with us feed
      • Recycle Bin
      • Pages
    • Delve provides insights into groups
    • Future planned feature: Link groups to existing SharePoint sites
    • Discovery works across group mail and group viles
    • Coming in 2015
      • Guests membership
      • Dynamic membership
      • Data Leakage Prevention (DLP)
      • Quota management
      • Soft-delete
    • Graph REST endpoint
  • Line of Business Dev on Dynamics CRM (small room)
    • Dynamics CRM
      • Line of business and Customer Engagement
      • Solution development
        • Relationship
        • Process
        • Interaction
        • LOB
      • Giving campaign demo
        • Theme
        • Personalized
        • Navigation
        • Office 365 Integration
        • Configurable
        • Social and Collaborative
        • Mobile Ready
        • Customizable Search
        • Secured
        • Analytical
    • Build, Integrate, Manage
Day 4 - Thursday
  • Best Practices for Design and Performance in SharePoint Online
    • Branding Impact
      • Low Impact
      • High Impact
    • Responsive Web Design
      • Limited support for some common collaboration site features
        • Ex: Gantt charts
    • Composed Looks (Themes)
    • Design Manager
      • Converts HMTL to Masterpage automatically
    • Custom Branding
      • Use a starter masterpage
      • Layout with html css and imagers
      • Add SP Controls
    • Performance considerations
      • Image sizes
      • SharePoint Online caching less reliable due to number of servers
      • Demo of custom rollup nav delaying page load
    • Custom Masterpages will continue to be supported
      • Make sure to stay up to date with MS improvements
  • Deploying Yammer
    • Levi Strauss+
    • Yammer Embed
    • My Feed
    • Group Feeds
    • Liking
    • Sharing
    • Following
Day 5 - Friday
  • BCS to SQL hybrid
    • OData service on-prem exposes SQL data
  • Search hybrid
    • Search center on-prem or online
  • Security
    • AD sync
    • DirSync server
      • Claims from User Profile Sync Service
      • Config steps
        • Add on prem domain to tenant
        • Activate DirSync in your tenant
        • Update DNS records
        • Run DirSync wizard and start sync
        • Check users and groups in Tenant Admin
        • Activate and License users
      • Validate synchronization
        • DirSync Troubleshooter App
    • Azure AD Proxy on-prem manages ACS (Access Control Services) Trust
    • ADFS + ADFS Proxy for single sign-on
    • Configuring S2S
      • Replace STS Cert on all farms
      • Install S Sign in assistant and azure PowerShell
      • Register on-prem STS as Service Principle in 0365
      • Add SPN for on-prem domain
      • Register 0365 app principal as trusted provider
      • Set the auth realm on prem
    • Validate User Profile Service App
    • Search Validation
      • Result Source
        • ECB menu, click test source
      • Query builder
        • From Query Rules
      • Investigation
        • Partitioned search service or proxy not supported in hybrid
          • Fix: IgnoreTenatization
        • 400, 401, 403, 500 errors
    • BCS Validation

Thursday, April 9, 2015

SharePoint Migration and Administration Notification Tool

Scenario
  • You are performing an administrative change at the SharePoint site level or for all sub-sites starting at a particular location
    • Examples
      • Migration
      • Retention, Archival or Deletion
      • Redesign
      • User Acceptance Testing (UAT)
      • Upgrade
      • Restructure
      • Merge
  • You need to convey the administrative status to all users on the site
    • Likely as part of your SharePoint administrative communications plan
    Issue
    • There is no simple or easy out of the box way to accomplish this
    • We don't want to manually replicate notifications on each sub-site, modify the master pages, or configure content roll-ups on each site
    Solution
    • I developed the SharePoint Migration Notification Tool specifically for this purpose
      • Download SharePointMigrationNotification.wsp for deployment at the Site Collection level on a SharePoint on-premises farm
      • Add and Install the WSP file you downloaded
      • Enable the site collection feature named "Migration Notification" on each site collection
      • Add a list to the root site for each site collection.  Select the "Migration Notification URLs" list template (found under Blank & Custom list types)
        • You can name this whatever you like, but you should only have 1 of these lists at the site collection root because the tool uses the first one it finds
    • Here are some examples of the default notifications you can configure
      • You can also add your own custom notification messages

    • Here is the list configured at the Site Collection root level that defines your notifications
      • The new/edit item forms describe what should be entered in each field

    • Notification Tool Feature List
      • Site Collection Deployed full trust solution (Currently designed for SharePoint 2010+)
      • Client object model exclusively used for notification processing in order to support future releases on the SharePoint 2013 app model and Office 365 environments
      • Drop down selection of common notification scenarios
      • Migration notification list definition
        • Must be added to the root site collection
      • Configurable notification text with wiki-like syntax for inserting hyperlinks or a date from the Migration Notification List
        • More Info URL
        • New URL
        • Migration Date
      • SharePoint client object model property bag caching to reduce server load and increase performance
      • Supports the standard notification color selections
      • Include all sub-sites (notification can be overridden at the child site level)
      • New / test site URL replacement including the full path to the current page/form
      • Notification disable flag
      • Automatic population of the title field from the New Site URL wiki when sent to a ".../NewForm.aspx?source=..."  page (Using "New URL Set Title" syntax)
      • Permission based notification visibility (security trimming)
      • Notification dismissal option (cookie based)
        • 1 day dismissal duration
      • Automatically delete sites from the migration notification list by selecting Auto Delete or Auto Recycle in the Old Site Status field
        • This capability is enabled through a separate Site Collection feature and requires the user to have permissions to delete the site
        • This feature is especially useful for retention policies that require you to post a notice of deletion before deleting the site.
        • If you use Auto Delete instead of Auto Recycle, you should backup the site first if there is any possibility of needing a restore
    • Contact me for SharePoint Farm Upgrade or Migration services, to request a customized version of this solution, or to provide SharePoint Solution Architecture services
    Releases
    • Release 1.3.2.0 (2013 only): 11/7/2015
      • Fixed a bug when removing an existing Migration Notification List and adding another with a different name.
    • Release 1.3.1.0: 7/6/2015
      • SharePoint 2013 list view fix
      • 3 digit year date format fix (115 fixed to be 2015)
    • Release 1.3.0.0: 5/29/2015
      • SharePoint 2013 version created
    • Release 1.3.0.0: 5/27/2015
      • New Features
        • Auto Delete Old Site feature added
          • New feature activates migration notification list event receiver keying off a new field type "Old Site Status"
        • Refactored to use ScriptLink and _layouts JavaScript code file to enable browser based code caching
    • Release 1.2.1.0: 5/15/2015
      • Bug Fixes
        • Redirect URL now works when browsing folders within a list/library
          • These links now redirect to the Document Library root folder
      • New Features
        • Notification dismissal option (cookie based)
          • 1 day dismissal duration
    • Release 1.2.0.0: 5/13/2015
      • Bug Fixes
        • URLs with spaces and special characters now work correctly
          • You will need to make sure to unencode the URLs when entering them in the list.  The title field description now reflects this requirement.
        • Redirect URLs with special characters will now be encoded correctly
      • Added Features
        • Permission based notification visibility (security trimming)
    Backlog
    • Develop an Office 365 app version
    • Add parameter for dismissal duration length

    Tuesday, March 10, 2015

    CRM and xRM vs SharePoint: Business Solution Architecture

    Scenario
    • You are tasked with developing an enterprise application or business process solution using a stable platform tool
    • You have MS SharePoint / Office 365 and MS Dynamics CRM options available and need to decide which to use
    SharePoint / Office 365 and Microsoft Dynamics CRM and xRM Comparison
    • SharePoint and Office 365 is a(n)
      • Customizable and flexible business solution platform
        • Content-centric
      • Content/document management and versioning system (CMS/DMS)
      • Enterprise search engine
      • Workflow system (WWF/Azure Workflow)
      • Alert engine
      • Extension for MS Office client apps and MS OfficeWeb Apps (OWA)
      • Web site development and web content management tool (WCM)
      • Publishing tool
      • Personalizable web interface
      • Social platform
      • Cloud capable, multi-tenant framework
      • MS Access web database platform
      • MS Project platform
      • MS Team Foundation Studio site platform
      • MS Dynamics CRM document repository
    • Dynamics CRM (xRM) is a(n)
      • Customizable CRM line of business system
        • For Sales and Marketing departments
      • Entity management platform
        • Ex: Accounts, contacts, orders, cases and opportunities
        • May be configured for case management solutions such as health and human services, benefits administration, legal cases, grant management, etc.
      • Query tool
      • Workflow engine (WWF)
      • Analytics tool
      • Extension for MS Outlook, Excel, and Word
      • Custom business solution platform
        • Email and conversation-centric applications
          • Customer service, tech support, employee relations, outreach, campaigning, contracts, etc.
    Summary

    MS Dynamics CRM is designed as a customer relationship management system and the platform has native relational design at its heart.  It can be adapted to many conversational and relationship based business processes.  The primary problem with CRM, is that it lacks the popularity of SharePoint and Office 365 due to reduced feature set and increased cost and is therefore less likely to be available as a platform to most business developers and end users.  This makes finding third party solutions, developers, community forums, and experienced users difficult or costly.  Dynamics CRM as a line of business app has many competing products that make the base feature set less important when choosing a solutions platform.  These include those from MS partners built directly on SharePoint such as BPA Solutions CRM, SP CRM Template, and SP Marketplace CRM.

    The capabilities of SharePoint and Office 365 currently outweigh those of Dynamics CRM for general purpose custom business solutions.  This is especially true when business solutions incorporate enterprise search, documents and content management, publishing and approval, personalization, collaboration, or public web content.   SharePoint with a typical set of third party add-ins provides the best long term, affordable, and flexible solution architecture.  Microsoft has embraced SharePoint as an application platform within most of its divisions, Dynamics being the outlier.  SharePoint/Office 365 is also the fastest growing product within Microsoft due to its rapid adoption globally.  Finally, SharePoint has many more third party solution providers and COTS line of business systems than Dynamics CRM.

    For highly relational and performance based web applications it is better to develop a user interface in SharePoint (app model or web parts) with a SQL DBA developed backend or MS Access Web Database rather than develop a solution using the Dynamics CRM drag drop interface or native SharePoint lists/libraries.  This will remain the case until Dynamics CRM catches up to SharePoint/Office 365 in functionality, SharePoint integrates a better relational/back end framework, or another company develops a better web application platform.


    Microsoft Corporate Strategy and Product Roadmap Commentary

    Ideal Objective: SharePoint = Microsoft's Web Operating System

    SharePoint must be the single web based application platform for all Microsoft's business solutions.  MS Dynamics CRM has not been ported to the SharePoint platform for the main reason that customizable relational models are not embraced within SharePoint.  Every attempt by the SharePoint product team to incorporate true relational database (RDBMS) integrity, performance, and design into the product have met with limited success.  External lists and lookups are feature deprived and difficult to configure. Access web databases are siloed from other SharePoint features and sites.  Native lookup fields lack basic features and have limited relational support. Database synchronization to or from lists is non-existent.  Many third party vendors have stepped up to fill these gaps, but that leaves Microsoft without the capabilities for internal development utilizing these missing features.  For now, we are stuck in that period where the Dynamics CRM platform is not yet obsolete, but SharePoint (without third party add-ins) is not ready for the port.

    If Microsoft is to succeed in its primary focus towards enterprise software, then these product teams need to work together to bolster SharePoint's feature set as a solutions development platform and then port the Dynamics business solutions onto the improved platform.  This would allow the Dynamics teams to contribute to the design of the SharePoint platform while also removing the CRM team's burden of having to re-invent the wheel regarding the existing and continually improving SharePoint feature set.  Examples of these shared functionality opportunities include: workflow engine, search engine, forms engine, list engine, authorization, authentication, UI, admin consoles, deployment methods, device support, mobile applications, OneDrive for Business synchronization, web services, application object model, BI, content management, metadata, analytics services, patches, upgrades, and MS Office integration.  Microsoft has taken the first steps with incorporating the MS Access team into SharePoint forms and Access web database design, but the SharePoint team also needs the real world requirements and feedback from the Dynamics teams to ensure the future success of both products.

    Nearly 10 years ago, at the last SharePoint Conference he keynoted, I asked Bill Gates if SharePoint would get true relational design functionality.  His answer was that they were working on some of these features (which turned out to be External Lists and Lookup RI) but he still insisted on using SQL RDBMS for highly relational solutions.  This answer was inadequate and shortsighted.  It is now time for Microsoft to step up and take advantage of the monumental opportunity to combine relational design into the worlds most prevalent and feature rich Web OS, SharePoint (aka Office 365).

    Sources and Other Resources

    MS Ignite 2015 Update
    While attending MS Ignite 2015, I used the opportunity to talk with product leads and managers on both Dynamics CRM and SharePoint/Office 365 to find out how this is going down within Microsoft.  Both teams admit that there is very little collaboration between the Dynamics and SharePoint teams and there is a lack of direction from the executive level.  This issue flows from the Microsoft organizational structure and requires executive action or an internal grass roots effort to remediate.  If Microsoft wants to establish itself as the king of business solutions, then we need these teams (Dynamics, SharePoint/Office 365, and MS Access) to combine their platforms and stop wasting time reinventing the wheel.

    One prime example of waste was brought up in the CRM line of business development session.  Since the CRM team does not collaborate with the SharePoint team, they are developing their own separate enterprise search engine rather than utilizing the highly efficient FAST search engine the SharePoint/Office 365 team bought for $1.2 Billion.