Friday, October 1, 2010

How to Pass 70-668

So today I passed 70-668. The PRO exam of the SharePoint 2010 Administrator series. And I can't tell you how relieved I am.
I was kind of panicking about this one. Mainly because I had no idea what to expect. The planning guides on technet are horrendously theoretical and you get tangled up in links beyond links in no time. The supporting course is not even finished yet and nobody can tell you what the format will be.
Let me assure you, it will not require a BSc in Taxonomy and governance planning to pass the exam.
It is mainly scenario driven and the questions are pretty straight forward. If you have sat  the 10174 SharePoint 2010 Administration and Configuration course you will have a good foundation to build upon.
From there you have to spend some more time configuring the different farm scenarios. No point in practicing how to use the Wizard! Do it manually and configure each component in your farm. Especially Search!

What to focus on? The most important part is knowing the hardware and software requirements for SharePoint 2010, how to upgrade to 2010, and how to build a small, medium and large farm. Especially how to distribute load of all components correctly in the farm, from Excel Calculation to Search crawling, indexing and querying. Know your Database Mirroring, Failover and Disaster recovery scenarios and know your network configurations and setups for IIS, authentication and firewalls. Most importantly it is hands on experience that will help you pass this exam. Not theory. So get stuck in and start building distributed farm environments. A lot of knowledge from building 2007 Farms will be easily translated into 2010 Farms, with the addition of new distribution capabilities due to the new service architecture.

If you are looking for a course that can help you prepare for this exam, I suggest you sit the Mindsharp/Combined Knowledge SharePoint 2010 Administrator Course. That covers the grunt and most important aspects of configuring and maintainting a best practice SharePoint Farm. Even the 2007 version of this course will give you many of the basic skills which can be translated into 2010 by extra studies. The Mindsharp/Combined Knowledge material is top notch and the trainers back it up with real world experience and vast pools of knowledge. You will never sit a Mindsharp/Combined Knowedge course with a trainer who does not know SharePoint inside out.

If you can't get hold of a Mindsharp/Combined Knowledge course in your area, then sit the Microsoft 50047 Advanced SharePoint 2007 Administration course. That covers all the important Enterprise setups that 5060 and 5061 ignore and gives real advice on farm configuration, disaster recovery and performance considerations. 50047 does assume that you have sat 5060 and 5061 or have equivalent real world experience. After sitting the course you then have to start applying the concepts to 2010 and get your hands dirty with how the 2010 service model can be configured and distributed in a farm environment.

One last tip (Probably the most important one).  Read the questions and possible answers before reading the scenario. That will speed up the process and keep you focussed on the task at hand. Most questions can be answered by just reading one single section of the scenario. So identify the section the question relies on, answer the question in your head and then skim the rest of the scenario to make sure there is no other piece of information that could invalidate your chosen answer.

Some lnks to get you started:
70-668 Syllabus:
http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-668

SharePoint 2010 Resource Center (good list of the most important technet articles you will require)
http://technet.microsoft.com/en-us/sharepoint/ee263917.aspx


Hands on courses to upskill fast:
3grow combined Knowledge SharePoint 2007 Administrator course taught by your's truly
http://training.3grow.co.nz/nz/courses/1-sharepoint-2007-administrator-track

Microsoft 10174 SharePoint 2010 Administration taught by your's truly:
https://www.auldhouse.co.nz/content/202FCFB2-2BC9-4462-B795-E3E21A2E24BD.html?course=COUR2010070714285507145570

Microsoft 50047 SharePoint 2007 Advanced Administration:
https://www.auldhouse.co.nz/content/202FCFB2-2BC9-4462-B795-E3E21A2E24BD.html?course=COUR2009050111225107640409

More good resources on passing this exam collected by Matt Menezes:
https://spmatt.wordpress.com/2013/02/28/how-i-passed-70-668/#comment-450

Thursday, September 30, 2010

SharePoint 2010 limits

I love Microsoft. No where can you expect a definitive answer.

