<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Just do I(nformation)T(echnology) : Deployment</title><link>http://blogs.technet.com/mpriem/archive/tags/Deployment/default.aspx</link><description>Tags: Deployment</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Load Testen van Sharepoint met VSTS 2008 en VSTT Load Agents – Deel 3</title><link>http://blogs.technet.com/mpriem/archive/2009/05/19/load-testen-van-sharepoint-met-vsts-2008-en-vstt-load-agents-deel-3.aspx</link><pubDate>Tue, 19 May 2009 18:34:24 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3243222</guid><dc:creator>mpriem</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/mpriem/comments/3243222.aspx</comments><wfw:commentRss>http://blogs.technet.com/mpriem/commentrss.aspx?PostID=3243222</wfw:commentRss><description>&lt;p&gt;Het is al weer enige weken geleden dat ik mijn laatste post heb gedaan over het loadtesten van Sharepoint met Visual Studio Team Test. Deze post zal ik wijden aan het maken van webtests en het bundelen daarvan tot een loadtest.
&lt;/p&gt;&lt;p&gt;De webtests zijn de losse acties die je wilt uitvoeren. Een simpele webtest is aan te maken door deze te recorden vanuit Visual studio en verder te bewerken via de GUI. Een geadvanceerde webtest zal veelal geprogrammeerd moeten worden. In deze post ga ik niet in op gecodeerde webtests. Het is met deze blogserie de bedoeling eenvoudig een loadtest uit te voeren op Sharepoint. Met de GUI kan je al aardig wat goede loadtests uitvoeren op basis collaboratie of web content management omgevingen, zonder ook maar een regel code te kloppen.
&lt;/p&gt;&lt;h2&gt;Het Test project
&lt;/h2&gt;&lt;p&gt;Begin met het aanmaken van een test project:&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv1.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Als de configuratie gevolgd is uit mijn vorige blogpost zal er meteen een venster verschijnen voor het aanmaken van een loadtest. Selecteer &lt;strong&gt;Finish&lt;/strong&gt; om de default instellingen te behouden. Selecteer in de Solution Explorer de properties van &lt;strong&gt;LocalTestRun.testrunconfig&lt;/strong&gt;.&lt;br/&gt;In de Web Test kies je bij Number of run iterations voor &lt;strong&gt;One run per data source row&lt;/strong&gt;. Verder kan ervoor gekozen worden de default Browser type veranderen.
&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv2.png" alt=""/&gt;
	&lt;/p&gt;&lt;h2&gt;De WebTest
&lt;/h2&gt;&lt;p&gt;Om een webtest aan te maken kies je in het Visual Studio menu voor &lt;strong&gt;Test &amp;gt; New Test&lt;/strong&gt;. Selecteer vervolgens de &lt;strong&gt;Web Test&lt;/strong&gt; en geef de test een naam. Wanneer je er nu voor kiest de test aan te maken zal Internet Explorer openen om de test te recorden. Ik zal niet elke actie uit de testmix uit eerdere posts uitleggen, omdat deze post anders veel te groot wordt &lt;span style="font-family:Wingdings"&gt;J&lt;/span&gt; (ok, ik ben gewoon te lui). Ik zal echter een redelijk complexe actie stap voor stap uitwerken, welke je kunt gebruiken als referentie voor de overige acties. De actie die ik ga gebruiken als voorbeeld is het Uploaden van een document.
&lt;/p&gt;&lt;p&gt;Browse naar een teamsite en selecteer een document library. Upload vervolgens een document. Je zult nu in de linkerkolom alle opgenomen acties zien:&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv3.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Stop vervolgens de recording door in de linkerkolom voor &lt;strong&gt;Stop&lt;/strong&gt; te kiezen. Er vindt een analyse plaats van de output en je zult in de webtest de recording terugvinden. Als we nu de webtest opnieuw zouden uitvoeren, dan zouden we elke keer hetzelfde document uploaden naar dezelfde document library op dezelfde site. Dit is uiteraard niet wenselijk. We zullen dus een stukje databinding moeten doen. Voordat we dat doen, controleren we eerst onze recording. Als we hem draaien zou hij moeten werken.
&lt;/p&gt;&lt;p&gt;Echter als we de test draaien&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv4.png" alt=""/&gt; krijgen we meteen een error:&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv5.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Als we de requests bekijken, zie je een AccessDenied.aspx request. Sharepoint geeft dus aan dat je geen rechten hebt op de pagina. Dit komt omdat je vanuit gebruikers context de Visual Studio test uitvoert. Je kunt dit echter aanpassen door in het WebTest tabblad de security aan te passen:&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv6.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Zou dit genoeg zijn???
&lt;/p&gt;&lt;p&gt;Helaas, de volgende melding die we krijgen is als volgt:&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv7.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Dit betekent dat Visual Studio het bestand niet kan vinden dat geupload moet worden. Om dit voor nu even op te lossen passen we de File Upload Parameter van het Upload.aspx request aan om het volledige pad naar het bestand te gebruiken:&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv8.png" alt=""/&gt;&lt;br/&gt;LoadAgentKnownIssues.rtf wordt in mijn geval dus C:\Temp\LoadAgentKnownIssues.rtf
&lt;/p&gt;&lt;p&gt;Als we de test nu draaien, gaat alles goed:&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv9.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Op naar het Data Binden!!
&lt;/p&gt;&lt;h3&gt;Databinding
&lt;/h3&gt;&lt;p&gt;Ik maak gebruik van CSV bestanden maar je kunt ook een database of xml bestand gebruiken. Maak dus een CSV bestand aan en geef op de eerste regel headers op. In dit geval gebruik ik een enkele kolom met als header DocumentPath. Op de volgende regels zet ik de namen van de bestanden. Daarnaast heb ik nog een CSV bestand nodig met de verschillende sites die ik wil gebruiken. Geef het bestand de SiteName header en voeg de namen van de sites toe. Als laatste heb ik een bestand nodig met alle gebruikers en de wachtwoorden. We willen natuurlijk met meerdere accounts testen. Dit resulteert in de volgende drie bestanden:
&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv10.png" alt=""/&gt;
		&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv11.png" alt=""/&gt;
		&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv12.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Zoals je ziet vervang ik slechts delen van de padnaam en de URL. Dit doe ik omdat door het minimale tekstdeel te vinden dat variabel gemaakt kan worden, de kans groter is dat het CSV bestand voor meerdere parameters gebruikt kan worden. Ik loop hierdoor ook minder tegen problemen aan met het URL encoden van parameters, maar dat merk je vanzelf als je vaker dit soort tests ontwikkelt.
&lt;/p&gt;&lt;p&gt;Nu is het belangrijk om te onthouden dat je bij het uploaden van files de uploadbestanden beschikbaar moet hebben op de loadagent machines. Nu kan dat op de volgende 2 manieren:
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;De bestanden kunnen toegevoegd worden aan de solution. Je hoeft dan niet het volledige pad te gebruiken. Bij het uitvoeren van de test worden de bestanden gekopieerd naar de load agents (als de &lt;strong&gt;Copy to Output directory&lt;/strong&gt; properies van de bestanden juist ingesteld staan).
&lt;/li&gt;&lt;li&gt;De bestanden moeten handmatig op de loadmachines gezet worden. Je dient dan het volledige pad te gebruiken als waarde. Ik gebruik deze manier.
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Kopieer dus de bestanden naar de gewenste directory op de loadagent(s) en kies vanuit de WebTest tab van het project voor &lt;strong&gt;Add Data Source&lt;/strong&gt;:&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv13.png" alt=""/&gt;"
&lt;/p&gt;&lt;p&gt;Kies voor CSV en selecteer het eerder aangemaakte bestand. Je kunt nu nog bepaalde kolomen selecteren, maar we hebben er maar 1. Kies ervoor het bestand toe te voegen aan het project. Doe dit ook voor het tweede bestand. Nu ze toegevoegd zijn, kun je de waarden gebruiken in de webtest. 
&lt;/p&gt;&lt;p&gt;Om een waarde te gebruiken, kan je in de properties van de test kiezen voor een datasource, maar vaak wil je slechts een gedeelte van een property vervangen door een variable waarde. Dit kan ook; je dient dan de volgende syntax te gebruiken:
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas"&gt;{{&amp;lt;datasourcenaam&amp;gt;.&amp;lt;table&amp;gt;.&amp;lt;kolom&amp;gt;}} &lt;/span&gt;&lt;span style="font-family:Wingdings"&gt;à&lt;/span&gt;&lt;span style="font-family:Consolas"&gt; {{Sites.sites#csv.SiteName}}&lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv14.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Als we nu in elk request de &lt;strong&gt;Url&lt;/strong&gt; en &lt;strong&gt;Expected Response Url &lt;/strong&gt;properties parametriseren hebben we de webtest bijna zover aangepast dat we hem kunnen draaien voor alle sites in ons CSV bestand. Voor en na is als volgt:
&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv15.png" alt=""/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv16.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;De test is nog niet helemaal gereed om tegen alle sites in ons CSV bestand te draaien. Als je het nu draait, mislukken alle iteraties behalve de eerste. Als je naar het mislukte request kijkt, dan krijg je de melding:  &lt;br/&gt;&lt;br/&gt;&lt;span style="font-family:Times New Roman; font-size:12pt"&gt;Request failed: Context parameter '$HIDDEN1.__EVENTARGUMENT' not found in test context
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Dit betekent dat er schijnbaar een parameter gevuld had moeten zijn via een Hidden Field Extraction rule. Het gaat dus ergens eerder al mis, ondanks dat Visual Studio aangeeft dat de eerdere requests goed zijn afgehandeld. Als we van onder naar boven de requests aflopen komen we meteen in het vorige request de boosdoener tegen:&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv17.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Schijnbaar kan Sharepoint een bepaalde List niet vinden. Als je vervolgens requests eens nader bekijkt, zie je dat er in de POST continu dezelfde List parameter wordt meegegeven. Aangezien elke list in een content database een unieke GUID heeft, zal Sharepoint de list in combinatie met een bepaalde site alleen kunnen terugvinden voor de eerste iteratie. We zullen de post parameter dus moeten parametriseren. Als we in voorgaande requests kijken is er nergens een GUID als parameter opgenomen. We kunnen hem dus niet direct uit te recording halen. Als we echter de ListID opzoeken in het ruwe Responses van de eerste iteratie, dan zien we dat in het response van het AllItems.aspx request de GUID een aantal malen voorkomt. We kunnen hem dus uit de response HTML plukken via een Extraction Rule:&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv18.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Nu kan je het met een extraction rule op verschillende manieren aanvliegen, maar de makkelijkste is via een Text Extraction. Gebruik de volgende configuratie:&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv19.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;&lt;em&gt;Een andere manier is om een Regular Expression te gebruiken. Ik gebruik dan als regular expression:
&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;span style="font-family:Consolas"&gt;\{[A-Fa-f0-9]+\-[A-Fa-f0-9]+\-[A-Fa-f0-9]+\-[A-Fa-f0-9]+\-[A-Fa-f0-9]+\}&lt;/span&gt;
		&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;De index (welke occurance hij moet gebruiken) is voor OOTB Sharepoint teamsites 2.
