Thursday, September 25, 2014

Office 365 E1-4 Subscription Fail - Now Fixed by Microsoft!

  • You created an account under the Enterprise plans (E1, E2, E3, or E4)
  • You don't have more than 300 users and would like to change to the Office 365 small or midsize business plans (Small Business, Small Business Premium, Midsize Business)
  • As of 10/4/2014 Microsoft now supports this.  Thank you Microsoft! :) 
    • I have redacted the complaint below.

  • Microsoft is scalping its clients by not providing an option to downgrade these accounts
  • Their recommendation is to delete your old account and then create a new account, then migrate all your emails, sites, and apps to the new account!
    • This is a ridiculous requirement that will result in tens of hours of configuration and system downtime
    • This may also result in data loss if not done correctly
  • Downgrading the account must be done by adding the new subscription, reassigning licenses, and then cancelling the old subscription.
    • Note: Just ignore the your data will be deleted warnings.  As long as a user has valid licenses assigned, they will not lose their data.

  • If creating a new Office 365 account NEVER create an E1 plan unless you are immediately surpassing the 300 user limit
  • Please open tickets with MS to support automated conversion from your Enterprise plan to Small Business plan
  • Also petition MS to provide a billing discount solution to the enterprise plans to make up for their incompetence

Tuesday, August 5, 2014

AutoSpInstaller Notes

  • Using AutoSpInstaller to run a multi-server farm install.
  • When provisiong the User Profile Service the second window pops up and immediately closes, then the main window eventually hits a Timed Out error
    • This was caused by the Farm account being unable to run PowerShell commands on the app server despite being configured correctly as local admin and having the log on locally permission
      • When running any command  as the farm account, the following error is displayed: "The term 'Get-ChildItem' is not recognized as the name of a cmdlet, function, script, ...."
        • 'Get-ChildItem' here could be any PowerShell command
    • This anomaly only occurred on the app server in the farm and only with the farm account, but unfortunately, the User Profile Service must be configured as the farm account.
    • The solution ended up being that the PSModulePath environment variable had been removed for the farm account.  We re-added and it ran fine.

Tuesday, June 3, 2014

Office 365, SharePoint, and OneNote Slides

I enjoyed speaking at SharePoint Saturday 2014.  Here is the link to my presentation.

One item I forgot to mention is how to create a new OneNote notebook if OWA is not installed and you do not get the default Notebook for the team site.  The correct way to do this is to create a new Notebook from OneNote and then save it to your SharePoint document library.

Wednesday, May 21, 2014

SharePoint 2013 Virtual Development Environment Installation Guide - Part 1

SharePoint 2010 dev server deployment guide can be found here

    • Your workstation must be running a 64bit processor with Hardware Virtualization enabled
    • You must have enough memory (6 GB), disk space (60 GB), and processor power (2 cores) to run the VM and hold all snapshots.  Disk space will need to grow as you add content.
      • I highly recommend running this VM from a solid state drive (SSD) for optimum performance.  Disk speed is the greatest limiter for performance and if your RAM is limited, then the SSD swap file will help compensate.
    • You must have access to and appropriate licensing for above products
      • ex: MSDN Subscription
    • You must have time (about 8 hours) to install everything.
      • Hints:
        • Look for "Wait" for good break points
        • Snapshots can be used to create other virtual machines or to test minimally installed environments
        • Hyper-V, VirtualBox and VMWare specific settings will be called out