The one article will tell you that the acceptable limit for site collections per web application is 500'000 (http://technet.microsoft.com/en-us/library/ff758647.aspx) and the next article in the same series will tell you it is 250'000 (http://technet.microsoft.com/en-us/library/cc262787.aspx)

Best of all, they both use the same wording!

"An example of a supported limit is the number of site collections per Web application. The supported limit is 500,000, which is the largest number of site collections per Web application that met performance benchmarks during testing. "

vs

"An example of a supported limit is the number of site collections per Web application. The supported limit is 250,000, which is the largest number of site collections per Web application that met performance benchmarks during testing."

In the end these limits are based on benchmark testing. I.e. when the performance of the farm starts falling below an acceptable level. It is not saying that the farm is running at top speed with 249999 site collections and then drops off. No, it is a curve. So imagine the performance curve starting high at 100%, dropping to 95% at 100'000, dropping to 90% at 250'000 and dropping to 80% at 500'000. The key question is, what is an acceptable level of performance. Looks like the author either changed his mind from one article to another, or two authors differed. In the end both are right, I guess. Because only you can define for yourself what acceptable performance is.

And don't forget, these benchmarks are tested in isolation. so when you store tens of thousands of 50MB documents in a document library hundreds of times per site and thousands of times per site collection, the 500'000 benchmark will never hold up. 50 would sound more realistic.

How to Pass 70-667

So you wanna become SharePoint certified? At least now, with SharePoint 2010, we have the MCITP SharePoint Administrator and SharePoint Developer accreditations.

70-667 is the first of two exams to achieve your MCITP SharePoint 2010 Administrator certification
http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-667

And although I can't tell you what the questions will be, let me assure you, they are not trick questions.
I'd say about half of the questions are relevant to 2007 and 2010 alike, some are 2010 specific and others are there to catch you out where something has changed from 2007 to 2010.

The best way of making sure you pass any Microsoft exam on the first go is to use practice tests. Measureup and selftest provide some really good ones for all things techie. Sadly, none of them have gotten round to publishing SharePoint 2010 mock exams yet.

The best way of making sure you fully understand the material is sitting a Microsoft course:  10174 Configuring and Administering Microsoft SharePoint Server 2010
This course contains all the stuff you need to know to feel confident about installing, configuring and running a SharePoint farm. Although officially Microsoft Courses and the exams are not directly related, there are strong overlaps of the material being taught and the questions being asked.

And here is the best news of all! I'm down to teach 10174 at Auldhouse in Wellington the week of 18/10/10.
https://www.auldhouse.co.nz/content/5f8ac4c7-9c13-4a6f-8d51-30762e93882b.html?loc=Wellington
So sign up now to get one step closer to your SharePoint 2010 certificate. I'll even dish out some tips during the course on how to tackle certain types of questions in the exam.

SharePoint 2010 to CAS or not to CAS

Came across a statement by MS which got me thinking

"Untrusted solutions – Deploying custom code in bin folders can cause slow server performance. Every time a page containing untrusted code is requested, SharePoint Server 2010 must perform security checks before the page can be loaded.Unless there is a specific reason to deploy untrusted code, you should install custom assemblies in the GAC to avoid unnecessary security checking."

http://technet.microsoft.com/en-us/library/ff758647.aspx

So now GAC is good and CAS is bad?

Ok folks, let's all stop adhering to a least priviledge concept and start giving our code full trust every time we deploy something. Because if we don't, we'll slow down SharePoint.

I don't think so!

Although I understand the implications of having to check security of the code when Code Access Security Policies are involved, is the overhead of checking the policy when the assembly is loaded really that high? So far I have found no evidence of this causing a noticeable performance degradation other than in theory.

But hey, we have Sandboxed solutions now! So no need for CAS?
Although Sandboxed solutions take away a lot of headache from Server Administrators that previously had to chase down developers to find out why their server just crashed, they are not the golden bullet to all security issues. The question still remains, how much do you trust the code to do what it is supposed to do and not expose loopholes for others to exploit? Especially when installing third party features I personally would think twice about putting the dlls into the GAC of my production machines.

Sadly enough, there are loads of scenarios where you have no other choice but to run the code in the GAC and thus I am very grateful for the Sandbox, where I can run the code in a controlled environment before letting it loose on the whole farm.

For those of you who actually want to know how CAS works in practice, check out this little gem. It is based on .NET 1.1, but is still relevant today.
http://msdn.microsoft.com/en-us/library/ff648663.aspx

oh, and in .NET 4.0 some things have changed in regards to CAS, especially when calling GAC assemblies from partially trusted dlls. check it out here:
http://msdn.microsoft.com/en-us/library/dd984947.aspx

Saturday, May 15, 2010

Send To Email with Attachment

Sending emails with a Sharepoint document as an attachment is a commonly asked for feature in Sharepoint.
Although the mailto: link used to work with the attachment parameter, this has not been supported by Outlook for a long time. Why? because it would be too easy to attach viruses to emails that way. Outlook would have to download a file from the internet and add it to the message. The chance of malicious code injecting into the process is too risky as well as the chance to send infected files to friends and colleagues.

So what is the solution?

If you wish to extend the send to menu in SharePoint, you can create a feature with a custom action to add another link to the ECM (Context Menu) which opens up a custom application page which then allows the user to enter receiver, subject and body. The server then could send the email directly via the configured SMTP server.

But beware!
This should only be done in an intranet scenario where the sending user has been authenticated. Otherwise it could be abused for spamming purposes too easily

Saturday, May 1, 2010

SharePoint Memory Leak

Todd Carter has posted a great article on a nasty little memory leak in SharePoint which has the potential to blow into a huge memory consumption beast for servers which have a lot of traffic and long uptime.
http://todd-carter.com/post/2010/02/08/SharePointe28099s-Sasquatch-Memory-Leak.aspx
In his article he highlights a problem with the HttpApplicatinoException handling of Sharepoint and also posts a very simple and effective solution where he ensures the applicationdomain is treated like a singleton and circumvents tens of thousands of unneeded objects in memory.
Sasquatch-Memory Leak

Monday, March 22, 2010

Adding Rich Text from SharePoint to an Infopath Form

Problem Scenario:
You are trying to add the value from a Rich Text field from SharePoint to an Infopath form. This is a common scenario when trying to create custom Workflows in Visual Studio with Infopath Form support.

Symptoms:
Your Rich Text does not appear in the infopath form. Any text which is not marked up does not appear. Text outside of tags does appear.

Solution:
After some digging I figured that InfoPath requires the xhtml Namespace to be present for any data within a Rich Text field. After a lot of digging into XmlParsers, XMLNameSpaceManagers, XmlNameTables and the likes I found a very simple solution.
When passing the value over to the ExentedProperty in your Workflow, wrap the string with a div tag that has the xmlns='http://www.w3.org/1999/xhtml' attribute on it.

string htmlText = "<div xmlns='http://www.w3.org/1999/xhtml'>"
+ workflowProperties.Item.Title
+ "<br/>"
+ workflowProperties.Item["Body"]
+ "</div>";

TaskProperties.ExtendedProperties["Instructions"] = htmlText ;

Just one thing missing now. Infopath translates your valid xhtml and shows the actual tags. To solve this problem you will need to add some parsing to the load method of the form. Yes, that means that you will need to deploy some code with the form. But it's no biggie. Promise.
A fellow blogger has a great post on how to stop Infopath escaping the html
http://www.chrisbuchanan.ca/Blog/Lists/Posts/Post.aspx?ID=1


UPDATE!
So I thought I nailed it! Well, as long as you do not attempt to open that infopath form using infopath! As that will throw a security exception due to the underlying code. But hey! It's on the server you might say. Being hosted by Infopath Forms Server. Nobody would wanna open it in infopath anyway. Ha. Outlook 2007 does! So when your Outlook 2007 users hit the Edit this Task button, instead of getting a nice RichtText experience, they get a security error complaining about a missing digital signature.

Sorry folks. Back to the basics on this one. I'll just strip out all HTML before passing it to Infopath using Regular expressions. A nice one to achieve this is
string stripped = Regex.Replace(textBox1.Text,@"<(.|\n)*?>",string.Empty);

(found via weblogs.asp.net/rosherove/archive/2003/05/13/6963.aspx

Wednesday, March 3, 2010

i4i XML ruling and Office 2007

I've been getting more and more people ask me what I think about the i4i ruling which has caused Microsoft to pay hundreds of millions in damages and rework Word 2007 and Office 2010.
When I first read about it, I thought "What the heck! who does i4i think they are? The inventors of XML?" But then I read a bit more and Had a look at their patent in more detail

http://blog.seattlepi.com/microsoft/library/20090811i4icomplaint.pdf

In that patent i4i effectively claim to be the inventor of separating content from structure. Kinda what XML is all about. But then remember, the patent was issued back in 1998, when XML was still a vision and SGML was being used more heavily in the publishing industry.

So are they actually claiming to be the inventors of XML? No. Not at all. What they thought of back then effectively was a way of mapping the look and feel of a document to the data. The key here being mapping. Very similar to what xsl was designed to do.

Some info on chronological events back then in the 90s:

02 Jue 1994: i4i file a patent outlining the concept and process of splitting all formatting from the data, keeping both separate and applying a mapping mechanism to create the final output

10 February 1998: first recommendation recorded at w3.org for XML

28 July 1998: i4i patent is approved

18 August 1998: first draft specification for xsl recorded at w3.org

2003: Microsoft launches word 2003 with the ability to store tagged data in a separate area fo the document and use mapping techniques to inject the data in the desired locations on the page and apply formatting to them.

2007: Microsoft launches the new docx office document format which includes the ability to store xml data in a separate location of the file and uses mapping techniques to inject the data into the document.

So did i4i invent xml? No. they took SGML to the next level parallel to the developments in xml and xsl.
Should their patent have been approved? I guess so. It was ground breaking stuff back then and should be appreciated for its innovation. That's what innovation is all about.

Some more info from fellow bloggers:

http://milan.kupcevic.net/custom-xml-microsoft-office-word-data-store-i4i-patent-5787449-msdn/

Wednesday, January 27, 2010

A humble tribute to the expense claim form

In this blogpost I will be revealing my probably most popular demonstration yet. Not that it is completely my work. I borrowed ideas from office online, msdn, Paul Culmsee and other great resources out there to fine tune my favourite demo.
The starting point was a tutorial which you can find in the help system of SharePoint Designer and also online
Workflow example: Route an expense report for review
This simple tutorial will take you through the steps of publishing the sample expense report from infopath to sharepoint and show you how to hook up a simple workflow

That little tutorial has since been refined and made into a video
Demo: Streamline business processes with forms and workflows
This Demo shows how the workflow can work and has some great How To articles going into the depths of using different views and hooking up the form with an approval workflow

Finally Paul came up with a great series of articles showing you how to create a custom leave form in Infopath and touches on a favourite topic of mine. The SharePoint Webservices in part 5 of his humble tribute.
http://www.cleverworkarounds.com/

Originally I was planning on publishing a post on how to build and publish an expense claim form. since then I've realised that Paul's post on the leave form really has everything you need in it already and decided to keep it at the above useful links :-)

Tuesday, January 19, 2010

SendEmailNotification not sending emails

This is a tough one. There could be a whole bunch of reasons why your workflow tasks are not sending the OOB emails when a task is assigned. Here are just a few symptoms and their solutions

1) No emails are being sent, not receiving alerts
-Check your SMTP settings in Central Administration. Under Operations you will find Outgoing Email Settings. Make sure that a valid SMTP server is entered there. Either your local machine is running the smtp service which means the local machine name should be there or you are using an external smtp server to send your emails