&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Als we de Extraction Rule hebben aangemaakt voor het AllItems.aspx request, kunnen we hem gebruiken als QueryString parameter voor onze POST requests richting Upload.aspx. Zorg dus dat de List parameters als waarde onze GUID parameter gebruiken ( {{GUID}} ).
&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv20.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Zoals je hierboven kunt zien, zijn er nog meer request parameters die aangepast kunnen worden, namelijk RootFolder en Source. Zorg ervoor dat deze ook geparametriseerd zijn. 
&lt;/p&gt;&lt;p&gt;Een andere actie is dat we moeten zorgen dat niet steeds hetzelfde bestand wordt geupload. De laatste databinding is dus voor de te uploaden file. Als we de requests eens nader bekijken zie je in de context parameters van het tweede Upload.aspx request het File Upload Parameter.&lt;br/&gt;&lt;br/&gt;Deze passen we aan met &lt;span style="font-family:Consolas"&gt;{{Files.files#csv.DocumentName}}&lt;/span&gt; is het Data Binden gereed. Het complete overzicht van mijn test ziet er als volgt uit:&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv21.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Als we nu de webtest starten, gaat alles goed:&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv22.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Als je de requests 1 voor 1 doorloopt, zie je in de context parameters dat er op elke site een ander document wordt gebruikt. Je kunt via de opties op de Data Sources nog bepalen of de files iteratief of random worden gekozen.
&lt;/p&gt;&lt;p&gt;Als laatste binden we de user accounts. Dit gaat via het menu, waar we eerder het gebruikers account wijzigde:&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv23.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Nu het Data Binden klaar is, zijn we nog niet klaar. We gaan nu onze webtest opschonen.
&lt;/p&gt;&lt;h3&gt;Opschonen
&lt;/h3&gt;&lt;p&gt;De bedoeling is het uploaden van het bestand te meten. Ik wil alles wat daar niet mee te maken heeft, uit de test hebben. Dit betekent dat alle resources (gif, css en scriptbestanden) niet meegenomen worden, en dat alle voorlooprequests (voor zover ze geen properties vullen) uit de recording gehaald worden. Ik doe dit om mijn meetresultaten niet te overspoelen met deze veelal lichte acties. Ieder heeft hier zo zijn eigen ideeen over, en ik zal niet pretenderen dat dit de enige manier is, maar meetresultaten zien er altijd veel mooier uit als je al die andere requests wel meeneemt, en ik heb altijd "Hope for the best, but plan for the worst". Uiteindelijk komen die requests toch bijna altijd uit clientcache of servercache.
&lt;/p&gt;&lt;p&gt;Goed… Voordat ik begin met het opschonen, sla ik de WebTest altijd even op onder een andere naam als backup. 
&lt;/p&gt;&lt;p&gt;Het opschonen vereist een beetje gezond verstand. Bekijk de requests, probeer de structuur te achterhalen, en het zin van het onzin te scheiden. Het feitelijke uploaden is een POST naar Upload.aspx. Daar ik begonnen ben met het openen van de rootsite en van daaruit gebrowsed ben naar de document library, vertelt mij dat ik die requests normaal gesproken eigenlijk al niet nodig. Je ziet eveneens dat er geen properties zijn opgeslagen aan het ontbreken van de + voor het request. Dit betekent dat er geen waardes in de web context zijn opgeslagen die gebruikt kunnen worden in het volgende request:
&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv24.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Ik verwijder het eerste request dus!
&lt;/p&gt;&lt;p&gt;Wat ik vervolgens meestal doe is tijdens het opschonen elke keer de test gewoon nog een keer aftrappen, om te controleren of de test nog steeds werkt.
&lt;/p&gt;&lt;p&gt;Misschien valt het op dat de resource requests niet zichtbaar zijn in de recording. Dat klopt, maar bij uitvoering worden ze wel opgehaald. Om dit te voorkomen, dien je in de properties van de requests &lt;strong&gt;Parse dependent requests &lt;/strong&gt;op false te zetten (elk request apart):
&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv25.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;De webtest is zo voldoende opgeschoond. We zijn nu bijna klaar met de webtest. Er rest nog 1 belangrijke taak, namelijk het aanmaken van validation rules.
&lt;/p&gt;&lt;h3&gt;Validation Rules
&lt;/h3&gt;&lt;p&gt;Zoals we al een aantal malen hebben gezien geeft Visual Studio soms aan dat een request goed is uitgevoerd, terwijl we niet het verwachte response hebben gekregen. Denk maar aan de AccessDenied.aspx pagina. We kregen successful request van Visual Studio terug, maar dat is niet wat we willen. We zullen hier wat validatie moeten toepassen via Validation Rules.
&lt;/p&gt;&lt;p&gt;Zo begin ik met een validation rule voor dat specifieke geval op elk request. Het makkelijkst is dat via een Text Found rule. Ik gebruik de volgende:&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv26.png" alt=""/&gt;&lt;br/&gt;Hou er rekening mee dat &lt;strong&gt;Pass If Text Found&lt;/strong&gt; op False moet staan. Hij moet namelijk failen als die tekst wordt gevonden op de pagina. Een andere die ik altijd op elke request toepas is een Text Found rule die zoekt naar de tekst: &lt;strong&gt;Troubleshoot issues with Windows SharePoint Services.&lt;/strong&gt; Deze tekst staat namelijk op de Error pagina die Sharepoint gebruikt (tenzij je custom error pages gebruikt, of volledige errormeldingen toestaat in Web.config).
&lt;/p&gt;&lt;p&gt;Met deze twee validation rules vang je bijna alles af. Standaard triggert Visual Studio al een failure op http status codes als 500 en 404. 
&lt;/p&gt;&lt;p&gt;Wat ik persoonlijk in dit scenario nog toevoeg is een Text Found rule voor de filename die geupload wordt. Ik parametriseer de tekst waarop gezocht wordt met  &lt;span style="font-family:Consolas"&gt;{{Files.files#csv.DocumentName}}.&lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Nu is onze webtest eindelijk klaar!!&lt;/strong&gt;
	&lt;/p&gt;&lt;p&gt;Als we nu meerdere tests gemaakt hebben kunnen we de LoadTest gaan configureren:
&lt;/p&gt;&lt;h2&gt;Load Test configuratie
&lt;/h2&gt;&lt;p&gt;Met meerdere webtests kunnen we gaan loadtesten. De configuratie is redelijk eenvoudig. In de solution explorer hebben we onze load test staan (bestand eindigt op .loadtest). Hernoem en dubbelklik deze om een tabblad te krijgen. Standaard ziet de configuratie er zo uit:&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv27.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;De belangrijkste settings zijn de Test Mix, de Browser Mix, de Network Mix en het Load Pattern. De Test Mix staat er nog niet tussen, maar hierin bepaal je welke tests en met welke verdeling uitgevoerd dienen te worden. Verder kunnen we met de browser Mix bepalen welke type browsers gesimuleerd dienen te worden, en met de Network Mix welke type netwerken (Deze laatste knijpt echter alleen de bandbreedte en doet niets met latencies en is daardoor dus niet echt spannend.). De Loadpattern bepaalt welke load er op de omgeving gezet wordt. 
&lt;/p&gt;&lt;p&gt;In deze test laat ik de Browser Mix en Network Mix default en zet ik de LoadPattern op een Step Load. Een stepload stelt mij in staat over een bepaalde periode telkens een aantal gebruikers op te schalen. Dit is aan te bevelen om de de te testen omgeving de Sharepoint en IIS caches te laten opbouwen. Met een constant userload, zet je meteen de maximale load op de omgeving, wat dus tot problemen zou kunnen leiden. Een typische step configuratie ziet er zo uit:&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv28.png" alt=""/&gt;&lt;br/&gt;Met deze configuratie wordt er begonnen met 10 users en wordt er elke 10 seconde 10 users bijgeschakeld totdat we aan het maximum van 200 users zitten.
&lt;/p&gt;&lt;p&gt;Nu is het de bedoeling testen toe te voegen aan de loadtest. Dit gaat door het aanmaken van een testmix. Kies voor &lt;strong&gt;Edit Test Mix&lt;/strong&gt; van het context menu van de load test:&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv29.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;In de Test Mix kan je voor een aantal modellen kiezen, maar de Test Mix op basis van het aantal tests is het meest voor de hand liggende. Ik heb twee tests toegevoegd, welke ik met een 90% - 10% percentage verdeel. Dit betekent dat 90% van de acties het benaderen van de homepage is:&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv30.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Nu is eigenlijk mijn load test al klaar. Ik kan via de Counter Settings nog System Counters toevoegen. Hiervoor moet het visual studio account rechten hebben op de machine (minimaal Performance Log User), en moeten de firewall rules juist zijn ingesteld. Via de Run Settings kunnen we bijvoorbeeld bepalen hoe lang de loadtest moet duren (&lt;strong&gt;Timing&lt;/strong&gt;), maar ook bijvoorbeeld SQL tracing configureren of de connectie pool instellingen aanpassen.
&lt;/p&gt;&lt;p&gt;De Timing instellingen zijn altijd van belang. Je bepaalt met &lt;strong&gt;Run Duration&lt;/strong&gt; de looptijd, met de &lt;strong&gt;Sample Rate&lt;/strong&gt; met welke interval performance counters worden gelogd en met &lt;strong&gt;Warm-Up Duration&lt;/strong&gt; en &lt;strong&gt;Cool-down&lt;/strong&gt;
		&lt;strong&gt;Duration&lt;/strong&gt; hoe lang het duurt voordat er begonnen wordt met het verzamelen van meetgegevens en hoe lang voor het eind er gestopt wordt. Het opwarmen van cache en het opstarten van applicatie pools vervuilen immers alleen de meetresultaten.&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/051909_1533_LoadTestenv31.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Als dit alles is geconfigureerd, kan er begonnen worden met het load testen. Meer hierover in het volgende en laatste deel van deze blogserie &lt;span style="font-family:Wingdings"&gt;J&lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3243222" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/mpriem/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Sharepoint/default.aspx">Sharepoint</category><category domain="http://blogs.technet.com/mpriem/archive/tags/WSS/default.aspx">WSS</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Deployment/default.aspx">Deployment</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Sharepoint+Portal+Server/default.aspx">Sharepoint Portal Server</category></item><item><title>Terminal Services Gateway beveiligen met ISA Server 2006</title><link>http://blogs.technet.com/mpriem/archive/2009/05/09/terminal-services-gateway-beveiligen-met-isa-server-2006.aspx</link><pubDate>Sat, 09 May 2009 11:13:30 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3238069</guid><dc:creator>mpriem</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/mpriem/comments/3238069.aspx</comments><wfw:commentRss>http://blogs.technet.com/mpriem/commentrss.aspx?PostID=3238069</wfw:commentRss><description>&lt;p&gt;Met ISA Server 2006 kan je een Terminal Services Gateway voorzien van extra beveiliging door deze te publishen via een Web Listener. Daar TSG gewoon gebruik maakt van RPC over HTTPs zoals Exchange met Outlook Anywhere dat ook doet, gaat het publishen hiervan net zo gemakkelijk.
&lt;/p&gt;&lt;p&gt;Om te beginnen moeten we SSL certificaten hebben voor zowel de ISA server als de TSGateway. Aangezien de ISA Server draait op Windows Server 2003 hebben we nog niet de mogelijkheid om vanuit de Certificates Snap-in een Certificate Signing Request (CSR) te maken. Veelal moet er een offline request gemaakt worden, omdat dat bijvoorbeeld naar een Public Certificate Authority zoals Verisign gestuurd moet worden. Op Windows Server 2003 hebben we beperkte mogelijkheden. Zo kunnen we een request maken via IIS, maar een webserver installeren voor een CSR is een beetje overdone. Ook kunnen we gebruik maken van een Microsoft CA via de certificate Server Website, maar ook die is niet altijd voor handen. De laatste mogelijkheid is om een certificaat aan te vragen op een Windows 2008 machine met de mogelijkheid de private key te exporteren en dan vervolgens het complete keypair te exporteren en importeren. Dat is echter minder secure, want als het systeem gecompromitteerd wordt, kan het complete keypair gestolen worden, in plaats van alleen de public key. &lt;br/&gt;Dan blijft er dus eigenlijk alleen CertReq.exe over, wat onderdeel is van de Administration Toolkit &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=86b71a4f-4122-44af-be79-3f101e533d95&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=86b71a4f-4122-44af-be79-3f101e533d95&amp;amp;displaylang=en&lt;/a&gt;
	&lt;/p&gt;&lt;p&gt;Hiervoor moet een INF bestand aangemaakt worden volgens de syntax op &lt;a href="http://technet.microsoft.com/en-us/library/cc736326.aspx"&gt;http://technet.microsoft.com/en-us/library/cc736326.aspx&lt;/a&gt;
	&lt;/p&gt;&lt;p&gt;Nu lijkt dit heel moeilijk, maar als je het even goed doorleest valt het allemaal wel mee. Mijn INF bestand ziet er als volgt uit:
&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Consolas; font-size:8pt"&gt;[NewRequest]&lt;br/&gt;   Subject = "CN=rdp.home.com"&lt;br/&gt;   PrivateKeyArchive = FALSE&lt;br/&gt;   KeySpec = 1&lt;br/&gt;   KeyLength = 1024&lt;br/&gt;   Exportable = FALSE&lt;br/&gt;   UserProtected = FALSE&lt;br/&gt;   MachineKeySet = TRUE&lt;br/&gt;   Silent = TRUE&lt;br/&gt;   ProviderName = "Microsoft Enhanced Cryptographic Provider v1.0"&lt;br/&gt;   ProviderType = 1&lt;br/&gt;   UseExistingKeySet = FALSE&lt;br/&gt;   RequestType = PKCS10&lt;br/&gt;   KeyUsage = 0x30&lt;br/&gt;  EncipherOnly = TRUE&lt;br/&gt;[RequestAttributes]&lt;br/&gt;   CertificateTemplate = "WebServer"
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Nu sign ik mijn eigen certificaten, maar Internet CAs hebben vaak bepaalde eisen over de opmaak van het CSR (voornamelijk rondom het Subject en usage attributen). Op de internetsites van deze bedrijven is vaak meer informatie te vinden. Zorg dus dat je aan deze voorwaarden voldoet.
&lt;/p&gt;&lt;p&gt;Na het aanmaken van de INF, kan ik een CSR creëren met het volgende commando:"
&lt;/p&gt;&lt;p&gt;    &lt;span style="font-family:Consolas"&gt;Certreq.exe –new &amp;lt;padnaarinf.inf&amp;gt; &amp;lt;padnaarcsr.req&amp;gt;&lt;/span&gt;&lt;span style="font-family:Wingdings 3"&gt;8&lt;/span&gt;&lt;span style="font-family:Consolas"&gt;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Met het CSR kan je vervolgens het certificaat aanvragen. Wanneer je het certificaat terugkrijgt van de CA (mocht je een Windows 2008 CA hebben zoals ik, kan je via de Certificate Authority MMC snapin het request honoreren, en het certificaat opslaan), dien je het als keypair op te slaan door het volgende commando te draaien:
&lt;/p&gt;&lt;p&gt;    &lt;span style="font-family:Consolas"&gt;Certreq.exe –accept &amp;lt;padnaarcertificaat.cer&amp;gt;&lt;/span&gt;&lt;span style="font-family:Wingdings 3"&gt;8&lt;/span&gt;&lt;span style="font-family:Consolas"&gt;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;De keypair wordt nu opgeslagen in de Computer &amp;gt; Personal certificate store. Vergeet dit laatste commando niet, want je kunt prima het certificaat opslaan via andere wegen, maar dan wordt het niet gekoppeld aan de private key die gebruikt is bij het vervaardigen van het request. Je hebt dan geen keypair en kan het certificaat dus niet gebruiken voor SSL/TLS doeleinden. Nutteloos dus.
&lt;/p&gt;&lt;p&gt;Het tweede CSR is een stuk simpeler. Daar Terminal Services Gateway een Windows Server 2008 service is, kunnen we heel simpel een &lt;strong&gt;Custom Request&lt;/strong&gt; maken vanuit de Certificates MMC snapin.
&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/050909_0813_TerminalSer1.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;In het request, kies je voor het Web Server template. Behoudt de default settings, welke automatisch de common name als Subject neemt. Dit is voldoende voor ons scenario, tenzij je dit interne certificaat ook door een publieke CA wilt laten aanmaken, waardoor je weer met bepaalde eisen te maken kan hebben. Voor een interne CA –bijvoorbeeld de Windows 2008 CA – is dit meestal voldoende. Genereer het certificaat bij de CA (voor Windows 2008 CA via de Certificate Authority MMC Snapin &amp;gt; &lt;strong&gt;New Request&lt;/strong&gt;) en importeer het certificaat in de Computer &amp;gt; Personal certificate store.
&lt;/p&gt;&lt;p&gt;Na het installeren van de certificaten gaan we een Web Listener aanmaken. Dit doe je vanuit de &lt;strong&gt;Network Objects&lt;/strong&gt; in de ISA Console.
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Kies voor &lt;strong&gt;New Web Listener&lt;/strong&gt;.&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/050909_0813_TerminalSer2.png" alt=""/&gt;
		&lt;/li&gt;&lt;li&gt;Geef een naam voor de Web Listener.
&lt;/li&gt;&lt;li&gt;Kies er vervolgens voor Secure verbindingen te gebruiken
&lt;/li&gt;&lt;li&gt;Geef de netwerken op waar de Listener, moet 'Listenen' &lt;span style="font-family:Wingdings"&gt;J&lt;/span&gt;. Ik heb een 3-leg configuratie dus ik kies voor het &lt;strong&gt;External Network&lt;/strong&gt;.
&lt;/li&gt;&lt;li&gt;Kies vervolgens het certificaat dat we zojuist hebben aangemaakt.&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/050909_0813_TerminalSer3.png" alt=""/&gt;
		&lt;/li&gt;&lt;li&gt;Authentication moet op basic &lt;strong&gt;HTTP&lt;/strong&gt; staan, met als directory &lt;strong&gt;Active Directory&lt;/strong&gt; of &lt;strong&gt;LDAP&lt;/strong&gt;. Voor meer informative over LDAP authenticatie, zie &lt;a href="http://www.isaserver.org/tutorials/LDAP-Pre-authentication-ISA-2006-Firewalls-Part1.html"&gt;http://www.isaserver.org/tutorials/LDAP-Pre-authentication-ISA-2006-Firewalls-Part1.html&lt;/a&gt;
		&lt;/li&gt;&lt;li&gt;SSO kan niet met HTTP basic, dus selecteer &lt;strong&gt;Next&lt;/strong&gt; en &lt;strong&gt;Finish&lt;/strong&gt; om af te sluiten.
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Vervolgens moet er een Publishing Rule aangemaakt worden. Dit gaat als volgt:
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Vanuit de ISA Console ga je naar &lt;strong&gt;Firewall Policy &lt;/strong&gt;&amp;gt;&lt;strong&gt; New &lt;/strong&gt;&amp;gt; &lt;strong&gt;Exchange Web Client Access Publishing Rule&lt;/strong&gt;.&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/050909_0813_TerminalSer4.png" alt=""/&gt;
		&lt;/li&gt;&lt;li&gt;Kies vervolgens voor &lt;strong&gt;Exchange 2007&lt;/strong&gt;, &lt;strong&gt;Outlook Anywhere (RPC/HTTPs)&lt;/strong&gt; en deselecteer &lt;strong&gt;Publish additional folders…&lt;/strong&gt;
		&lt;/li&gt;&lt;li&gt;Kies voor &lt;strong&gt;Publish a single Web site or Load balancer&lt;/strong&gt;.
&lt;/li&gt;&lt;li&gt;Kies voor een &lt;strong&gt;SSL&lt;/strong&gt; connectie richting de backend.
&lt;/li&gt;&lt;li&gt;Geef de interne FQDN van de Terminal Services Gateway en de machinenaam of ip adres op:&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/050909_0813_TerminalSer5.png" alt=""/&gt;
		&lt;/li&gt;&lt;li&gt;Kies vervolgens voor &lt;strong&gt;This domain name only (type below:)&lt;/strong&gt; en geef de externe FQDN op die we bij de certificaat aanvraag hebben opgegeven (de CN in het subject, in mijn voorbeeld rdp.home.com).
&lt;/li&gt;&lt;li&gt;Selecteer de Web Listener die we zojuist hebben aangemaakt.
&lt;/li&gt;&lt;li&gt;Kies voor &lt;strong&gt;No Delegation, but client may authenticate directly&lt;/strong&gt;.
&lt;/li&gt;&lt;li&gt;Selecteer een user set en maak de installatie af.
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Verder kan het zijn dat het CA certificaat in de Trusted Certificate Root Authorities store van het Computer Account opgeslagen moet worden. Dit moet gebeuren op de server machines, maar ook op de client machines. Ik gebruik een interne CA, dus ik heb het op alle non-domainjoined machines en mijn client machines handmatig moeten toevoegen. Het certificaat is te vinden in de Computer &amp;gt; Personal store van de CA (veelal bevat deze er minimaal twee, dus controleer goed dat je het CA certificaat te pakken hebt, en niet het computer certificaat of enig ander certificaat)
&lt;/p&gt;&lt;p&gt;Als Laatste vraag je de properties op van de Rule, en selecteer je &lt;strong&gt;Test Rule&lt;/strong&gt; (vanaf ISA 2006 Service Pack 1). Dit controleert de configuratie. Als er iets mis is met certificaten, zal je dat nu zien.
&lt;/p&gt;&lt;p&gt;Nu alles geconfigeerd is, is het tijd om het te testen met een terminal services client. In de advanced properties van de client, geef je de externe FQDN op van de ISA server:
&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/050909_0813_TerminalSer6.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Op de terminal services gateway geef je in je Connection Policy op, welke users connectie kunnen maken met de Gateway. In de Resource Policy geef je de users op die verbinding mogen maken met de resources, en je geeft de machines op die als resource mogen dienen. Als je nu een verbinding maakt, krijg je eerst een prompt voor Connectie, en vervolgens voor de resource. Ik vind het persoonlijk fijn om slechts een enkel account rechten te geven voor de connectie; deze verder geen rechten te geven op enig andere resource, en via AD Auditing te tracken; En vervolgens een ander account te gebruiken voor de connectie naar de resource.
&lt;/p&gt;&lt;p&gt;Mocht je tegen problemen aanlopen, check dan de Terminal Services Gateway logs op de TS gateway en de ISA Logs. Verder is er nog enige informatie te vinden op: &lt;a href="http://technet.microsoft.com/en-us/library/cc731353.aspx"&gt;http://technet.microsoft.com/en-us/library/cc731353.aspx&lt;/a&gt;
	&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3238069" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/mpriem/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Deployment/default.aspx">Deployment</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Security/default.aspx">Security</category></item><item><title>Load Testen van Sharepoint met VSTS 2008 en VSTT Load Agents – Deel 2</title><link>http://blogs.technet.com/mpriem/archive/2009/03/14/load-testen-van-sharepoint-met-vsts-2008-en-vstt-load-agents-deel-2.aspx</link><pubDate>Sun, 15 Mar 2009 01:49:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3212944</guid><dc:creator>mpriem</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/mpriem/comments/3212944.aspx</comments><wfw:commentRss>http://blogs.technet.com/mpriem/commentrss.aspx?PostID=3212944</wfw:commentRss><description>&lt;P&gt;Deze post gaat over het installeren van je testrig en (slechts beknopt) over het vullen van de testomgeving met data. &lt;/P&gt;
&lt;P&gt;Voor een testrig heb je in principe drie componenten nodig. Dat zijn de Test Controller, de Test Agent en de machine waar je Visual Studio Team System 2008 Test Edition draait. Nu kan uiteraard alles op 1 machine worden geïnstalleerd, dus voor deze reeks posts gebruik ik een enkele machine. Normaal gesproken werk je in ieder geval met een losse controller en losse agents. Visual studio voor het aansturen van de tests wordt nog wel regelmatig op de controller geïnstalleerd. De vereisten voor de componenten zijn als volgt: &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="TEXT-DECORATION: underline"&gt;&lt;STRONG&gt;Software: &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;DIV&gt;
&lt;TABLE style="BORDER-COLLAPSE: collapse" border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style="WIDTH: 117px"&gt;
&lt;COL style="WIDTH: 125px"&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR style="BACKGROUND: #4bacc6"&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; BORDER-LEFT: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: #4bacc6 1pt solid" colSpan=2&gt;
&lt;P&gt;&lt;SPAN style="COLOR: white"&gt;&lt;STRONG&gt;Component &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: #4bacc6 1pt solid; BORDER-RIGHT: #4bacc6 1pt solid"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: white"&gt;&lt;STRONG&gt;Software&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; BORDER-LEFT: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none" colSpan=2&gt;
&lt;P&gt;&lt;STRONG&gt;Test agent &lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none; BORDER-RIGHT: #4bacc6 1pt solid"&gt;
&lt;P&gt;Windows Server 2003 RTM*, Vista, XP Sp2 &lt;/P&gt;
&lt;P&gt;Visual Studio Team System 2008 Load Agent &lt;/P&gt;
&lt;P&gt;SQL 2008 Express edition&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; BORDER-LEFT: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px" colSpan=2&gt;
&lt;P&gt;&lt;STRONG&gt;Test Controller &lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: #4bacc6 1pt solid"&gt;
&lt;P&gt;Windows Server 2003 RTM*, Vista, XP Sp2 &lt;/P&gt;
&lt;P&gt;Visual Studio Team System 2008 Load Controller &lt;/P&gt;
&lt;P&gt;(SQL Server 2008 optioneel. SQL vereist Windows Server 2003 SP2)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 37px"&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; BORDER-LEFT: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none" colSpan=2&gt;
&lt;P&gt;&lt;STRONG&gt;Tester PC&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none; BORDER-RIGHT: #4bacc6 1pt solid"&gt;
&lt;P&gt;Visual Studio Team System 2008 Test Edition SP1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P&gt;* Test Agents en Controllers vereisen Windows Server 2003 RTM of hoger service pack. Windows Server 2008 wordt officieel niet ondersteund. Windows Vista echter wel, dus het zal waarschijnlijk ook wel werken op Server 2008, maar waarom zou je je niet aan de prerequisites houden? &lt;/P&gt;
&lt;P&gt;Mocht je voor de Tester PC Windows Server kiezen, dien je de 'Internet Explorer Enhanced Security' uit te zetten. Dit voorkomt dat je problemen krijgt bij het recorden van de test scenario's. &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="TEXT-DECORATION: underline"&gt;&lt;STRONG&gt;Hardware: &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Bij het kiezen van de hardware moet je er rekening mee houden dat de Load Agents voornamelijk de zwaarste last leggen op de machines. Ze zijn zeer hongerig naar CPU cycles en geheugen; dus het is aan te raden gewoon hele dikke bakken te nemen, met minimaal een moderne dual core, draaiend op 64 bits architectuur met 8GB aan geheugen. Verder is het testen op een Gigabit verbinding eigenlijk ook wel vereist, daar zware tests een flinke hoeveelheid bandbreedte kunnen verbruiken. Dit ligt uiteraard aan het type test en de test scenario's, maar houd er rekening mee. Vaak moet hardware ruime tijd van tevoren worden aangevraagd en je wilt niet tegen beperkingen aanlopen als het testplan toch anders wordt dan vooraf gedacht. Je zou er ook aan kunnen denken om hardware te huren. Met virtuele machines is geen ervaring, waardoor het lastig is in te schatten of dit een goede optie is. Dit zou getest moeten worden. &lt;/P&gt;
&lt;DIV&gt;
&lt;TABLE style="BORDER-COLLAPSE: collapse" border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style="WIDTH: 97px"&gt;
&lt;COL style="WIDTH: 86px"&gt;
&lt;COL style="WIDTH: 79px"&gt;
&lt;COL style="WIDTH: 64px"&gt;
&lt;COL style="WIDTH: 67px"&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR style="BACKGROUND: #4bacc6"&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; BORDER-LEFT: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: #4bacc6 1pt solid"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: white"&gt;&lt;STRONG&gt;Configuratie&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: #4bacc6 1pt solid"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: white"&gt;&lt;STRONG&gt;Component &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: #4bacc6 1pt solid"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: white"&gt;&lt;STRONG&gt;CPU &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: #4bacc6 1pt solid"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: white"&gt;&lt;STRONG&gt;HD &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: #4bacc6 1pt solid; BORDER-RIGHT: #4bacc6 1pt solid"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: white"&gt;&lt;STRONG&gt;Memory &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; BORDER-LEFT: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none"&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;lt; 1000 virtual users &lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none"&gt;
&lt;P&gt;Test agent &lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none"&gt;
&lt;P&gt;2.6 GHz &lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none"&gt;
&lt;P&gt;10 GB &lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none; BORDER-RIGHT: #4bacc6 1pt solid"&gt;
&lt;P&gt;4 GB &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; BORDER-LEFT: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;lt; 2000 virtual users &lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;Test agent &lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;Dual proc 2.6 GHz &lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;10 GB &lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: #4bacc6 1pt solid"&gt;
&lt;P&gt;8 GB&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; BORDER-LEFT: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none"&gt;
&lt;P&gt;&lt;STRONG&gt;N* 2000 virtual users &lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none"&gt;
&lt;P&gt;Test agent &lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none"&gt;
&lt;P&gt;Scale out N agents elk met Dual 2.6 Ghz &lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none"&gt;
&lt;P&gt;10 GB &lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none; BORDER-RIGHT: #4bacc6 1pt solid"&gt;
&lt;P&gt;8 GB&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; BORDER-LEFT: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;lt; 30 servers in test (test agents en te testen servers). &lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;Test Controller &lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;2.6 GHz &lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;Met SQL : (N* 24 uur testdata * 10GB) + 10GB &lt;/P&gt;
&lt;P&gt;Zonder SQL : &amp;lt; 1 GB&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: #4bacc6 1pt solid"&gt;
&lt;P&gt;Met SQL : 4 GB &lt;/P&gt;
&lt;P&gt;Zonder SQL : 2 GB&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; BORDER-LEFT: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none"&gt;
&lt;P&gt;&lt;STRONG&gt;N* 30 computers in the test environment. This includes agents and servers under test. &lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none"&gt;
&lt;P&gt;Test Controller &lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none"&gt;
&lt;P&gt;N* 2.6 GHz processors &lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none"&gt;
&lt;P&gt;Met SQL : (N* 24 uur testdata * 10GB) + 10GB &lt;/P&gt;
&lt;P&gt;Zonder SQL : &amp;lt; 1 GB&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: medium none; BORDER-RIGHT: #4bacc6 1pt solid"&gt;
&lt;P&gt;Met SQL : 4 GB &lt;/P&gt;
&lt;P&gt;Zonder SQL : 2 GB &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 37px"&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; BORDER-LEFT: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;Tester PC&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;2.0 GHz&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;3GB&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #4bacc6 1pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: #4bacc6 1pt solid"&gt;
&lt;P&gt;1 GB&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P&gt;In principe geeft deze tabel aan dat je dus een extra Test Agent moet bijschalen voor elke 2000 actieve users&lt;STRONG&gt;. &lt;/STRONG&gt;Voor elke 30 agents heb je een controller nodig. &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="TEXT-DECORATION: underline"&gt;&lt;STRONG&gt;Netwerk &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Voor de simulaties heb je in ieder geval een tweetal accounts nodig voor de agents en de controller (we gaan even uit van een Domain installatie. Workgroup is ook mogelijk). Maak dus twee service accounts aan voor de controller en voor de agents. Het controller account moet minimaal toegevoegd zijn aan de Performance Log Users op de machines die getest gaan worden (dus de sharepoint farm servers). Houd er ook rekening mee dat de Windows Firewall in de weg kan zitten. Voor Windows Server 2008 en Vista zal je meer stappen moeten verrichten zoals beschreven in &lt;A href="http://blogs.msdn.com/edglas/pages/load-agent-and-load-controller-installation-and-configuration-guide.aspx" mce_href="http://blogs.msdn.com/edglas/pages/load-agent-and-load-controller-installation-and-configuration-guide.aspx"&gt;http://blogs.msdn.com/edglas/pages/load-agent-and-load-controller-installation-and-configuration-guide.aspx&lt;/A&gt; Daar staat de Firewall standaard aan en de services die nodig zijn om de counters te loggen standaard uit. &lt;/P&gt;
&lt;P&gt;Als je een testscenario met NTLM of Kerberos authenticatie providers wilt maken, zal je ook test users moeten aanmaken. Een voorbeeld is te vinden op : &lt;A href="http://www.petri.co.il/create_users_for_testing_purposes.htm" mce_href="http://www.petri.co.il/create_users_for_testing_purposes.htm"&gt;http://www.petri.co.il/create_users_for_testing_purposes.htm&lt;/A&gt; Nu hoef je niet voor elke virtual user een testuser aan te maken, maar voor elke 25 users zou ik toch wel een account willen hebben, met een minimum van 10. Dus 10.000 virtual users maakt 400 user accounts. Dit om toch enigszins het effect van authenticatie op de Sharepoint omgeving te kunnen benaderen, MySites en ook om het effect van audiencing mee te kunnen nemen in de tests. &lt;/P&gt;
&lt;H2&gt;Installatie Visual Studio&lt;/H2&gt;
&lt;P&gt;De installatie van Visual Studio spreekt redelijk voor zich. Alle prerequisites worden door de installer zelf geïnstalleerd. Visual studio is een zeer uitgebreid product, maar voor onze tests heb je in principe alleen de testing tools en 1 van de language tools nodig. Deze laatste is om de VS IDE te verkrijgen. Kies daarom alleen de Team System Test Tools categorie en een taal naar keuze (in mijn geval C#). De rest van de installatie spreekt voor zich. Installeer verder SP1 en de laatste fixes. &lt;/P&gt;
&lt;P&gt;&lt;IMG alt="" src="http://blogs.technet.com/blogfiles/mpriem/031409_2249_LoadTestenv1.png" mce_src="http://blogs.technet.com/blogfiles/mpriem/031409_2249_LoadTestenv1.png"&gt; &lt;/P&gt;
&lt;H2&gt;Installatie Load Agents en Load Controller &lt;/H2&gt;
&lt;P&gt;Voor de installatie van de Load Agents en de Load controller zijn de twee service accounts vereist die eerder zijn aangemaakt. Bij het starten van de installatie zal je de keuze krijgen een Agent of Controller te installeren. &lt;/P&gt;
&lt;P&gt;&lt;IMG alt="" src="http://blogs.technet.com/blogfiles/mpriem/031409_2249_LoadTestenv3.png" mce_src="http://blogs.technet.com/blogfiles/mpriem/031409_2249_LoadTestenv3.png"&gt; &lt;/P&gt;
&lt;P&gt;Eerst installeer je de Test Controller. Deze zal meteen ook SQL Express installeren, maar die heb ik niet nodig aangezien ik de volledige versie&amp;nbsp;van SQL ga installeren. Bij het starten van de controller installatie vraagt de installer alleen om de credentials van het controller service account. De rest van de installatie spreekt voor zich. Na installatie is de Controller als windows service geïnstalleerd en kan je hem configureren via Visual Studio. &lt;/P&gt;
&lt;P&gt;Vervolgens installeer je de Agent software. Tijdens deze installatie wordt enkel gevraagd naar het agent service account en de naam van de agent controller. Geef dus de servernaam op waar de controller draait, in dit geval de lokale machine.&lt;/P&gt;
&lt;H2&gt;Installatie Visual Studio Service Pack 1&lt;/H2&gt;
&lt;P&gt;Na het installeren van de agents en controllers, moet Service Pack 1 voor Visual Studio geinstalleerd worden. Dit omdat anders SQL Server 2008 niet zal installeren. Deze vereist namelijk SP1 voor Visual Studio. SP1 update zowel de IDE als de controller en agents.&lt;/P&gt;
&lt;P&gt;Voor het installeren van Service Pack 1 heb je echter ook de Visual Studio 2008 Service Pack Preparation tool nodig. Deze is te vinden op &lt;A href="http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=A494B0E0-EB07-4FF1-A21C-A4663E456D9D&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=A494B0E0-EB07-4FF1-A21C-A4663E456D9D&amp;amp;displaylang=en"&gt;http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=A494B0E0-EB07-4FF1-A21C-A4663E456D9D&amp;amp;displaylang=en&lt;/A&gt; . Service Pack 1 (ISO) op &lt;A href="http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=27673C47-B3B5-4C67-BD99-84E525B5CE61&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=27673C47-B3B5-4C67-BD99-84E525B5CE61&amp;amp;displaylang=en"&gt;http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=27673C47-B3B5-4C67-BD99-84E525B5CE61&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;Installatie SQL Server&amp;nbsp;&lt;/H2&gt;
&lt;P&gt;Net zo makkelijk als de installatie voor Visual Studio&amp;nbsp;is de installatie van SQL Server 2008, mocht je daarvoor kiezen. De installer installeert zelf de prerequisites, en bij het kiezen van de componenten draait het alleen om de Database Engine en de management tools. Verder kan je de SQL Server Agent gewoon onder NETWORK SERVICE en de SQL Server Service onder LOCAL SYSTEM laten draaien. De rest van de installatie spreekt voor zich. &lt;/P&gt;
&lt;P&gt;&lt;IMG alt="" src="http://blogs.technet.com/blogfiles/mpriem/031409_2249_LoadTestenv2.png" mce_src="http://blogs.technet.com/blogfiles/mpriem/031409_2249_LoadTestenv2.png"&gt; &lt;/P&gt;
&lt;H2&gt;Configuratie Controller&lt;/H2&gt;
&lt;P&gt;Na installatie van de software dient de controller via Visual Studio geconfigureerd te worden. Maar maak eerst een LoadTest database aan op de SQL server instance door &lt;STRONG&gt;loadtestresultsrepository.sql&lt;/STRONG&gt; uit te voeren op de SQL server (gebruik SQLCMD of dubbelklik en execute via de SQL Management Studio). &lt;STRONG&gt;Pas wel op… Als er reeds een LoadTest database bestaat, wordt deze gedropped&lt;/STRONG&gt;. Na het aanmaken van de database dien je nog het Controller service account db_datawriter of db_owner rechten te geven op deze database. &lt;/P&gt;
&lt;P&gt;Vervolgens start je Visual Studio en configureer je de IDE en de test controller voor de webtests. Kies bij het opstarten voor de Team Test Settings om de IDE voor testprojecten te optimaliseren. &lt;/P&gt;
&lt;P&gt;&lt;IMG alt="" src="http://blogs.technet.com/blogfiles/mpriem/031409_2249_LoadTestenv4.png" mce_src="http://blogs.technet.com/blogfiles/mpriem/031409_2249_LoadTestenv4.png"&gt; &lt;/P&gt;
&lt;P&gt;Ga vervolgens naar &lt;STRONG&gt;Tools &amp;gt; Options &amp;gt; Test Tools &amp;gt; Test Project&lt;/STRONG&gt; in de menubalk en configureer het standaard project template: &lt;/P&gt;
&lt;P&gt;&lt;IMG alt="" src="http://blogs.technet.com/blogfiles/mpriem/031409_2249_LoadTestenv5.png" mce_src="http://blogs.technet.com/blogfiles/mpriem/031409_2249_LoadTestenv5.png"&gt; &lt;/P&gt;
&lt;P&gt;Creëer daarna een nieuw project via &lt;STRONG&gt;File &amp;gt; New &amp;gt; Project &lt;/STRONG&gt;in de menubalk en kies voor een test project. &lt;/P&gt;
&lt;P&gt;&lt;IMG alt="" src="http://blogs.technet.com/blogfiles/mpriem/031409_2249_LoadTestenv6.png" mce_src="http://blogs.technet.com/blogfiles/mpriem/031409_2249_LoadTestenv6.png"&gt; &lt;/P&gt;
&lt;P&gt;Het project wordt aangemaakt en je krijgt een wizard voor je kiezen. Negeer deze even en configureer eerst de controller agent door te kiezen voor &lt;STRONG&gt;Test &amp;gt; Administer Test Controllers&lt;/STRONG&gt; in de menubalk. Voer de naam van de server in het &lt;STRONG&gt;controller&lt;/STRONG&gt; veld. Een enter zou het scherm moeten refreshen. Als je problemen hebt met het benaderen van de controller service, probeer deze dan een keer te herstarten. Controlleer ook of je dezelfde versies van de controller en agent gebruikt door de versie van Microsoft.VisualStudio.QualityTools.LoadTestFramework.dll te controleren. Een mismatch kan ervoor zorgen dat de agent als disconnected in de agent lijst komt: &lt;/P&gt;
&lt;P&gt;&lt;IMG alt="" src="http://blogs.technet.com/blogfiles/mpriem/031409_2249_LoadTestenv7.png" mce_src="http://blogs.technet.com/blogfiles/mpriem/031409_2249_LoadTestenv7.png"&gt; &lt;/P&gt;
&lt;P&gt;Zoals je in het venster hierboven kan zien, zal de controller standaard de SQL EXPRESS installatie gebruiken als datastore. Als je de stappen voor het aanmaken van de LoadTest database in SQL goed hebt uitgevoerd kan je deze nu veranderen. Gebruik dus de … knop om deze te veranderen naar de juiste SQL instance: &lt;/P&gt;
&lt;P&gt;&lt;IMG alt="" src="http://blogs.technet.com/blogfiles/mpriem/031409_2249_LoadTestenv8.png" mce_src="http://blogs.technet.com/blogfiles/mpriem/031409_2249_LoadTestenv8.png"&gt; &lt;/P&gt;
&lt;H2&gt;Datapopulatie &lt;/H2&gt;
&lt;P&gt;Ik ga in deze post niet geheel uit de doeken doen hoe je een testomgeving voorziet van de juiste testdata, maar ga er nu wel kort bij stil staan. &lt;BR&gt;Om goed te kunnen testen moet je een goed gevulde testomgeving hebben. Ik kies er zelf voor om minimaal 25% van de uiteindelijke datagrootte te verkrijgen. Dus voor 1TB aan uiteindelijke data, wil ik minimaal testen op 250GB testdata. Ik vul de omgeving volgens de capaciteitsplanning die vastgelegd is voor de omgeving. Als er in de Architectuur gekozen wordt voor sites van maximaal 500MB, ga ik daar niet overeen. Idem voor de grootte van de contentdatabases. Probeer zo goed mogelijk de uiteindelijke structuur van de omgeving na te bootsen. Hierbij wat tips voor het vullen van de data: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Gebruik &lt;A href="http://www.codeplex.com/sptdatapop" mce_href="http://www.codeplex.com/sptdatapop"&gt;http://www.codeplex.com/sptdatapop&lt;/A&gt; om sites aan te maken, en lists te vullen. Op deze site staan eveneens veel voorbeelden. &lt;/LI&gt;
&lt;LI&gt;Gebruik powershell om scripts te maken om makkelijk documenten te uploaden naar document libraries. (ik zal binnenkort wat scripts delen) &lt;/LI&gt;
&lt;LI&gt;Gebruik powershell om mysites te genereren.&lt;/LI&gt;
&lt;LI&gt;Gebruik echte data. Probeer van de klant data van fileservers te verkrijgen. &lt;/LI&gt;
&lt;LI&gt;Probeer zoveel mogelijk unieke data te gebruiken. Als het even kan alle data. Het hergebruiken van data op meerdere plekken heeft een negatieve invloed op de testresultaten bij Search tests, daar een duplicate niet zorgt voor een groeiende index, slechts voor extra pointers voor de geïndexeerde chunks. Toch kan het soms niet anders, en moet je een dataset meerdere keren gebruiken. Voor search zou je er nog voor kunnen kiezen om een externe datasource te indexeren als het mogelijk is, om toch een redelijke index te hebben voor wat search tests. Toch is dat niet helemaal hetzelfde omdat security trimming daar niet plaats vindt. &lt;/LI&gt;
&lt;LI&gt;Zorg voor goed gevulde sites, maar hou je aan de capaciteits adviezen in &lt;A href="http://technet.microsoft.com/en-us/library/cc262787.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc262787.aspx"&gt;http://technet.microsoft.com/en-us/library/cc262787.aspx&lt;/A&gt; . Dus geen lists van meer dan 5000 items. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Dit is het einde van deel 2. In de volgende post zal ik laten zien hoe je test scenarios aanmaakt. Tot dan!&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3212944" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/mpriem/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Sharepoint/default.aspx">Sharepoint</category><category domain="http://blogs.technet.com/mpriem/archive/tags/WSS/default.aspx">WSS</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Deployment/default.aspx">Deployment</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Portal+Server+2003/default.aspx">Portal Server 2003</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Development/default.aspx">Development</category></item><item><title>Load Testen van Sharepoint met VSTS 2008 en VSTT Load Agents – Deel 1</title><link>http://blogs.technet.com/mpriem/archive/2009/03/14/load-testen-van-sharepoint-met-vsts-2008-en-vstt-load-agents-deel-1.aspx</link><pubDate>Sat, 14 Mar 2009 22:19:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3212897</guid><dc:creator>mpriem</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/mpriem/comments/3212897.aspx</comments><wfw:commentRss>http://blogs.technet.com/mpriem/commentrss.aspx?PostID=3212897</wfw:commentRss><description>&lt;P&gt;Het load testen van een Sharepoint omgeving is niet iets waar makkelijk over gedacht moet worden. Voor een test moet je toch al gauw 6 tot 8 weken uittrekken om het gedegen voor te bereiden. Dit is uiteraard allemaal afhankelijk van wat je precies wilt testen en hoeveel tests je uit wilt voeren. Een voorbeeldplanning voor een doorsnee test zou er als volgt uitzien: &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;DIV&gt;Opstellen van een Testplan (5 dagen) &lt;/DIV&gt;
&lt;OL&gt;
&lt;LI&gt;Bepalen testscenarios &lt;/LI&gt;
&lt;LI&gt;Bepalen verwachte resultaten &lt;/LI&gt;
&lt;LI&gt;Planning en resources vaststellen &lt;/LI&gt;
&lt;LI&gt;Uitwerken testplan &lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Configureren testomgeving en test rig (5 dagen) &lt;/DIV&gt;
&lt;OL&gt;
&lt;LI&gt;Installeren testcontroller en agents &lt;/LI&gt;
&lt;LI&gt;Configureren testomgeving (sharepoint configuratie, aanmaken test accounts, dns etc) &lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Vullen testomgeving met testdata (5 dagen) &lt;/DIV&gt;
&lt;OL&gt;
&lt;LI&gt;Ontwikkelen data populatiescripts &lt;/LI&gt;
&lt;LI&gt;Verzamelen testdata van fileshares of andere media &lt;/LI&gt;
&lt;LI&gt;Vullen van de data &lt;/LI&gt;
&lt;LI&gt;Vullen van de Index &lt;/LI&gt;
&lt;LI&gt;Profile Import &lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Ontwikkelen webtests en load tests (10 dagen) &lt;/DIV&gt;
&lt;OL&gt;
&lt;LI&gt;Maken van de test scenario's &lt;/LI&gt;
&lt;LI&gt;Databindings maken voor webtests &lt;/LI&gt;
&lt;LI&gt;Testen van webtests &lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Uitvoeren van de loadtests (2 - 10 dagen) &lt;/DIV&gt;
&lt;OL&gt;
&lt;LI&gt;Uitvoering van verschillende tests &lt;/LI&gt;
&lt;LI&gt;Opnieuw uitvoeren van tests als verwachte resultaten uitblijven en aanpassing in infrastructuur vereist is. &lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;
&lt;LI&gt;Analyse van testresultaten (2 – 5 dagen) &lt;/LI&gt;
&lt;LI&gt;Opschonen testdata (1 dag) &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Zoals je ziet komt er veel bij kijken. Voornamelijk het ontwikkelen van de testscenario's en het vullen van de testomgeving met testdata is een zware taak. Webtests aanmaken in Visual Studio is namelijk niet zo gemakkelijk als het lijkt. Hier zal ik verder op ingaan in het 4&lt;SUP&gt;e&lt;/SUP&gt; deel van deze serie posts. &lt;/P&gt;
&lt;P&gt;Voordat je ook maar begint met het uitvoeren van tests, moet je duidelijk zien te krijgen wat je precies wilt gaan testen en wat je verwacht te gaan scoren op elke test. Nu gaat deze reeks posts over Load testing, maar naast het testen van je applicaties en infrastructuur, moet je ook nadenken over het eventueel testen van procedures, processen en functionaliteit. Denk bijvoorbeeld aan het testen van een Disaster Recovery plan, het testen van High Availability mogelijkheden en het testen van je custom workflows. Puur en alleen load testen is niet voldoende om te bepalen of de architectuur die gekozen is, voldoet aan de verwachtingen van de business en de vastgestelde service levels, en goed aansluit op de structuur van de beheerorganisatie. &lt;/P&gt;
&lt;P&gt;Goed… Er is dus besloten Load Tests uit te voeren, maar wat gaan we precies testen en wat verwachten we van de tests? Je kan voor verschillende doeleinden een load test uitvoeren. Je kan een smoketest uitvoeren om te zien of je applicatie werkt. Je zet deze onder lichte druk en controleert de responses, de logs en systeemcounters om te zien of er iets stuk is in de applicatie en deze doet wat je ervan verwacht. Je kan een stresstest uitvoeren waarmee je de applicatie onder zware druk zet om te bepalen waar de bottlenecks in de omgeving zitten en hoe ver je kan gaan voordat de omgeving omvalt. Tenslotte kan je nog performance of capacity tests uitvoeren waarmee je in stappen de omgeving onder druk zet om te bepalen hoe een omgeving zich houdt onder verschillende loads. Deze gegevens kunnen eveneens gebruikt worden om een stuk capaciteitsplanning te doen in de aanloopfase van een project of later in het project als de applicaties al op de uiteindelijke hardware geland zijn. &lt;/P&gt;
&lt;P&gt;Wat voor type test je ook kiest, je zult van te voren moeten bepalen wat de verwachte resultaten zijn. Wil je de throughput van je omgeving (Requests per Second, ofwel RPS) of de gebruikerservaring meten ( Page Time, of ook wel Time To Last Byte)? Wil je het maximaal aantal geïndexeerde documenten per seconde, of Publishing Cache hit ratio meten? Er zijn zoveel verschillende redenen waarom je een Load Test zou willen uitvoeren. Hoe dan ook, het is belangrijk van te voren te bepalen wat je precies wilt gaan meten en wat de verwachte resultaten zijn. Verreweg de meest gekozen reden van een Load Test is om de throughput van de farm te bepalen of valideren; dus het aantal RPS. Laten we er voor het gemak van uit gaan dat we willen verifiëren of een omgeving gaat voldoen aan de throughput requirements van onze klant. Verder wil deze klant dat de requests voor de homepage en teamsites gemiddeld binnen 5 seconden zijn afgehandeld. In dit geval gaan we dus een performance test uitvoeren en zijn zowel Page Time als RPS van belang. &lt;/P&gt;
&lt;P&gt;Maar hoe bepaal je nu de gewenste RPS… Laten we dit voorbeeld verder uitwerken, want dit is vaak een groot vraagteken en je moet op z'n minst een weloverwogen schatting kunnen maken, om een zinnige test te kunnen doen. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;DUS STEL… &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Deze klant had, zoals zoveel klanten, geen duidelijk beeld van het gebruikersprofiel van hun gebruikers. &lt;BR&gt;Ze gebruiken Windows Sharepoint Services voor basic collaboration en ze hebben 100.000 medewerkers. &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Van deze gebruikers verwachten ze dat maximaal 50.000 medewerkers gedurende de dag gebruik gaan maken van de omgeving. Maximale concurrency wordt geschat op 5%, wat uitkomt op&amp;nbsp;2500 gebruikers. &lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Dit cursief gemarkeerde gedeelte is ongeveer het meest belangrijke gegeven dat een klant kan geven over hun gebruikers, want onthoudt het volgende: &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 14pt; TEXT-DECORATION: underline"&gt;&lt;STRONG&gt;Aantal gebruikers zegt helemaal niets! &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Ik kan namelijk prima 100.000 gebruikers ondersteunen op mijn Virtual PC VM met 512 RAM op mijn 4 jaar oude laptop, als deze gemiddeld elke 12 uur een request doen. 100.000 request over 12 uur is namelijk slechts 2RPS. &lt;/P&gt;
&lt;P&gt;Wat belangrijk is, is het gebruikersprofiel en de user concurrency. &lt;/P&gt;
&lt;P&gt;Concurrency weten we nu dus, maar zoals ik al aangaf heeft de klant dus geen duidelijk beeld van het gebruikersprofiel van hun gebruikers. We kunnen hiervoor echter de voorbeeld profielen gebruiken die op technet te vinden zijn onder: &lt;A href="http://technet.microsoft.com/en-us/library/cc261716.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc261716.aspx"&gt;http://technet.microsoft.com/en-us/library/cc261716.aspx&lt;/A&gt; Deze zijn opgesteld op basis van uitvoerige interne tests en tests met TAP en andere Enterprise klanten. &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Dus, stel we gebruiken het volgende profiel: &lt;/P&gt;
&lt;DIV style="MARGIN-LEFT: 3pt"&gt;
&lt;TABLE style="BORDER-BOTTOM: #dddddd 1pt solid; BORDER-LEFT: #dddddd 1pt solid; MARGIN: auto auto auto 3.75pt; WIDTH: 31.32%; BORDER-TOP: #dddddd 1pt solid; BORDER-RIGHT: #dddddd 1pt solid; mso-cellspacing: 1.5pt; mso-border-alt: solid #DDDDDD .75pt; mso-yfti-tbllook: 1184" class=MsoNormalTable border=1 cellPadding=0 width="31%" class="MsoNormalTable"&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #c8cdde 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: #cccccc; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #cccccc 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .25pt; mso-border-bottom-alt: solid #C8CDDE .75pt" vAlign=bottom width="64%"&gt;
&lt;P style="MARGIN: 3.75pt 0cm" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: #000066; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Operation &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #c8cdde 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: #cccccc; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #cccccc 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .25pt; mso-border-bottom-alt: solid #C8CDDE .75pt" vAlign=bottom width="34%"&gt;
&lt;P style="MARGIN: 3.75pt 0cm" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: #000066; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Percentage of throughput &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Get home page &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;15.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 2"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Get cached document &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;15.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 3"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Get static document &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;15.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 4"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Get list page (HTML) &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;10.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 5"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Get list page (grid) &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;10.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 6"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Get list form &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;7.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 7"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;404 errors &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;5.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 8"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Insert list item &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;2.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 9"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Edit list item &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;2.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 10"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Delete list item &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;2.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 11"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Insert document &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;2.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 12"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Synchronize with Outlook&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;2.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 13"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Delete document &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;2.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 14"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;List URLs &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;2.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 15"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;I&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US" lang=EN-US&gt;DAV&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US" lang=EN-US&gt; (Distributed Authoring and Versioning) open document for edit &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;1.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 16"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;DAV save document &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;1.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 17"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;I&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-ansi-language: EN-US" lang=EN-US&gt;FPRPC&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US" lang=EN-US&gt; (FrontPage Server Extensions Remote Procedure Call) open document for edit &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;1.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 18"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;FPRPC Save document &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;1.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 19"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Short-term check-out &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;1.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 20"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Incoming e-mail&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;1.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 21"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;I&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt"&gt;RSS&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt; (Really Simple Syndication)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;1.00&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 22"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Start workflow&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;0.75&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 23"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Workflow task completion&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;0.75&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 24; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 64.48%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="64%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Add/remove user&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 34.36%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="34%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;0.50&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;Dit profiel is een typisch profiel voor WSS collaboration scenarios: &lt;A href="http://technet.microsoft.com/en-us/library/cc261795.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc261795.aspx"&gt;http://technet.microsoft.com/en-us/library/cc261795.aspx&lt;/A&gt; &lt;BR&gt;Laten we verder stellen dat we de volgende gebruikerscategorieën hebben: &lt;/P&gt;
&lt;P&gt;
&lt;TABLE style="BORDER-BOTTOM: #dddddd 1pt solid; BORDER-LEFT: #dddddd 1pt solid; MARGIN: auto auto auto 3.75pt; WIDTH: 31.32%; BORDER-TOP: #dddddd 1pt solid; BORDER-RIGHT: #dddddd 1pt solid; mso-cellspacing: 1.5pt; mso-border-alt: solid #DDDDDD .75pt; mso-yfti-tbllook: 1184" class=MsoNormalTable border=1 cellPadding=0 width="31%" class="MsoNormalTable"&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #c8cdde 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; PADDING-RIGHT: 3.75pt; BACKGROUND: #cccccc; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #cccccc 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .25pt; mso-border-bottom-alt: solid #C8CDDE .75pt" vAlign=bottom&gt;
&lt;P style="MARGIN: 3.75pt 0cm" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: #000066; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;User load &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #c8cdde 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 79.28%; PADDING-RIGHT: 3.75pt; BACKGROUND: #cccccc; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #cccccc 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .25pt; mso-border-bottom-alt: solid #C8CDDE .75pt" vAlign=bottom width="79%"&gt;
&lt;P style="MARGIN: 3.75pt 0cm" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: #000066; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Request rate &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Light&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 79.28%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="79%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US" lang=EN-US&gt;20 requests per hour. An active user will generate a request (operation)&amp;nbsp;every 180 seconds. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 2"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Typical&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 79.28%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="79%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US" lang=EN-US&gt;36 requests per hour. An active user will generate a request (operation) every 100 seconds. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 3"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Heavy&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 79.28%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="79%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US" lang=EN-US&gt;60 requests per hour. An active user will generate a request (operation)&amp;nbsp;every 60 seconds. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 4; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Extreme&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: #cccccc 1pt solid; BORDER-LEFT: #cccccc 1pt solid; PADDING-BOTTOM: 3.75pt; PADDING-LEFT: 3.75pt; WIDTH: 79.28%; PADDING-RIGHT: 3.75pt; BACKGROUND: white; BORDER-TOP: #cccccc 1pt solid; BORDER-RIGHT: #d5d5d3 1pt solid; PADDING-TOP: 3.75pt; mso-border-alt: solid #CCCCCC .75pt; mso-border-right-alt: solid #D5D5D3 .75pt" vAlign=top width="79%"&gt;
&lt;P style="MARGIN: 0cm 0.75pt 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: black; FONT-SIZE: 8.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US" lang=EN-US&gt;120 requests per hour. An active user will generate a request (operation) every 30 seconds. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;Wanneer we de klant de gebruikers laten indelen in deze categorieën kwamen we tot de volgende resultaten: 
&lt;TABLE style="BORDER-COLLAPSE: collapse" border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style="WIDTH: 86px"&gt;
&lt;COL style="WIDTH: 56px"&gt;
&lt;COL style="WIDTH: 76px"&gt;
&lt;COL style="WIDTH: 69px"&gt;
&lt;COL style="WIDTH: 63px"&gt;
&lt;COL style="WIDTH: 66px"&gt;
&lt;COL style="WIDTH: 97px"&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR style="HEIGHT: 76px"&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: black 1pt solid; BORDER-RIGHT: medium none"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: black 1pt solid; BORDER-RIGHT: medium none"&gt;
&lt;P style="MARGIN-LEFT: 5pt"&gt;&lt;SPAN style="COLOR: black"&gt;% users&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: black 1pt solid; BORDER-RIGHT: medium none"&gt;
&lt;P style="MARGIN-LEFT: 5pt"&gt;&lt;SPAN style="COLOR: black"&gt;Users&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: black 1pt solid; BORDER-RIGHT: medium none"&gt;
&lt;P style="MARGIN-LEFT: 5pt"&gt;&lt;SPAN style="COLOR: black"&gt;Active users&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: black 1pt solid; BORDER-RIGHT: medium none"&gt;
&lt;P style="MARGIN-LEFT: 5pt"&gt;&lt;SPAN style="COLOR: black"&gt;Concurrent Users&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: black 1pt solid; BORDER-RIGHT: medium none"&gt;
&lt;P style="MARGIN-LEFT: 5pt"&gt;&lt;SPAN style="COLOR: black"&gt;OPS per Users&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: black 1pt solid; BORDER-RIGHT: medium none"&gt;
&lt;P style="MARGIN-LEFT: 5pt"&gt;&lt;SPAN style="COLOR: black"&gt;Total OPS&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="BACKGROUND: silver"&gt;
&lt;TD style="BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;Light&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;50%&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;50.000 &lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;25.000 &lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;1.250&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;0,0056 &lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;7&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;Typical&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;25%&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;25.000 &lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;12.500 &lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;750&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;0,0100 &lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;7,5&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="BACKGROUND: silver"&gt;
&lt;TD style="BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;Heavy&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;20%&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;20.000 &lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;10.000&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;500&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;0,0167 &lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;8,35&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;Extreme&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;5%&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;5.000 &lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;2.500&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;125&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;0,0333 &lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="PADDING-LEFT: 7px; PADDING-RIGHT: 7px"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;5,15&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="BACKGROUND: silver"&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;&lt;STRONG&gt;Total&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;&lt;STRONG&gt;100%&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;&lt;STRONG&gt;100.000 &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;&lt;STRONG&gt;50.000 &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;&lt;STRONG&gt;2.500&amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;&lt;STRONG&gt;0,0112&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM: black 1pt solid; BORDER-LEFT: medium none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-RIGHT: medium none"&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;&lt;STRONG&gt;28&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Het blijkt dus dat met het huidige gebruikersprofiel en de maximale geplande concurrency, de omgeving geschaald moet zijn om&amp;nbsp;28&amp;nbsp;Operaties&amp;nbsp;te ondersteunen en dat de pageloads binnen de 5 seconden moeten blijven. Operaties zijn echter nog geen RPS. Om dit te bepalen heb je ook weer een schatting nodig, want dit is sterk afhankelijk van de usageprofielen die je gaat simuleren in je webtests en de applicatie waartegen je gaat testen. Een redelijk normaal getal om te onthouden is 5 - 10 requests per operatie. Dus je verwacht tussen de 140 en 280 RPS te halen met pageloads binnen de 5 seconden.&lt;/P&gt;
&lt;P&gt;Nogmaals: &lt;SPAN style="TEXT-DECORATION: underline"&gt;&lt;STRONG&gt;Onthoud dat je altijd uitgaat van de maximale concurrency, en dat aantallen gebruikers niets zeggen. &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Nu je de tests in het vizier hebt, is het tijd om het complete testplan uit te werken. Zie dit testplan als een plan van aanpak. Hier hoort dus alles in te staan, wat je normaal gesproken in een plan van aanpak zou vinden, inclusief een complete beschrijving van de uit te voeren tests en de configuratie van de testomgeving en testrig. &lt;/P&gt;
&lt;P&gt;Als het complete plan klaar is, en er overeenstemming over is bereikt, kan er begonnen worden met het prepareren van de testomgeving en de testrig. Meer hierover in deel 2 van deze serie. &lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3212897" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/mpriem/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Sharepoint/default.aspx">Sharepoint</category><category domain="http://blogs.technet.com/mpriem/archive/tags/WSS/default.aspx">WSS</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Deployment/default.aspx">Deployment</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Portal+Server+2003/default.aspx">Portal Server 2003</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Development/default.aspx">Development</category></item><item><title>Load Testen van Sharepoint met VSTS 2008 en VSTT Load Agents – Proloog</title><link>http://blogs.technet.com/mpriem/archive/2009/03/13/load-testen-van-sharepoint-met-vsts-2008-en-vstt-load-agents-proloog.aspx</link><pubDate>Fri, 13 Mar 2009 12:15:44 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3212397</guid><dc:creator>mpriem</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/mpriem/comments/3212397.aspx</comments><wfw:commentRss>http://blogs.technet.com/mpriem/commentrss.aspx?PostID=3212397</wfw:commentRss><description>&lt;p&gt;Onlangs ben ik gevraagd voor een grote klant een testplan te ontwikkelen voor een nieuwe omgeving in ontwikkeling. Daar ik in het verleden wel wat testplannen had geschreven voor Exchange en ook wel wat IIS testen had gedaan, dacht ik dat wel even te doen. Op dat moment stond ik net op het punt te vertrekken naar Amerika voor een intern event, waar een van de senior architecten van ons Sharepoint Online platform een presentatie zou houden over het load testen van Sharepoint. Na deze sessie stond ik weer met beide benen op de grond. Het "Dat doe ik wel even" gevoel had plaatsgemaakt voor "HELP, dat is ingewikkelder dan ik dacht". Nu schuw ik een uitdaging nooit, dus vol goede moed ben ik aan de slag gegaan, en uiteindelijk pakte het zeer goed uit. De komende reeks posts zal ingaan op hoe een test voor te bereiden en uit te voeren, gebruik makend van Visual Studio Team System 2008 Test Edition en de Visual Studio Team System 2008 Load Agents.
&lt;/p&gt;&lt;p&gt;Het eerste deel zal gaan over de vereisten voor een gedegen test en opstellen van een basisplanning. Het tweede deel zal vervolgens ingaan op de installatie van de test machines (de controller en load agents). Het derde deel zal ingaan op het ontwikkelen van de test scenario's en het bundelen van deze scenario's tot een load test. In het laatste deel behandel ik het uitvoeren van een load test.
&lt;/p&gt;&lt;p&gt;Hou daarom de komende weken deze blog in de gaten…&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3212397" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/mpriem/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Sharepoint/default.aspx">Sharepoint</category><category domain="http://blogs.technet.com/mpriem/archive/tags/WSS/default.aspx">WSS</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Deployment/default.aspx">Deployment</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Portal+Server+2003/default.aspx">Portal Server 2003</category></item><item><title>Microsoft Office Sharepoint Server 2007 op Windows Server 2008</title><link>http://blogs.technet.com/mpriem/archive/2008/12/12/microsoft-office-sharepoint-server-2007-op-windows-server-2008.aspx</link><pubDate>Fri, 12 Dec 2008 14:22:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3167504</guid><dc:creator>mpriem</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/mpriem/comments/3167504.aspx</comments><wfw:commentRss>http://blogs.technet.com/mpriem/commentrss.aspx?PostID=3167504</wfw:commentRss><description>&lt;P&gt;De installatie van MOSS op Windows Server 2008 is uiteraard net even anders dan op Windows Server 2003. Hierbij een korte procedure: &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;MOSS installeert alleen op Server 2008 als SP1 in het installatie medium geslipstreamd is. Slipstream dus eerst SP1 (aanbevolen is de laatste updates meteen mee te nemen).&lt;BR&gt;&lt;A href="http://blogs.technet.com/mpriem/archive/2008/12/11/sharepoint-2007-slipstream.aspx" mce_href="http://blogs.technet.com/mpriem/archive/2008/12/11/sharepoint-2007-slipstream.aspx"&gt;http://blogs.technet.com/mpriem/archive/2008/12/11/sharepoint-2007-slipstream.aspx&lt;/A&gt; &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Installeer vervolgens de .NET 3.0 feature en de Web Server role met IIS6 metabase compatibility en .NET ondersteuning door ze te selecteren uit server manager of het volgende commando uit een admin console te draaien:&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="FONT-FAMILY: Consolas"&gt;ServerManagerCmd.exe –install Web-Server Web-Metabase Net-Framework&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Wingdings 3"&gt;8&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;Ik zou aanraden .NET framework 3.5 SP1 ook meteen mee te nemen.&lt;BR&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=ab99342f-5d1a-413d-8319-81da479ab0d7" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=ab99342f-5d1a-413d-8319-81da479ab0d7"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=ab99342f-5d1a-413d-8319-81da479ab0d7&lt;/A&gt; &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Start vervolgens de installatie van MOSS zoals je gewend bent. &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Technet: &lt;A href="http://technet.microsoft.com/en-us/library/cc263408.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc263408.aspx"&gt;http://technet.microsoft.com/en-us/library/cc263408.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Suc6!&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3167504" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/mpriem/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category><category domain="http://blogs.technet.com/mpriem/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Sharepoint/default.aspx">Sharepoint</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Deployment/default.aspx">Deployment</category></item><item><title>Sharepoint 2007 slipstream</title><link>http://blogs.technet.com/mpriem/archive/2008/12/11/sharepoint-2007-slipstream.aspx</link><pubDate>Thu, 11 Dec 2008 16:32:39 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3166984</guid><dc:creator>mpriem</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/mpriem/comments/3166984.aspx</comments><wfw:commentRss>http://blogs.technet.com/mpriem/commentrss.aspx?PostID=3166984</wfw:commentRss><description>&lt;p&gt;Bij een farm installatie komt een hele hoop kijken. Gelukkig kunnen we dat redelijk goed automatiseren met een unattended setup, gebruik makend van een config.xml bestand (&lt;a href="http://technet.microsoft.com/en-us/library/cc261668.aspx"&gt;http://technet.microsoft.com/en-us/library/cc261668.aspx&lt;/a&gt;).
&lt;/p&gt;&lt;p&gt;Echter dienen ook altijd de laatste updates dienen geïnstalleerd te worden. Slipstreaming is daarbij een term die meteen teboven komt, maar hoe werkt dat nu voor Sharepoint?
&lt;/p&gt;&lt;p&gt;Het is eigenlijk heel simpel. In de root van het Sharepoint installatie medium staat een folder /Updates. Tijdens de installatie checked de installer of daar nog .msp bestanden (MSI patch bestanden) die meegenomen moeten worden in de installatie. Nu zijn de patches die je download van download.microsoft.com geen MSI patch bestanden maar executable archives. Het is echter heel simpel om de msp bestanden hieruit te halen.
&lt;/p&gt;&lt;p&gt;Op dit moment zijn de benodigde fixes:
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Service Packs:&lt;/strong&gt;
	&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=4191A531-A2E9-45E4-B71E-5B0B17108BD2&amp;amp;displaylang=en"&gt;WSS 3.0 Service Pack 1&lt;/a&gt;
		&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=AD59175C-AD6A-4027-8C2F-DB25322F791B&amp;amp;displaylang=en"&gt;MOSS 2007 Service Pack 1&lt;/a&gt;
		&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Feature Packs:&lt;/strong&gt;
	&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:7pt"&gt; &lt;a href="http://support.microsoft.com/kb/951695/" title="IU WSS" target="_blank"/&gt;&lt;/span&gt;Infrastructure update WSS 3.0 
&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:7pt"&gt; &lt;a href="http://support.microsoft.com/kb/951297" title="MOSS IU" target="_blank"/&gt;&lt;/span&gt;Infrastructure update MOSS 2007
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Update Rollups (October):&lt;/strong&gt;
	&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=957691&amp;amp;kbln=en-us"&gt;WSS 3.0 Global&lt;/a&gt;
		&lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=957693&amp;amp;kbln=en-us"&gt;MOSS 2007 Global&lt;/a&gt;
		&lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=958567&amp;amp;kbln=en-us"&gt;MOSS 2007 Taal specifiek&lt;/a&gt;
		&lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=958569&amp;amp;kbln=en-us"&gt;MOSS 2007 Workflow Hotfix&lt;/a&gt;
		&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Security fix:
&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=a7fda284-273c-42ab-8188-433beaacca86&amp;amp;displaylang=en"&gt;Microsoft Security Bulletin MS08-077 - Important&lt;/a&gt;&lt;strong&gt;
			&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;De procedure is als volgt:
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Download de fixes.
&lt;/li&gt;&lt;li&gt;Extract de fixes naar een &lt;span style="text-decoration:underline"&gt;eigen folder&lt;/span&gt; door de volgende parameters mee te geven:&lt;br/&gt;&lt;br/&gt;&lt;span style="font-family:Consolas"&gt;&amp;lt;update.exe&amp;gt; /extract:&amp;lt;path&amp;gt;&lt;/span&gt;&lt;span style="font-family:Wingdings 3"&gt;8&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;Bijvoorbeeld voor WSS3.0 SP1: &lt;br/&gt;&lt;span style="font-family:Consolas"&gt;wssv3sp1-kb936988-x64-fullfile-en-us.exe /extract:C:\Temp\WSSSP1&lt;/span&gt;&lt;span style="font-family:Wingdings 3"&gt;8&lt;/span&gt;&lt;span style="font-family:Consolas"&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;Meer parameters: &lt;a href="http://support.microsoft.com/kb/262841"&gt;http://support.microsoft.com/kb/262841&lt;/a&gt;
		&lt;/li&gt;&lt;li&gt;Na alle patches uitgepakt te hebben, kopieer je de complete content van de fixes naar de /Updates folder op het installatie medium.&lt;br/&gt;&lt;strong&gt;Zorg echter dat je de fixes kopieert in de volgorde dat ze zijn uitgekomen en overschrijf bestanden waar nodig. Het gaat hier voornamelijk om de srvsetup.dll en wsssetup.dll. Deze bevatten de installatiemethodes voor de installer, en veranderen soms met een nieuwe rollup. Ook kan het zijn dat bepaalde mps bestanden vervangen worden in de toekomst.&lt;/strong&gt;
		&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;In principe kan je ook gewoon de extract in de juiste volgorde doen, maar ik zie persoonlijk liever wat er precies overschreven wordt. De extract laat dat zien namelijk.
&lt;/p&gt;&lt;p&gt;Nu de /Updates folder is gevuld kan je de installatie uitvoeren. Nog een kleine tip… Om van een directory gemakkelijk een ISO bestand te maken die gemount kan worden in een VM, gebruik ik altijd &lt;a href="http://www.trustfm.net/divx/SoftwareFolder2Iso.php?b2=1"&gt;Folder2Iso&lt;/a&gt;, een handig freeware tooltje dat niet geïnstalleerd hoeft te worden (losse executable).
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;Enjoy &lt;span style="font-family:Wingdings"&gt;J&lt;/span&gt;
	&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;br/&gt;  &lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3166984" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/mpriem/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Sharepoint/default.aspx">Sharepoint</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Deployment/default.aspx">Deployment</category></item><item><title>Forefront Threat Management Gateway BETA</title><link>http://blogs.technet.com/mpriem/archive/2008/12/10/forefront-threat-management-gateway-beta.aspx</link><pubDate>Wed, 10 Dec 2008 23:25:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3166458</guid><dc:creator>mpriem</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/mpriem/comments/3166458.aspx</comments><wfw:commentRss>http://blogs.technet.com/mpriem/commentrss.aspx?PostID=3166458</wfw:commentRss><description>&lt;P&gt;Zoals voor velen al bekend houdt de merknaam ISA Server op te bestaan. Deze veelzijdige security oplossing gaat verder onder de naam Forefront Threat Management Gateway (TMG), waarvan reeds een publieke beta beschikbaar is op &lt;A href="http://www.microsoft.com/forefront/stirling/en/us/default.aspx" mce_href="http://www.microsoft.com/forefront/stirling/en/us/default.aspx"&gt;http://www.microsoft.com/forefront/stirling/en/us/default.aspx&lt;/A&gt; . &lt;/P&gt;
&lt;P&gt;TMG is onderdeel van de suite onder de codenaam 'Stirling', waar onder andere ook een centrale management console onderdeel van is. Met deze console kunnen alle producten onder de Forefront merknaam beheerd worden. &lt;/P&gt;
&lt;P&gt;Deze post gaat over de installatie van TMG. TMG heeft alles wat ISA Server 2006 heeft, maar installeert daarentegen WEL op Server 2008 en op 64 bits versies. Sterker nog, de uiteindelijke versie draait alleen op 64 bits versies van 2003 en 2008. &lt;/P&gt;
&lt;P&gt;Installatie van TMG is zeer eenvoudig en vereist eigenlijk geen configuratie vooraf, behalve vaste IP addressen voor de NICs die gebruikt gaan worden en de volgende systeemeisen: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;1GB RAM &lt;/LI&gt;
&lt;LI&gt;150MB disk ruimte &lt;/LI&gt;
&lt;LI&gt;1 NIC voor elk netwerk dat verbonden wordt met TMG. &lt;/LI&gt;
&lt;LI&gt;64 bits architectuur &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;De installatie zal verder alle prerequisites installeren. In dit geval zijn dat: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Routing en Remote Access Services voor de NAT, remote access en routing diensten. &lt;/LI&gt;
&lt;LI&gt;Internet Information Services voor de reports. &lt;/LI&gt;
&lt;LI&gt;SQL Express voor de opslag van de configuratie en logs. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Na de ISO gebrand en geladen te hebben start de installatie met de volgende stappen: &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Welcome Screen &lt;SPAN style="FONT-FAMILY: Wingdings"&gt;à&lt;/SPAN&gt; Next &lt;/LI&gt;
&lt;LI&gt;EULA &lt;SPAN style="FONT-FAMILY: Wingdings"&gt;à&lt;/SPAN&gt; Next &lt;/LI&gt;
&lt;LI&gt;Customer Information , je naam en bedrijf &lt;SPAN style="FONT-FAMILY: Wingdings"&gt;à&lt;/SPAN&gt; Next &lt;/LI&gt;
&lt;LI&gt;Component Selection &lt;SPAN style="FONT-FAMILY: Wingdings"&gt;à&lt;/SPAN&gt; Next&lt;BR&gt;&lt;IMG alt="" src="http://blogs.technet.com/blogfiles/mpriem/121008_2025_ForefrontTh1.png" mce_src="http://blogs.technet.com/blogfiles/mpriem/121008_2025_ForefrontTh1.png"&gt; &lt;/LI&gt;
&lt;LI&gt;Internal Network, waarbij je de iprange van het interne netwerk moet opegeven. &lt;SPAN style="FONT-FAMILY: Wingdings"&gt;à&lt;/SPAN&gt; Next&lt;BR&gt;&lt;IMG alt="" src="http://blogs.technet.com/blogfiles/mpriem/121008_2025_ForefrontTh2.png" mce_src="http://blogs.technet.com/blogfiles/mpriem/121008_2025_ForefrontTh2.png"&gt;&lt;BR&gt;&lt;BR&gt;Op dit moment waarschuwt de installatie dat het services gaat herstarten als IIS, Routing en Remote Access en SNMP service. Echter op een kale server zijn deze nog niet aanwezig &lt;SPAN style="FONT-FAMILY: Wingdings"&gt;J&lt;/SPAN&gt;&lt;BR&gt;Wanneer je de waarschuwing hebt geaccepteerd, kan er gekozen worden de installatie te starten.&lt;BR&gt;&lt;IMG style="WIDTH: 421px; HEIGHT: 368px" height=350 alt="" src="http://blogs.technet.com/blogfiles/mpriem/121008_2025_ForefrontTh3.jpg" width=478 mce_src="http://blogs.technet.com/blogfiles/mpriem/121008_2025_ForefrontTh3.jpg"&gt;&lt;BR&gt;Setup installeert de software en alle benodigde extra componenten. Schijnbaar installeert het enkele fixes, want ik moest tijdens de installatie de server rebooten door een hotfix installatie. Aangezien ik geen internetverbinding had, kan het dus niet anders dat TMG dat heeft gedaan. &lt;BR&gt;Ik moest de setup dus opnieuw starten en alle stappen nogmaals doorlopen. Erg slordig vind ik.&lt;BR&gt;&lt;BR&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Na de installatie start de Getting Started Wizard waarmee de initiele configuratie gestart kan worden.&lt;BR&gt;&lt;BR&gt;&lt;IMG height=390 alt="" src="http://blogs.technet.com/blogfiles/mpriem/121008_2025_ForefrontTh4.jpg" width=465 mce_src="http://blogs.technet.com/blogfiles/mpriem/121008_2025_ForefrontTh4.jpg"&gt; &lt;/P&gt;
&lt;P&gt;De &lt;STRONG&gt;Configure Network Settings&lt;/STRONG&gt; sectie stelt je in staat te kiezen uit een aantal netwerk typologieën zoals deze ook aanwezig zijn in ISA Server 2006.&lt;BR&gt;&lt;IMG alt="" src="http://blogs.technet.com/blogfiles/mpriem/121008_2025_ForefrontTh5.png" mce_src="http://blogs.technet.com/blogfiles/mpriem/121008_2025_ForefrontTh5.png"&gt; &lt;/P&gt;
&lt;P&gt;De &lt;STRONG&gt;Configure System Settings&lt;/STRONG&gt; stelt je in staat de domain/workgroup en hostname voor je server te configureren. Deze beta is echter alleen geschikt voor Domain installaties zoals de helpfile mij verteld. Ik heb echter een workgroup installatie gedaan en deze werkte wel voor de basis firewall. &lt;/P&gt;
&lt;P&gt;De &lt;STRONG&gt;Define Deployment Options &lt;/STRONG&gt;is tenslotte bedoelt om MS Update, Customer Experience Reporting en Telemetric Services te configureren. Deze laatste stuurt informatie over malware dat geblockeerd wordt naar Microsoft om verbeteringen in het product aan te brengen. Ik stel dus voor dit in te stellen&lt;SPAN style="FONT-FAMILY: Wingdings"&gt;J&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;Na de wizard doorlopen te hebben kan je aan de slag met TMG, en zal je zien dat het eigenlijk nog ISA 2006 is, met wat extra managebility features. &lt;/P&gt;
&lt;P&gt;&lt;IMG alt="" src="http://blogs.technet.com/blogfiles/mpriem/121008_2025_ForefrontTh6.png" mce_src="http://blogs.technet.com/blogfiles/mpriem/121008_2025_ForefrontTh6.png"&gt; &lt;/P&gt;
&lt;P&gt;Ik zou zeggen, aan de slag! &lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3166458" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/mpriem/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Forefront/default.aspx">Forefront</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Deployment/default.aspx">Deployment</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Security/default.aspx">Security</category></item><item><title>Workflow beheren (Deel 1)</title><link>http://blogs.technet.com/mpriem/archive/2008/11/14/workflow-beheren-deel-1.aspx</link><pubDate>Fri, 14 Nov 2008 14:45:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3153032</guid><dc:creator>mpriem</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/mpriem/comments/3153032.aspx</comments><wfw:commentRss>http://blogs.technet.com/mpriem/commentrss.aspx?PostID=3153032</wfw:commentRss><description>&lt;P&gt;Problemen met workflow zijn vaak lastig te achterhalen. Zeker omdat klanten vaak eigen custom workflows ontwikkelen. Deze posts bevatten wat informatie over workflow internals en hoe workflow te beheren als Sharepoint admin. Deze eerste post gaat voornamelijk over de structuur van een workflow. &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="TEXT-DECORATION: underline"&gt;&lt;STRONG&gt;Workflow 101 &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG alt="" src="http://blogs.technet.com/blogfiles/mpriem/111408_1144_Workflowbeh1.jpg" align=left mce_src="http://blogs.technet.com/blogfiles/mpriem/111408_1144_Workflowbeh1.jpg"&gt;Een workflow is een reeks activiteiten die uitgevoerd moeten worden in bepaalde volgorde, op basis van bepaalde condities. Een simpel voorbeeld is een workflow die handtekeningen voor een nieuw document verzameld alvorens het te archiveren. Als iemand het document afkeurt halverwege, zal het document teruggestuurd worden naar de persoon die om goedkeuring vroeg. &lt;BR&gt;Workflow komt in veel applicaties voor. Daarom is sinds het .NET framework 2.0 een engine opgenomen die gebruikt kan worden om dit te vergemakkelijken voor ontwikkelaars. Deze engine is onderdeel van de codetak binnen het .NET framework genaamd Windows Workflow Foundation. &lt;/P&gt;
&lt;P&gt;De standaard (maar ook de meeste custom) workflows binnen sharepoint zijn gebaseerd op deze engine, welke wordt gehost binnen het worker process van de Web applicatie waar de workflow wordt gebruikt. &lt;/P&gt;
&lt;P&gt;Windows Workflow Foundation maakt het mogelijk twee verschillende workflows te creëren, namelijk State Machine workflows (event-driven) en Sequential workflows. In essentie is het verschil dat een sequential workflow een van te voren bepaald pad volgt en een state machine workflow reageert op bepaalde events en dynamisch kan veranderen van status. Een workflow kan daardoor dus ook terugkomen op het startpunt doordat de status wijzigt naar de beginstatus. Met een sequentiële workflow kan dat dus niet. State Machine is dus veel meer een workflow die past bij binnen bedrijfsprocessen, waar sequentiële workflow meer past binnen procesautomatisering. &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="TEXT-DECORATION: underline"&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="TEXT-DECORATION: underline"&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="TEXT-DECORATION: underline"&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="TEXT-DECORATION: underline"&gt;&lt;STRONG&gt;Workflow binnen Sharepoint &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG alt="" src="http://blogs.technet.com/blogfiles/mpriem/111408_1144_Workflowbeh2.jpg" align=left mce_src="http://blogs.technet.com/blogfiles/mpriem/111408_1144_Workflowbeh2.jpg"&gt;In Sharepoint worden gegevens gestructureerd en aangeboden via content types die het schema van de gegevens bepalen en de lists en libraries (library is in prinipe gewoon een geadvanceerde list, dus vanaf nu zal ik alleen list gebruiken) die de structuur bepalen. Een workflow werkt op verschillende niveau's. Hoe de workflow is ontwikkeld bepaald waaraan een workflow toegekend kan worden. &lt;/P&gt;
&lt;P&gt;Een workflow kan ontwikkeld worden via Visual Studio of via Sharepoint Designer. Een workflow template via Visual Studio kan geassocieerd worden met een list of contenttype. Een workflow via Sharepoint Designer kan alleen met een list geassocieerd worden. Er wordt daarvoor een instance gecreëerd van een workflow voor elk item in de list. &lt;/P&gt;
&lt;P&gt;Een workflow kan dus gestart worden voor een item in een list (bijvoorbeeld een document in een document library). Er wordt dus een instance gestart van de workflow voor een bepaald item. Bij de creatie van de instance gaat er een activiteit van start, welke wordt bijgehouden in een tasklist. Daarnaast hebben workflows meestal een history list waar het verloop van de workflow wordt bijgehouden. Dit zijn normale sharepoint lists. &lt;/P&gt;
&lt;P&gt;Ik heb in principe nu al een aantal belangrijke termen genoemd. Template, Instance en Associatie. &lt;/P&gt;
&lt;P&gt;Ik hou voorlopig even de focus op Visual Studio workflows, daar deze het meeste voorkomen en ook het meest complex zijn. Een workflow binnen Visual Studio wordt ontwikkeld tot een workflow template, welke via een feature wordt geactiveerd en meestal door een solution wordt uitgerold. Voor een beheerder is het niet zo zeer van belang om de structuur van een workflow feature te begrijpen, maar om er toch kort aandacht aan te besteden, bestaat een workflow feature in ieder geval uit een feature.xml en een workflow configuratie xml. Daarnaast kan de feature gebruik maken van 1 of meerdere ASPX pagina's of XSN forms, en 1 of meerdere binaries of XOML bestanden. Door de feature uit te rollen met een solution bepaal je in de solution waar deze bestanden zich gaan bevinden. Het kan zijn dat deze bestanden reeds bestaan op het filesysteem. Ze kunnen echter ook deel uitmaken van het feature. &lt;/P&gt;
&lt;P&gt;De feature.xml moet aanwezig zijn in de feature directory (default = c:/Program Files/ Common Files/Microsoft Shared/web server extions/12/TEMPLATE/Feature). Het bevat de metadata van de feature. Een typisch feature.xml bestand zou er voor een workflow als volgt uitzien: &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;?xml&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; version="1.0" encoding="utf-8" ?&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Elements&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; xmlns="http://schemas.microsoft.com/sharepoint/"&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;CODE&gt;&lt;SPAN style="FONT-SIZE: 8pt"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Feature&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; Id="&amp;lt;guid&amp;gt;" Title="Workflow" Description="My Custom Workflow" Scope="Site &lt;/SPAN&gt;ReceiverAssembly="Microsoft.Office.Workflow.Feature, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" ReceiverClass="Microsoft.Office.Workflow.Feature.WorkflowFeatureReceiver" xmlns="http://schemas.microsoft.com/sharepoint/"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;CODE&gt;&lt;SPAN style="FONT-SIZE: 8pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;ElementManifests&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;CODE&gt;&lt;SPAN style="FONT-SIZE: 8pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;ElementManifest&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;CODE&gt;&lt;SPAN style="FONT-SIZE: 8pt"&gt;&lt;SPAN style="COLOR: black"&gt; Location="workflow.xml"&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;CODE&gt;&lt;SPAN style="FONT-SIZE: 8pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;ElementFile &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;CODE&gt;&lt;SPAN style="FONT-SIZE: 8pt"&gt;&lt;SPAN style="COLOR: black"&gt;Location="initiationform.xsn"&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;CODE&gt;&lt;SPAN style="FONT-SIZE: 8pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;ElementManifests&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;CODE&gt;&lt;SPAN style="FONT-SIZE: 8pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Properties&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;CODE&gt;&lt;SPAN style="FONT-SIZE: 8pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Property Key="GloballyAvailable" Value="true" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Property Key="RegisterForms" Value="*.xsn" /&amp;gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;CODE&gt;&lt;SPAN style="FONT-SIZE: 8pt"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Properties&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;CODE&gt;&lt;SPAN style="FONT-SIZE: 8pt"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Feature&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Elements&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Het workflow configuratie bestand dient ook aanwezig te zijn in de feature directory (in deze feature workflow.xml) en bevat de metadata rondom de workflow en ziet er ongeveer zo uit: &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;?xml&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; version="1.0" encoding="utf-8" ?&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Elements&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; xmlns="http://schemas.microsoft.com/sharepoint/"&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Workflow&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: Courier New"&gt;Name="AdventureWorksWorkflow" &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: Courier New"&gt;Description="Use this workflow to track sequential tasks of users." &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: Courier New"&gt;Id="C6964BFF-BG8D-41ac-AC5E-B61EC111731C" &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: Courier New"&gt;CodeBesideClass="AdventureWorks.Workflow1" &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: Courier New"&gt;CodeBesideAssembly="AdventureWorks, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e3bce121e9429c" &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: Courier New"&gt;TaskListContentTypeId="0x01080100C9C9515DE4E24001905074F980F93160" &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: Courier New"&gt;AssociationUrl="myAssocPage.aspx" &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: Courier New"&gt;InstantiationUrl="_layouts/IniWrkflIP.aspx" &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: black"&gt;ModificationUrl="myModPage.aspx"&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Categories/&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;AssociationData&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 8pt; COLOR: black; FONT-FAMILY: Courier New"&gt;… &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;AssociationData&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;MetaData&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;CODE&gt;&lt;SPAN style="FONT-SIZE: 8pt"&gt;&lt;SPAN style="COLOR: maroon"&gt;Instantiation_FormURN&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;urn:schemas-adventureworks-com:workflow:ReviewRouting-Init&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Instantiation_FormURN&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;MetaData&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Workflow&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Elements&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Zoals je ziet in de workflow.xml staan er een aantal URL's (AssociationURL, InstantiationURL, ModificationURL en StatusPageURL) genoemd en is er ook een Instantiation_formURN benoemd. Deze waardes verwijzen naar webpagina's die getoond worden binnen de verschillende stadia van de workflow. Dus bij het associeren van de workflow met (toekennen aan) een list of content type, bij het starten van een nieuwe workflow (dus het instantieren van een geassocieerde workflow op een item) en bij het wijzigen van een lopende workflow. Je kunt hier ASPX pagina's of InfoPath forms voor gebruiken. ASPX pagina's geef je gewoon op in deze properties. Als je echter InfoPath forms wilt gebruiken moet je de volgende waardes gebruiken voor de verschillende fases waar je ze wilt gebruiken: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;AssociationUrl="_layouts/CstWrkflIP.aspx" &lt;/LI&gt;
&lt;LI&gt;InstantiationUrl="_layouts/IniWrkflIP.aspx" &lt;/LI&gt;
&lt;LI&gt;ModificationUrl="_layouts/ModWrkflIP.aspx" &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Verder moet je in de MetaData scope opgeven welke forms je wilt gebruiken, door de URN op te geven. In het workflow.xml voorbeeld zie je een voorbeeld van een instantiatie formulier wat gebruikt wordt: &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: black"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;MetaData&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;CODE&gt;&lt;SPAN style="FONT-SIZE: 8pt"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Instantiation_FormURN&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;urn:schemas-adventureworks-com:workflow:ReviewRouting-Init&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Instantiation_FormURN&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;SPAN style="FONT-SIZE: 8pt; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;MetaData&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;De URN vind je door een form in InfoPath te openen in designer mode en via File &amp;gt; Properties het FormID veld te nemen. &lt;/P&gt;
&lt;P&gt;Verder kan je voor de volgende fasen in een workflow een form opgeven. &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Associatie &lt;SPAN style="FONT-FAMILY: Wingdings"&gt;à&lt;/SPAN&gt; Association_FormURN &lt;/LI&gt;
&lt;LI&gt;Instantiatie &lt;SPAN style="FONT-FAMILY: Wingdings"&gt;à&lt;/SPAN&gt; Instantiation_FormURN &lt;/LI&gt;
&lt;LI&gt;Aanpassen workflow &lt;SPAN style="FONT-FAMILY: Wingdings"&gt;à&lt;/SPAN&gt; Modification_FormURN &lt;/LI&gt;
&lt;LI&gt;Configuratie voor bepaalde taak in een workflow &lt;SPAN style="FONT-FAMILY: Wingdings"&gt;à&lt;/SPAN&gt; Task&amp;lt;ID&amp;gt;_FormURN (Bijv: Task0_FormURN) &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Verder zie je in de workflow.xml een assembly en classnaam genoemd. Dit is de code die uitgevoerd dient te worden binnen de workflow. Het is meestal een DLL die in de Global Assembly Cache is opgenomen. Echter er kan ook gewerkt worden met markup XOML files, wat via Extensible Application Markup Language logica beschrijft wat een workflow precies doet. Dit is identiek aan de Sharepoint Designer workflows and kan alleen worden toegepast op een List. Daarnaast kan er slechts gebruik gemaakt worden van een aantal activiteiten en condities. De XOML workflow wordt dus geïnterpreteerd gedurende runtime en is beperkt. &lt;/P&gt;
&lt;P&gt;Als je de feature via een solution deployed hebt en geactiveerd hebt voor de site, kan je workflows gaan gebruiken. Je kunt ze handmatig starten via de GUI of automatisch via bijvoorbeeld via Events die getriggerd worden door gebruikersinteractie en afgehandeld worden door code via Eventhandlers in een custom feature. &lt;/P&gt;
&lt;P&gt;In de volgende post zal ik dieper ingaan op het deployen van een workflow en het gebruik ervan…. &lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3153032" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/mpriem/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Deployment/default.aspx">Deployment</category></item><item><title>Sysprep &amp; Imaging Windows Server 2008</title><link>http://blogs.technet.com/mpriem/archive/2008/09/16/sysprep-imaging-windows-server-2008.aspx</link><pubDate>Tue, 16 Sep 2008 17:52:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3127294</guid><dc:creator>mpriem</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/mpriem/comments/3127294.aspx</comments><wfw:commentRss>http://blogs.technet.com/mpriem/commentrss.aspx?PostID=3127294</wfw:commentRss><description>&lt;P&gt;Deployment van Windows Server 2008 zal in de toekomst meer en meer gebruik gaan maken van imaging. Dit zie&amp;nbsp;je terug komen&amp;nbsp;in&amp;nbsp;de strategie van de deployment software die momenteel op de markt verschijnt. WIM&amp;nbsp;(Windows Image) is het toverwoord. Dit artikel zal&amp;nbsp;laten zien hoe je een Windows Server 2008 installatie&amp;nbsp;imaged en configureert, gebruik makend van Sysprep, WinPE 2.0&amp;nbsp;en Windows Automated installation kit.&lt;/P&gt;
&lt;P&gt;&lt;IMG class=mce_plugin_wordpress_more title=More... height=10 alt=More... src="http://www.spurius.nl/wp-includes/js/tinymce/themes/advanced/images/spacer.gif" width="100%" name=mce_plugin_wordpress_more moretext=""&gt;&lt;/P&gt;
&lt;P&gt;De stappen die je moet uitvoeren zijn de volgende:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Installeer Windows 2008 Server met additionele software.&lt;/LI&gt;
&lt;LI&gt;(optioneel) configureer unattend.xml&lt;/LI&gt;
&lt;LI&gt;Sysprep je systeem.&lt;/LI&gt;
&lt;LI&gt;Boot WinPE met ImageX tools&lt;/LI&gt;
&lt;LI&gt;Maak een WIM van je Systeem.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;STAP 2:&lt;/STRONG&gt;&lt;BR&gt;Een unattend.xml bestand stelt je in staat de configuratie van een systeemimage te voltooien na de eerste boot. Hiervoor kan je Windows System Image Manager gebruiken. Het probleem is dat je echter eerst een WIM image moet hebben (staat er 1 op de Windows server 20078 DVD) om een XML bestand te kunnen configureren. Daarnaast zijn de opties vreselijk uitgebreid en schiet het zijn doel in veel gevallen voorbij. Ik verwijs daarom naar een&lt;A href="http://www.shudnow.net/2008/05/05/unattended-server-2008-base-image-creation-using-wsimsysprep/" target=_blank mce_href="http://www.shudnow.net/2008/05/05/unattended-server-2008-base-image-creation-using-wsimsysprep/"&gt; artikel &lt;/A&gt;dat een voorbeeld geeft, mocht je het toch willen.&lt;BR&gt;&lt;STRONG&gt;STAP 3:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG alt="Sysprep 2008" src="http://www.spurius.nl/wp-content/uploads/2008/01/sysprep-2008.png" align=left mce_src="http://www.spurius.nl/wp-content/uploads/2008/01/sysprep-2008.png"&gt;Dit artikel gaat je niet vertellen hoe je een Windows Server 2008 systeem installeert, dus ga ik ervan uit dat je dat al gedaan hebt. De volgende stap is om Sysprep te draaien om je systeem te sealen voor deployment.&lt;/P&gt;
&lt;P&gt;Sysprep zit vanaf nu standaard in het OS. In Windows Server 2008 (en Windows Vista) vind je het onder: &lt;CODE&gt;&amp;nbsp;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;c:\Windows\System32\Sysprep\sysprep.exe&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG alt="Sysprep 2008 modes" src="http://www.spurius.nl/wp-content/uploads/2008/01/sysprep-2008_2.png" align=left mce_src="http://www.spurius.nl/wp-content/uploads/2008/01/sysprep-2008_2.png"&gt;Wanneer je deze nu start krijg je de opties om je image in "Audit mode" of "Windows Welcome&amp;nbsp;mode (out-of-box Experience)" wilt brengen. De "Audit mode"&amp;nbsp;stelt je in staat je Windows image te customizen met eigen software en scripts en zorgt ervoor dat je niet het standaard Welcome screen krijgt als je image opgestart is. Hier worden andere secties uit de unattend.xml/sysprep.xml gebruikt dan bij de andere mode. Na het booten van het image zullen stappen uit &lt;EM&gt;AuditSystem &lt;/EM&gt;en &lt;EM&gt;AuditUser &lt;/EM&gt;uitgevoerd worden.&lt;/P&gt;
&lt;P&gt;"Enter System Out-of-Box Experience (OOBE)" is de standard mode waarmee je je image sealed. De gebruikelijke secties uit de unattend.xml worden uitgevoerd.&lt;/P&gt;
&lt;P&gt;"Generalize" verwijdert alle systeemspecifieke informatie uit het OS (bijvoorbeeld de SID), en vormt een algemeen image.&lt;/P&gt;
&lt;P&gt;Naast de 'System Cleanup Action' kan je met de 'Shutdown Options'&amp;nbsp;wat je systeem doet nadat je Sysprep gedraait hebt. Kies voor de 'System Out-of-Box Experience (OOBE)', en 'Generalize'&amp;nbsp; en laat het systeem afsluiten. Je systeem is nu klaar om een Image van te trekken.&lt;/P&gt;
&lt;P&gt;Als je er voor kiest om een unattend.txt te configureren zou ik de commandline variant gebruiken:&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;sysprep.exe /oobe /generalize /shutdown /unattend:&lt;BESTANDSNAAM.XML&gt;&lt;/BESTANDSNAAM.XML&gt;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;STAP4:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Om het image te maken heb je tools nodig. We gaan een WinPE bootimage maken met de ImageX tools om vervolgens vanaf te booten en het WIM image van het systeem te trekken. Download en installeer daarom de &lt;A title="Windows Automated Installation Kit" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=C7D4BC6D-15F3-4284-9123-679830D629F2" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=C7D4BC6D-15F3-4284-9123-679830D629F2"&gt;Windows Automated installation kit&lt;/A&gt;&amp;nbsp;op je admin pc. Uit je program list kan je een command shell openen waar de meest gebruikte tools al in je &lt;EM&gt;PATH&lt;/EM&gt; staan. Draai vervolgens het volgende commando: &lt;CODE&gt;Copype.cmd x86 C:\WindowsPe&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;Dit commando kopieert de x86 sources van WinPE naar een door jou te kiezen directory, in dit geval C:\WindowsPe. Je kan dit ook voor x64 doen... Het laat zich raden wat het commando dan moet zijn&amp;nbsp;:) .&lt;/P&gt;
&lt;P&gt;Kopieer vervolgens ImageX naar een subfolder van de iso directory die aangemaakt is in C:\WindowsPe.&lt;/P&gt;
&lt;P&gt;[viewcode] src=http://www.spurius.nl/scriptfiles/Imagex.txt showsyntax=no [/viewcode]&lt;/P&gt;
&lt;P&gt;Ook dien je een &lt;A title="WinImage config file aanmaken" href="http://technet2.microsoft.com/WindowsVista/en/library/50ddee79-1539-477b-ad79-726c9351b34a1033.mspx?mfr=true" target=_blank mce_href="http://technet2.microsoft.com/WindowsVista/en/library/50ddee79-1539-477b-ad79-726c9351b34a1033.mspx?mfr=true"&gt;win image configuration&lt;/A&gt; bestand aan te maken. Dit bestand wordt voornamelijk gebruikt om bestanden en directories te excluden bij de creatie van een image. Een voorbeeld bestand is het volgende:&lt;/P&gt;
&lt;P&gt;[viewcode] src=http://www.spurius.nl/scriptfiles/wimscript.ini.txt link=yes showsyntax=no scroll=yes scrollheight=200px[/viewcode]&lt;/P&gt;
&lt;P&gt;Kopieer dit wimimage.ini bestand naar dezelfde directory waar ImageX staat.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;STAP5:&lt;BR&gt;&lt;/STRONG&gt;&lt;BR&gt;&lt;A title="Het aanmaken van een bootable ISO van WinPE" href="http://www.spurius.nl/wp-content/uploads/2008/01/winpe_image_create.png" rel=thumbnail mce_href="http://www.spurius.nl/wp-content/uploads/2008/01/winpe_image_create.png"&gt;&lt;IMG alt="Het aanmaken van een bootable ISO van WinPE" src="http://www.spurius.nl/wp-content/uploads/2008/01/winpe_image_create.thumbnail.png" align=left mce_src="http://www.spurius.nl/wp-content/uploads/2008/01/winpe_image_create.thumbnail.png"&gt;&lt;/A&gt;Open nu de command shell via de cmd-link vanuit de " Windows AIK tools" program group.&lt;BR&gt;In de shell draai je het volgende commando om een bootable ISO image te maken:&lt;BR&gt;&lt;CODE&gt;oscdimg.exe -n -bc:\WindowsPE\etfsboot.com c:\WindowsPE\ISO c:\WindowsPE\bootcd.iso&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;Brand het iso image nu naar cd of mount het via remote media boards. Boot het systeem en dump een image naar een netwerkshare. Doordat&amp;nbsp;veelgebruikte NIC drivers gewoon in de HAL van WinPE zitten, zal de netwerkverbinding&amp;nbsp;(hopelijk) gewoon gestart zijn. Als je geen DHCP hebt&amp;nbsp;draaien kan je met&amp;nbsp;&lt;A title="Netsh commando" href="http://technet2.microsoft.com/windowsserver/en/library/fd1e2fbe-15a6-413b-b712-28afb312c92f1033.mspx?mfr=true" mce_href="http://technet2.microsoft.com/windowsserver/en/library/fd1e2fbe-15a6-413b-b712-28afb312c92f1033.mspx?mfr=true"&gt;NETSH&lt;/A&gt; ip addressen toewijzen en daarna met NET USE een netwerk share aanmaken:&lt;/P&gt;
&lt;P&gt;Statisch IP:&lt;BR&gt;&lt;CODE&gt;Netsh interface ipv4 add address address=x.x.x.x/x gateway=x.x.x.x &lt;/CODE&gt;&lt;BR&gt;DNS Server:&lt;BR&gt;&lt;CODE&gt;Netsh interface ipv4 add dnsserver x.x.x.&lt;/CODE&gt;&lt;BR&gt;Share:&lt;BR&gt;&lt;CODE&gt;Net Use Z: \\&lt;SERVER&gt;&lt;/SERVER&gt;\&lt;SHARE&gt;&lt;/SHARE&gt; /user:&lt;DOMAIN\USER&gt;&lt;/DOMAIN\USER&gt;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;Nu de share gemaakt is, maak je een WIM image: &lt;CODE&gt;Imagex /capture /compress max C: Z:\Cdrive.Wim “Spurius Cdrive Image” .&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;Nu heb je een image die klaar is om gebruikt te worden door bijv Windows Deployment Services.&lt;/P&gt;
&lt;P&gt;Ik zal in een later artikel ingaan op WDS voor 2008...&lt;/P&gt;
&lt;P&gt;Suc6 met testen :)&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3127294" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/mpriem/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Deployment/default.aspx">Deployment</category></item></channel></rss>