How To
  • Download the Software Listed Above - Wait
  • Enable Windows 8 Hyper-V, install VMWare, or install VirtualBox and the Extension Pack
  • Hyper-V: Enable a Shared/NAT virtual switch
    • ICS can only be set up from one network card at a time in Windows 8 so if you have a laptop and switch between WiFi and Ethernet you will need to change the ICS if you need the VM to access the internet
  • Create a new virtual machine named "sp2013"
    • Hyper-V: Generation 2 option
    • 6144 GB RAM (not dynamic)
    • Network: Use a Shared/NAT connection
    • 125GB dynamically expanding boot hard disk
      • You will likely use 45GB of this without any content
    • Increase the processors: 2-8 range
    • Mount the Windows Server 2012 R2 ISO
    • VirtualBox: Enable RDP support
  • Start the sp2013 virtual machine and boot from DVD
    • Hyper-V: Hold down a key to boot to DVD
      • Don't wait till the prompt to "Press a Key" or you will get this error: "Boot Failed. EFI SCSI Device."
  • The Windows Server 2012 R2 installer should begin
    • Select Windows Server 2012 Standard (Server with a GUI)
    • Select Custom (new install)
    • Short Wait
  • Set a new administrator password
    • pass@word1
  • Install VM guest tools (none for Hyper-V)
    • VirtualBox: VirtualBox Guest Additions
      • Auto Reboot
    • VMWare: VMWare Tools
  • Configure Server Manager: Local Server properties
    • Rename the server to sp2013 (Both the name and the computer description)
      • Note: If you forget this step, you will have a randomly named server.
        I have included instructions for aliasing and configuring a randomly named server
      • Restart later (so we can shut down instead)
    • Enable Remote Desktop
    • Disable IE Enhanced Security Configuration
  • Shut down and take a Snapshot named "Windows Install" then boot the machine
  • Server Manager Dashboard: Add Roles
    • Server Roles
      • Active Directory Domain Services
        • Add features and Include management tools
      • Application Server
      • DNS Server
        • Add features and Include management tools
        • Ignore Static IP warning
      • Web Server (IIS)
        • Add features and Include management tools
    • Features
      • ASP.NET 4.5 (under .NET Framework 4.5)
      • Telnet Client
        • SMTP connectivity troubleshooting tool
      • User Interfaces and Infrastructure
        • Desktop Experience
          • Also adds Ink and Handwriting Services
    • Application Server / Role Services
      • Web Server (IIS) Support
        • Add features and Include management tools
    • Allow auto-restarts then Install
    • Short Wait
    • Click "Promote this server to a domain controller"
      • Select "Add a new forest"
      • Root domain name: sp.local
      • Next
      • Forest and Domain functional level: Windows Server 2012 R2
      • Password: pass@word1
      • Continue pressing Next until Install
        • Short Wait for NetBIOS domain name to be recognized and for Prerequisite check
        • Ignore the 3 warnings
      • Install
      • Short Wait
      • Accept reboot prompt
      • Log back in as Administrator
  • Server Manager Dashboard: Add Roles
    • Features
      • ASP.NET 3.5 Features
      • Before installing specify the following alternate path
        • D:\sources\sxs  (where D: is the Windows Server DVD drive)
  • Verify Internet connectivity by opening Internet Explorer and browse to Bing
  • Disable SmartScreen Notifications from the Action Center
  • Windows Update: Turn on auto updates
    • Install Updates and Wait
    • Reboot when prompted
    • Some errors in windows update may occur as they are installed and the server is rebooted. Here are some solutions:
      • Several updates fail and require reboots
        • Open System Configuration (msconfig)
        • Check Selective startup
          • Uncheck Load Startup items
        • OK
        • Restart when prompted
      • Hyper-V: Security Update for Windows Server 2012 R2 (KB2920189) Failed 800F0922
        • Only occurs on Gen 2 Hyper-V with Secure Boot
        • Temporarily disable Secure Boot in the VM settings while installing the update
  • Open Active Directory Administrative Center (Pin to desktop and Start menu)
    • Administrator account
      • Account / Password Options: Password never expires
      • Organization / Email: administrator@sp.local
    • Create a user in the Users OU
      • Full Name: User
      • User SamAccount: sp\user
      • pass: same as Administrator password
      • Account / Password Options: Password never expires
      • Organization / Email: user@sp.local
    • Add User to the Users group
    • Create a user in the Managed Service Accounts OU
      • Full Name: spservice
      • User SamAccount: sp\spservice
      • pass: same as Administrator password
      • Account / Password Options: Password never expires
  • Open Group Policy Management console
    • sp.local / Domains / sp.local / Domain Controllers / Default Domain Controllers Policy
    • Right click and Edit
      • Policies / Windows Settings / Security Settings / Local Policies / User Rights Assignment
      • Edit Allow log on locally
        • Add the Users group
  • Stop and Disable the following Services
    • DFS Namespace
    • DFS Replication
  • Shut down, snapshot "DC and IIS", and start virtual machine
  • Mount the SQL Server ISO to the VM DVD drive
  • Start SQL Server Setup 
    • Install Stand-alone
    • Use MS Updates
    • Ignore DC and Firewall warnings
    • All Features with Defaults
    • Continue
    • Server Configuration / Service Accounts
      • Use the same account for all SQL Server services
        • specify the sp\spservice account and password created above
    • Continue
    • Analysis Services Configuration
      • Account Provisioning
        • Add Current User
    • Reporting Services Configuration
      • Install only for both
    • Distributed Replay Controller
      • Add Current User
    • Continue then Wait
  • Shut down, snapshot "SQL Server", and start virtual machine
  • Open SQL Server Configuration Manager
    • SQL Server Network Configuration
      • Protocols for MSSQLSERVER
        • Enable Named Pipes
  • Restart the SQL Server (MSSQLSERVER) service
  • If your server is randomly named - not sp2013
    • DNS Manager
      • Forward Lookup Zones
        • sp.local
          • Add a new alias
            • Name: sp2013
            • FQDN: Browse to splocal\servername
              • servername will be a randomly generated value
  • Mount the SharePoint Server 2013 iso
  • Start the Prerequisites installer
    • Run D:\Splash.hta (open with MS HTML Application Host)
    • Short Wait
    • Finish to restart
  • Start the SharePoint Install
    • Enter your Enterprise license key
    • Wait
    • Run the Configuration Wizard
    • Create a new server farm
    • Configuration Database
      • Server: sp2013
      • Name: SharePoint_Config
      • Username: sp\spservice
      • Password: same as above
    • Farm Security Settings
      • Passphrase: same as admin password above
    • Central Admin Web App
      • Port: 8000
      • Auth: NTLM
    • Wait
    • Finish
  • IE will open to the central administration website.
    • Join the experience program (or don't)
    • Start the wizard and configure as follows
  • Central Admin Initial Farm Configuration Wizard steps
    • Use existing managed account: sp\spservice
    • All items should be checked except for Lotus Notes
    • Next
    • Wait
    • Create Root Site Collection
      • Title: SP2013
      • URL: /
      • Experience version: 2013
      • Template: Collaboration \ Team Site
      • OK
        • If you encounter a  error, skip to the next step (AAM config) then delete the running timer job, restart IIS, and re-run the wizard from Central Admin
      • Finish
    • Open central admin (http://sp2013:8000) and add the following Alternate Access Mapping (AAM) internal URLs
  • Set the browser home page to http://sp2013
  • Configure Search from Central Admin
    • Central Admin \ Manage service applications \ Search Service Application (first one)
      • Content Sources
        • Local SharePoint Sites
          • Incremental every 30 minutes (or other value here based on needs)
            • Recommend disabling incremental crawls for performance
          • Note: Continuous crawls will require more resources on VM startup
        • Start a full Crawl
  • Open http://sp2013 in IE
    • Add sp\administrator to the sp2013 Members group
    • Add sp\user to the sp2013 Visitors group
    • Validate that the following workset
      • Any workflow
      • Search scopes
      • My Sites and User Profile
  • Performance Tuning
    • Run the following PowerShell scripts (in SharePoint 2013 Management Shell)
      • Set-SPEnterpriseSearchService -PerformanceLevel Reduced
    • Disable the following system services unless/until needed
      • SQL Server Analysis Services (MSSQLSERVER)
        • From Automatic to Disabled
      • SQL Server Reporting Services (MSSQLSERVER)
        • From Automatic to Disabled
      • Optional (if you do not need SharePoint search and want to reduce memory footprint)
        • Remove the incremental crawl scheduled earlier
    • More tips from Andrew Schwenker
  • Shut down, snapshot "SharePoint Configured", and restart
Optional Configurations

Monday, April 7, 2014

Remove Site Collection and Reclaim Database Disk Space

  • You need to remove a large site collection from your content database.
  • SharePoint 2010 or higher
  • Use PowerShell after hours to remove the site collection:
    Remove-SPSite –Identity http://sitename
  • If you are on 2010 SP1 or later and if you used Central Admin or the SharePoint UI instead of the above PowerShell command or if you specified the -GradualDelete flag, then you must use PowerShell to remove the site collection from the recycle bin and then run the "Gradual Site Delete" timer job (or wait overnight for scheduled job), otherwise skip this step: 

    Get-SPDeletedSite -webapplication http://sitename | Remove-SPDeletedSite
  • Wait a few minutes for the database size to finish reducing (monitor via SQL Management Studio)
    Perform a FULL database backup on the content database (this will truncate the log files)
  • Then shrink the database via SQL command in SQL Management Studio:
    DBCC SHRINKDATABASE ('database_name' ,5 , NOTRUNCATE)
  • Then reorganize the indices (this should run automatically every day, but you can kick it off manually now):
    Run the following from Central Admin Health Analyzer (/Lists/HealthRules/AllItems.aspx) using Run Now:
    Databases used by SharePoint have fragmented indices

Wednesday, March 19, 2014

Xbox One Headset Adapter – Sharkoon Xtatic Pro Headset Fix

Note: This has nothing to do with SharePoint or Solutions Architecture. :)

The problem with the new Xbox One Headset Adapter is that it simply does not work with a standard TRRS 4-pole (3 ring) 3.5mm male to male cable or standard 3.5mm stereo auxiliary cable.

Working example:
2014-03-18 20.49.52

4-pole TRRS Does not work - Xbox audio feeds back into the microphone:
2014-03-18 20.29.57

Does not work (at all) or with stereo 3.5mm:
2014-03-18 20.34.05


Using the Xbox 360 cable (with modifications) that came with the Sharkoon Xtatic Pro and the new 2.5mm adapter together, we get a working cable.
2014-03-18 20.30.312014-03-18 20.30.54 2014-03-18 20.35.57

Unscrew the 2 screws using the small Phillips head screwdriver.
2014-03-18 20.39.16 2014-03-18 20.39.42

Lift up on the plastic wings and then pull back.
2014-03-18 20.41.31 2014-03-18 20.41.53 

I had already clipped the tabs off in the above pictures but you don’t need to do this.  Instead you just cut off the entire wing as pictured here.
 2014-03-18 20.44.05

Post surgery:
2014-03-18 20.44.48

Now just wrap it with a small piece of electrical tape.
2014-03-18 20.46.44-1

Now plug it into the 2.5mm adapter that came with the Xbox One headset adapter and all should work.  However you may want to turn down the adapter game volume so you only get voice through the adapter and not game audio, since you get that through the optical surround sound adapter.  Also note that this is mono, not stereo so you could alternatively modify a TRRS 4-pole cable to provide that stereo headset sound you’ll never use.

Monday, March 10, 2014

SharePoint Farm Infrastructure Architecture Recommendations

Following are some recommendations for a typical SharePoint Development environment topology:

In addition to the corporate Test/Stage and Prod farms, I recommend a standalone Dev VM for each of your MSDN subscriptions/developers.  Development VMs contain a standalone single server farm as well as all development tools.  Any content only solutions (OOB site collection or web scoped) should be configured directly in Production in a new site collection.  Custom development (Visual Studio) is completed on the development VMs, released to Stage, tested, and then released to Prod.  Each Dev VM should be semi-isolated from the corporate network (separate subnet and domain).  Dev VMs should be disposable, distributable, and standardized as in my article here: SharePoint 2010 Development Farm VM

In this way every new developer would only need to copy the VM to their workstation and would be up and running after connecting to Source Control.  They would also have full control of their VM so IT admin requests would be minimized.  Simply recopying the template VM would fix any issues.

The development VM operating system drive should be a solid-state drive.  Optionally, an external BLOB storage and search index partition may be stored on a low cost drive (requires a little more configuration).  Workstations must support hardware virtualization.

The Test/Stage servers may need to be used for debugging and development of integration issues.  Alternatively, a standalone Dev farm on the corporate network can be set aside for this purpose.

In each case, a process for synchronizing Production site collections back onto the Test/Stage and Dev VMs should be maintained.  Usually this includes site collection backups being made available as needed.  However care must be taken to ensure information security policies are maintained.  This can include scrubbing/redacting content, disabling alerts and emails (this may be done through network isolation), and populating sample data.

Wednesday, February 5, 2014

SPC14 - MS SharePoint Conference 2014

I am attending the Microsoft SharePoint Conference 2014 in Las Vegas.  I will update my session notes here.  If you'd like to meet up with me during the conference, please comment here or contact me via LinkedIn or VoteMatrix.  Also, I set up a Sacramento SharePoint Community page on Facebook if you'd like to share your experiences and meet up with other Sacramento SharePoint professionals at the event.

Itinerary and Session Notes

Sunday - 3/2

  • Flight in
  • Blue Man Group

Monday - 3/3


  • Bill Clinton
    • No real info
    • Compared Ukraine policy to the inclusiveness embraced in the gay rights movement
    • Stressed technology for solving inequalit
  • Jared Spatero
    • Intr
  • Jeff Teper
  • Transformation of Office
    • Cloud
      • Accelerating Office 365 updates
    • Personalized Insights
      • Office Graph
      • Oslo Hero Experience
    • Next Gen Porta
  • Julia White - Office 365
    • Groups
      • Yammer included on top navbar
      • Available in Outlook Online
        • Meetings
          • Can import into your calendar
        • Conversations
          • Integrated into Office Web Apps Online
    • Oslo - SharePoint Graph
      • Metro interface
      • Metrics
        • Modified by me
        • Presented to me
        • Liked by me
        • Trending around me
        • Shared with me
    • OneDrive for Business
      • Demoed on ipad
      • demoed mobile website
    • PowerBI
      • Q&A
        • Freetext pivots
          • EX: "Average annual income per person vs population"
      • PowerMap
        • Map visualization of pivot dat
  • Jeff Teper
    • Contextual Apps
    • Robust APIs
    • Services
    • Tools
      • MS Access
  • Arpan Shah - Dev
    • Demo
      • Compose App Feature
        • Outlook Online (Office 365) App
      • Android API app demoed for approval and notification
  • Jeff Teper (IT Pro)
    • Cloud Platform
      • 250000 req per secs
      • 400000 cores
      • 400 PBs storage
      • 99.98% uptime
      • Datacenter acquisitions
      • Privacy
      • Monitoring
      • 1TB site collections
      • Compliance - HIPAA, etc
    • Trust
      • E-discovery
    • Controls
  • Michal Gideon Demos
    • Compliance in Office 365
      • eDiscovery
        • Search query tool allowing policies to be configured
      • Log viewer component
    • Multi-factor auth in Office 365
  • Jeff Teper
    • Cloud onramp
    • 2013 SP1
      • Hybrid switch
    • OneDrive for Business
      • 25GB
  • Jared Spatero
    • File sync and share

Dev Keynote (Rob Lefferts - Director of PM, Brian Jones – GPM)

  • App Model Redux - Principles
    • Open and flexible
    • Consistent platform
    • Multiple Devices


  • Contextual Apps
  • Office 365 Apps


  • Tools
  • Demos
    • Outlook (OWA) Apps integration
      • Works in rich client as well
    • Site provisioning CSOM API
    • Excel App API
      • Bing map sample app
    • DocuSign Outlook integration component demo
    • PollEverywhere poll shows File extension handler is most popular at this event
  • GitHub
    • OfficeDev O365 API open source solution
  • SAP
  • Access Web Apps
  • API Updates


Anyone can build a SharePoint app with MS Access (Jeff Conrad and Chris Usher)

  • MS Access web apps
  • Uses SQL Server for the table back end
    • SQL Azure in Office 365
    • SQL connection info available in Access Client
  • Consuming Lists
    • Link to or import
  • Cascading combo box feature
  • MS using internally
    • Being used to reorganize MS Office and Windows divisions
    • Attorney tracking
    • Training feedback
    • TAPs

Advanced Performance Analysis (Ryan Campbell)

  • Intro
  • Caching
    • BLOB cache too low
    • Page cache too low
  • App pool recycles caused issues
  • Load time and user count per site path request

Tuesday - 3/4

Wednesday - 3/5

Thursday - 3/6

  • Flight out

Monday, January 27, 2014