October 20th, 2009 by Jeff Holliday
Tags: Beta, Search, SP2010, SPC2009
Posted in Uncategorized | No Comments »
October 20th, 2009 by Jeff Holliday
This is a recap of what I could capture during the Scaling SharePoint 2010 Topologies for Your Organization Session. The big change here is around Service Applications. It allows you more flexibility when scaling your architecture. I will add a follow-up post later covering the migration piece they glanced over in this session as I am attending the migration deep-dive session.
Service Architecture Recap
- Flexible Deployment Model
- Improved Security Model
- Claims Based Authentication
- Cross-farm communication via web services
- Service Isolation
- Each service app uses separate database and optionally separate app pool.
- Support for multiple service apps for a service with different accounts and databases
- Multi-Tenancy
- Some Service Apps can be partitioned to handle multiple tenants
Choosing an Architecture
- Consider both logical and physical aspects
- Start with a logical architecture
- Consolidated vs Distributed
- Build it out as a physical architecture
- Scale out as needed
Logical Topology Considerations
- Business Needs
- Organization many need isolation between respective services (ie. HR, Legal, etc)
- Regulatory Restrictions
- Information Architecture
- Architecture of web sites influence association to Services
Physical Topology Considerations
- Scale
- Scale-up/Scale-out needs influence physical topology
- Link Latency
- Host services close to users and content
- Directory Architecture
- Host services close to directory for better auth
Scaling Services – Option 1
- Scale within the farm
- Scale-up
- Scale-out on each tier
- Add WFEs for content servers
- Additional app servers for computer-intensive services
- Scale SQL for data-centric services
- “Affinitize”
- Specific web apps to WFEs using NLBs
- Services on specific app servers
Scaling Services – Option 2
- Multiple Farms
- Split services into separate farm
- Security boundary
- Usage/scale
- Political/organizational
- patching flexibility
- Multiple services farms
- Geo-distributed
- Load
- Split search out first
Tags: Beta, Search, SP2010, SPC2009
Posted in Uncategorized | No Comments »
October 19th, 2009 by Jeff Holliday
***UPDATE***
Updated with content from Enterprise Search Deep-Dive Session.
Just attended the Enterprise Search Overview for SharePoint 2010 at SPC2009. It focused a lot around the FAST integration with SP2010. Below are some quick notes I took. Obviously I was not able to capture everything, but there is some cool new stuff coming out…
New Capabilities:
- Increased Scalability over MOSS 2007
- Multiple Crawlers
- Query: Partition and mirror the index
- Sub-second latency scaling to 100 Million documents
- Rich Content Processing
- Wizard driven installation
- Full Fault Tolerance
- Native 64-bit: hyper-v support
- Powershell Support
- SCOM support
- Full search reporting
Search Product Line:
- Search Server 2010 Express (Still Free)
- SharePoint Server 2010
- Intranet-wide search, people and expertise search
- FAST Search Server 2010 for SharePoint
- Visual experiences, extreme adaptability and Advanced Content Processing
Scalability:
- Multiple Indexers (Yes! True redundancy!)
- Indexers are stateless crawlers and do not store a copy of the index. They crawl, index, and immediately propagate to Query Servers.
- Index Partitioning
- Query Mirroring
- Multiple Property Databases
- Admin Database + Admin Component (equivalent of SSP database in MOSS)
- Crawl Distribution
- Built-in load balancer distributes hosts to crawl databases
- Crawlers crawl content that is covered by crawl database
- Default configuration can be overwritten using host distribution rules
- Query Distribution
- Low query latency if all index partitions are equal in size
- Distribution by hash of documentId
- Crawlers partitions indexed data and propagate to query servers
- Multiple scale-out options now, including multiple crawl databases on the same SQL server or multiple SQL servers
Engine Enhancements
- Support for regular expressions in Crawl Rules
- Native support for crawling case sensitive repositories
- Ability to prioritize Content Sources to distribute crawler resources
- New Crawl Policy to define how crawler treats error conditions
- Low indexing downtime (Search now only pauses for approx. an hour during backups)
Extensibility Enhancements
*Note: Protocol handler API still supported
- Change web part properties – no code
- Modify XSLT
- Modify config XML
- Refinement Panel – control metadata available for refinement
- Advanced Search – control metadata available for advanced search queries
- Extend OOB web parts programatically
- All OOB web parts are public (Sweet!)
- Connector Framework
- Support for attachments
- Item level security
- Crawl through entity associations
- Inline caching for better citizenships
- Richer crawl options
- Regular full crawl
- Time stamp based incremental crawl
- Change log crawl + deleted count
- Change log + delete log crawl
Ricker Manageability
- Consolidated admin UI dashboard
- Automated service password management through “managed accounts”
- PowerShell support for scripted administration
- Built-in system health monitoring, support for SCOM monitoring and alerting
- Built-in and extensible search analytics
Seach Site:
- Native Wildcard Search
- Type-ahead search box (aka Query Suggestions)
Search Results Page New Features:
- Metadata Extraction
- Refinement Panel
- Filtering by Results Type, Site, Author, Modified Date (displayed in a separate panel kind of like federated results)
- Suggested Searches
- Did you mean?
FAST – Search Results Page Additional New Features:
- Thumbnail of document appears with each result (This is awesome!)
- Preview documents within the search results window
- View in Browser Link
- Similar Results
- Refinement Panel (In addition to items listed above)
- Dynamically generate metadata from documentation for filtering (Metadata fields do not have to be populated first
- Rich Text Best Bets (including images)
- Federate Results directly to desktop
People Search:
- “Address Book Style” Search
- Phonetic name matching
- Nickname matching
- Refinement Panel
- Filtering on Focus, Job Title, Past Projects, Interests
- Vanity Search (Self Search) – When a user looks themselves up in People Search
- Help People Find Me Appears
- Results return the users profile seen by others in the search results. Also returns some metrics including the number of searches that led to them and keywords
- Additional Drill-down for Each User
- Browse in Organizational Chart
- View Recent Content
Connectors:
- Indexing Connectors
- Supports the OpenSearch Standard for Federation
Reporting and Administration:
- Greatly Refined
- Search Administration dashboard (looks much like the one added with MOSS 2007 SP2) is web part based and can be easily customized
- Error log reporting will now allow the administrator to select a specific item and decide whether to remove the item from the index or re-crawl.
There were also several web analytics enhancements for more robust reporting.
More later.
Jeff
Tags: Beta, Search, SP2010, SPC2009
Posted in Uncategorized | No Comments »
October 19th, 2009 by Jeff Holliday
Attending the SharePoint 2009 Conference in Las Vegas, NV USA. Steve Ballmer announced this morning that SharePoint 2010 Beta will be released in November 2009. No specific date in November was given.
Tags: Beta, SP2010, SPC2009
Posted in Uncategorized | No Comments »
May 13th, 2009 by Jeff Holliday
I recently had a request from a client that would allow them to automatically display a Notification on all Sites and Pages. This was easy enough to do because I was already stapling a custom page layout to the publishing infrastructure along with a custom Master Page and CSS. The Master Page was altered to include a pointer to a hidealert.css file residing in a document library I had created on the root site. The Page Layout was then altered to include an IFrame that loaded an HTML file called alert.htm sitting in the same document library on the root site. When the editor renamed the file to something other than hidealert.css (recommended to rename it to showalert.css) the IFrame would appear with the alert.htm contents. Below are the files, description and code:
Master Page – Load hidealert.css
Description: Custom Master Page that had one additional CSS file being loaded to easily turn the Alert visibility on or off. This also enabled it to be done by a content editor with no IT involvement.
<link rel="stylesheet" type="text/css" href="/design/hidealert.css">
Page Layout
Description: Code to Load IFrame. The code was placed above one of the web part zones so they would dynamically slide down if the IFrame loaded.
<iframe src="/design/alert.htm" class="alert" scrolling="no" frameborder="0">
<a href="/design/alert.htm">SharePoint Requires Internet Explorer 5.5 SP2 or higher.</a>
</iframe>
hidealert.css
Description: CSS to Hide Alert IFrame When Not In Use
.alert
{
display:none;
}
alert.htm
Description: HTML to Appear in IFrame (includes javascript to resize IFrame to match)
<html>
<head>
<script type="text/javascript">
function resizeToFit(that){
var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
var objIframe = window.parent.document.getElementById('resizeToFit');
var intScrollX, intScrollY, intWinWidth, intWinHeight, intMaxWidth, intMaxHeight;
var intWhileCount = 0;
do{
// scroll the document by 1 pixel
window.scrollTo(1,1);
// measure the scroll position
intScrollX = (document.all) ? document.body.scrollLeft : window.pageXOffset ;
intScrollY = (document.all) ? document.body.scrollTop : window.pageYOffset ;
// measure window size
intWinWidth = (document.all) ? document.body.offsetWidth : window.innerWidth ;
intWinHeight = (document.all) ? document.body.offsetHeight : window.innerHeight ;
// if the scroll position is not 0
if(intScrollY>0){
// make the window larger
window.resizeBy(0,32);
// make the iframe larger
if(objIframe!=null && !document.all) objIframe.style.height = (objIframe.style.height=='') ? '64px' : (parseInt(objIframe.style.height) + 32) + 'px';
}
// count the steps
intWhileCount += 1;
}while((intScrollX>0 || intScrollY>0) && intWhileCount<900);
}
function waitToFit()
{
setTimeout("resizeToFit()",100);
}
onload = waitToFit;
</script>
</head>
<body onload="resizeToFit();">
<!– Make Change Below This Line –>
This is a test
<!– Make Changes Above This Line –>
</body>
</html>
The content editor was given instructions to rename the CSS file from hidealert.css to showalert.css and add any custom HTML code between the <Make Changes> comment lines in the alert.htm.
Jeff
Tags: Development
Posted in Uncategorized | No Comments »
January 31st, 2009 by Jeff Holliday
I recently learned about hiding items in SharePoint using the HideCustomAction element. I had requests to hide items such as the Site Theme, Site Features, and Site Collection Features in Site Settings (I hide all three in my example below). It is as easy as creating a feature with two XML files.
NOTE: This will remove the links only. Users will still be able to manually browse to the pages if they know the full URL. This is not a replacement for security!
Feature.xml
<?xml version=”1.0″ encoding=”utf-8″ ?>
<Feature Id=”af6215af-f836-4a09-aa3b-8685981d478f”
Title=”Hide Custom Action Links”
Description=”This feature currently hides: site features, site collections features, and site themes.”
Version=”1.0.0.0″
Scope=”Site”
xmlns=”http://schemas.microsoft.com/sharepoint/”>
<ElementManifests>
<ElementManifest Location=”HideCustomActions.xml” />
</ElementManifests>
</Feature>
HideCustomActions.xml
<?xml version=”1.0″ encoding=”utf-8″ ?>
<Elements xmlns=”http://schemas.microsoft.com/sharepoint/”>
<HideCustomAction
GroupId=”SiteAdministration”
HideActionId=”ManageSiteFeatures”
Location=”Microsoft.SharePoint.SiteSettings”
/>
<HideCustomAction
GroupId=”SiteCollectionAdmin”
HideActionId=”ManageSiteCollectionFeatures”
Location=”Microsoft.SharePoint.SiteSettings”
/>
<HideCustomAction
GroupId=”Customization”
HideActionId=”Theme”
Location=”Microsoft.SharePoint.SiteSettings”
/>
</Elements>
John Holliday has a great list of all of the Custom Action IDs on his site: http://johnholliday.net/resources/customactions.html
Jeff
Tags: Development
Posted in Uncategorized | No Comments »
January 27th, 2009 by Jeff Holliday
I recently had a request from a client that required programmatically applying a master page and theme to all new site collections (and sub sites) under a specific managed path. I created a feature to deploy the master page and one to automatically apply the master page (ensynch.master) and theme (ensynch_theme) on site creation. This was done by stapling the feature at the farm level to the required site definitions. Using an IF statement I was able to apply the master page and theme settings to all site collections (and sub sites) created under the managed path. In the example code below the managed path is called MANAGEDPATH.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
namespace Ensynch.SetCustomMaster
{
public class ChangeMaster : Microsoft.SharePoint.SPFeatureReceiver
{
public override void FeatureInstalled
(SPFeatureReceiverProperties properties)
{
}
public override void FeatureUninstalling
(SPFeatureReceiverProperties properties)
{
}
protected string EndOfURL(string url)
{
return url.Substring(url.LastIndexOf(“/”) + 1);
}
public override void FeatureActivated
(SPFeatureReceiverProperties properties)
{
SPWeb CurrentWeb = properties.Feature.Parent as SPWeb;
if (CurrentWeb.ServerRelativeUrl.StartsWith(“/MANAGEDPATH”))
{
if (CurrentWeb.IsRootWeb == true)
{
CurrentWeb.MasterUrl = CurrentWeb.ServerRelativeUrl + “/_catalogs/masterpage/ensynch.master”;
CurrentWeb.CustomMasterUrl = CurrentWeb.ServerRelativeUrl + “/_catalogs/masterpage/ensynch.master”;
}
else
{
CurrentWeb.MasterUrl = “/MANAGEDPATH/” + EndOfURL(CurrentWeb.Site.Url) + “/_catalogs/masterpage/ensynch.master”;
CurrentWeb.CustomMasterUrl = “/MANAGEDPATH/” + EndOfURL(CurrentWeb.Site.Url) + “/_catalogs/masterpage/ensynch.master”;
}
CurrentWeb.ApplyTheme(“ENSYNCH_THEME”);
CurrentWeb.Update();
CurrentWeb.Dispose();
}
}
public override void FeatureDeactivating
(SPFeatureReceiverProperties properties)
{
SPWeb CurrentWeb = properties.Feature.Parent as SPWeb;
CurrentWeb.MasterUrl = CurrentWeb.ServerRelativeUrl + “/_catalogs/masterpage/default.master”;
CurrentWeb.CustomMasterUrl = CurrentWeb.ServerRelativeUrl + “/_catalogs/masterpage/default.master”;
CurrentWeb.ApplyTheme(“none”);
CurrentWeb.Update();
CurrentWeb.Dispose();
}
}
}
Jeff
Tags: Development
Posted in Uncategorized | No Comments »
September 25th, 2008 by Jeff Holliday
So it looks like Microsoft is finally providing support for virtualization products. I have included some links specific to VMware since I had to perform some research for a client.
This link from Microsoft: http://support.microsoft.com/kb/909840 states that “In addition to the Microsoft hardware virtualization software products, support for third-party hypervisor technology is supported for hypervisor technologies that are certified by Microsoft through the Server Virtualization Validation Program (SVVP)”.
This link from VMware: http://www.vmware.com/solutions/whitepapers/new_msoft_policies.html states that VMware is SVVP certified as of August 2008.
This link from Microsoft: http://support.microsoft.com/kb/957006 states that “Microsoft Office SharePoint Server 2007 Service Pack 1 and later versions are supported” in virtualized environments.
This link from Microsoft: http://support.microsoft.com/kb/944987/ states that Microsoft and VMware have established a joint support relationship (although they do not guarantee performance).
And one more for good measure: http://www.microsoft.com/presspass/press/2008/aug08/08-19EasyPathPR.mspx
Tags: Virtualization
Posted in Uncategorized | No Comments »
June 4th, 2008 by Jeff Holliday
I have rewritten this post now that there are more solutions available on the market. See links below:
Microsoft ForeFront for SharePoint (with SP1)
http://www.microsoft.com/technet/prodtechnol/eval/fssp/default.mspx
TrendMicro PortalProtect
http://us.trendmicro.com/us/products/enterprise/portalprotect/
Symantec Protection 5.1 for SharePoint Servers
http://www.symantec.com/business/products/overview.jsp?pcid=2241&pvid=829_1
McAfee PortalShield for Microsoft SharePoint
It does not list SharePoint 2007 under the system requirements on their site but it does in the datasheet PDF so who knows…
http://mcafee.com/us/enterprise/products/email_web_security/portalshield_microsoft_sharepoint.html
Jeff
Tags: Antivirus
Posted in Uncategorized | No Comments »
April 25th, 2008 by Jeff Holliday
I started running into this error when attempting to create a site collection in a different language. I would browse to Central Administration and choose a different language and immediately receive “there was an error in the callback”. If I continued on and ignored the error I would receive “Exception occurred. (Exception from HRESULT: 0×80020009 (DISP_E_EXCEPTION))” after clicking Create. After lots of time wasted scouring the net I found a random post that said they ran into this error when they had a badly formatted webtempXXX.xml file.
http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!126.entry
I had missed a closing quote around my hidden parameter (looked like this: HIDDEN=”TRUE). I fixed it, did an iisreset, and it fixed the problem.
Jeff
Tags: Troubleshooting
Posted in Uncategorized | 2 Comments »