-Try to connect to the smtp server using telnet on port 25.
a) open up a command prompt
b) type in: telnet smtp.yourserver.com 25
c) If you can connect, type in EHLO or HELO. If any of those give you back useful message your SharePoint Server is able to communicate with your smtp server.
Try sending a test message via telnet:
EHLO
MAIL FROM:someemail@domain.com
RCPT TO:validemail@domain.com
DATA email body
Test email message
.

Done. Make sure to do the CRLF.CRLF bit to send of the message. If it arrives, then you can rest assured that no smtp server config or firewall is blocking your SharePoint server.

Still no emails?
Make sure that the Windows SharePoint Timer Service is set to automatic and is currently in a running state. If that service crashed, or if someone stops it, no jobs will run, including the task emails and alerts.

Still plum out of luck? (been flying too much Air New Zealand lately) Make sure that the user has an email address defined!!! This sounds simple but can be a bitch when using MOSS.
When using WSS, simply click the header where it says Welcome Dude and select Edit my Settings from the dropdown. Add the missing email.
If using MOSS, you will need to update your profile either using your MySite, but if that is not available, go to the SSP Admin site and edit the profile manually there. But beware! Those changes might take some time to trickle down to your different site collections. To speed up the process open a command on the server and type stsadm -o sync
That will kick start the profile sync bewteen the profile store in SSP and the UserInfo Lists in the different SharePoint Sites.

Problem: You still can not see your changes on the userdisp.aspx pages of your site collections. even after executing the sync command and waiting a few moments paitently.
Reason: the user you are looking at is in the system, but not set as active in SharePoint. The only way to activate a user in SP is for that user to log in and do stuff. like adding, editing or deleting list items or documents. So do some stuff and execute the sync command again. That should do the trick.


So now you can see the email address on the user profile page (userdisp.aspx) but still not receiving task emails for your custom workflow tasks...
Maybe you're just impatient. the timer job is set to run every 5 minutes. to speed this up you can change the frequency using stsadm -o setproperty
the property you're looking for is job-immediate-alerts
the value is "Every 1 minute between 0 and 59"
But set that property at your own risk. It will also affect alerts on the farm.



EMail is set, user is active, smtp is behaving and the Timer Service is running, but no emails from your custom workflow.

Solution: First test if you get emails for any OOB workflows like approval and Feedback. If so, then there is an issue with multiple applicaitons using the same task list. I found assigning a new Task list for my custom workflow resolved this issue and SharePoint would send out mails for new tasks as expected. This behaviour is often caused when sites are exported and imported using stsadm. Not all settings are correctly migrated causing this behaviour to crop up. Another reason to be wary of using the export and import functionality in SharePoint to migrate solutions...

Wednesday, January 13, 2010

SharePoint Automation: Sample Install Script

SharePoint Automation: Sample Install Script

I often get asked for a magic wand when it comes to installing SharePoint. I.e. The magic install script that does it all. Instead of spending loads of time blogging about it, I thought I'd send you all to my favourite stsadm expert, Gary Lapointe. He's got a neat script which uses his own extensions in some cases. Especially the createwebapp one which allows you to specify the folder where the iis site will live. This is not possible with the built in extendvs version

Monday, January 11, 2010

Reducing the amount of Views on your Lists

In some cases you will want to create many versions of the same data, simply filtered by one or two values. You might just go ahead and create a dozen views to do this. But often this will result in bad usability as the View dropdown becomes unmanageable, plus you will need to maintain dozens of versions of the same view, should new columns be added or existing ones removed.
There is a simpler way. Create a page that has links to your view with the filter value in the querystring.
I.e. /Lists/MyList/CustomView.aspx?FilterField1=Department&FilterValue1=Finance

You can use up to three Filters this way.

Friday, January 8, 2010

Getting the current User in Infopath

For one of my clients I recently completed a leave form component. Sadly we could not use Infopath as neither the client was consistently installed across the organisation nor did they have an enterprise license. In my research around this topic I did come across a great 7 part article series showing step by step how to create a Leave Form using Infopath. The articles describe all steps in quite some detail and will get anybody going in no time. Once special gem in his series explains how to set the value of a text field to the full name of the currently logged in user using SharePoint Webservices.

a-humble-tribute-to-the-leave-form-part-5


the other articles in the series can be found here (note that they are all over the place)

a-tribute-to-the-humble-leave-form
a-tribute-to-the-humble-leave-form-part-2
a-tribute-to-the-humble-leave-form-part-3
a-tribute-to-the-humble-leave-form-part-4
a-humble-tribute-to-the-leave-form-part-5
a-tribute-to-the-humble-leave-form-part-6
a-humble-tribute-to-the-leave-form-part-7

Sunday, January 3, 2010

Showing Attachments in List Views

Came across this one for one of my custmers. Wants an ability to upload documents to a list item and then show the uploaded docuuments on the list view.
The solution here is to use Attachments and try to get them to show on the view. By default the Attachments field will only give back a true/false value of 0/1, which is only useful for highlighting the fact that there are attachments.
You can build SharePoint Controls into your views and the one you need to show all the attachments as links is the AttachmentField
<SharePoint:AttachmentsField
ControlMode="Display"
ItemId
="{@ID}"
FieldName="Attachments"
runat
="server"/>

The best place to put this control is in your dataviews. Either create one in SharePoint Designer from scratch or convert an existing view into a DataView through righ clicking it in SPD 2007 and choosing "convert to XSLT DataView". Once converted you can add the control to the page.
But beware. When creating it from scratch you will be missing the Namespace directive (xslns) which ensures that the xsl parser does not get confused with your ASP.NET code. Best bet here is to convert a view and have a look at all the xslns entries it puts in there. It will enlighten you.