<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jaspers&#039; Weblog</title>
	<atom:link href="http://blog.repsaj.nl/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.repsaj.nl</link>
	<description>My personal blog about me, my work and what I like.</description>
	<lastBuildDate>Fri, 24 May 2013 06:41:43 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>SP2010: The hidden TaxonomyStaplerFeature</title>
		<link>http://blog.repsaj.nl/index.php/2013/04/sp2010-the-hidden-taxonomystaplerfeature/</link>
		<comments>http://blog.repsaj.nl/index.php/2013/04/sp2010-the-hidden-taxonomystaplerfeature/#comments</comments>
		<pubDate>Thu, 25 Apr 2013 10:20:21 +0000</pubDate>
		<dc:creator>Jasper Siegmund</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[taxonomy]]></category>

		<guid isPermaLink="false">http://blog.repsaj.nl/?p=1052</guid>
		<description><![CDATA[I am a big fan of keeping things clean. The more you clutter, the more chance of faults you might not have expected. Today, I learned that sometimes cleaner is not better. I like using the blank site template to create new sites. Most people tend to use the team site, but that already has [...]]]></description>
				<content:encoded><![CDATA[<p>I am a big fan of keeping things clean. The more you clutter, the more chance of faults you might not have expected. Today, I learned that sometimes cleaner is not better.</p>
<p>I like using the blank site template to create new sites. Most people tend to use the team site, but that already has a document library, calendar and a number of preactivated features. Nice to start a team site, but what if the site you&#8217;re creating is not a team site?? As I said; I like starting clean.</p>
<p>But amongst the features not being activated by default on a blank site is a tricky one: the TaxonomyStaplerFeature (ID 73EF14B1-13A9-416b-A9B5-ECECA2B0604C). This is a stapling feature which in it&#8217;s turn activates multiple other hidden features. You need it for several taxonomy related things, like subscribing to content types from an enterprise content hub. And as said; the features are hidden, so you can only enable them if you have server access.</p>
<p>So I guess we&#8217;ll need another stapling feature, to staple the missing features to the blank site definition!? <img src='http://blog.repsaj.nl/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  I&#8217;m not sure yet if this is the only one which messes up pretty regular functionality. I don&#8217;t mind features I don&#8217;t use that often being off, but this one should have been on by default in my opinion. Or they could have provided another template: &#8220;blank site with no functionality whatsoever&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.repsaj.nl/index.php/2013/04/sp2010-the-hidden-taxonomystaplerfeature/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sapstromen</title>
		<link>http://blog.repsaj.nl/index.php/2013/04/sapstromen/</link>
		<comments>http://blog.repsaj.nl/index.php/2013/04/sapstromen/#comments</comments>
		<pubDate>Wed, 24 Apr 2013 19:19:06 +0000</pubDate>
		<dc:creator>Jasper Siegmund</dc:creator>
				<category><![CDATA[Social]]></category>

		<guid isPermaLink="false">http://blog.repsaj.nl/?p=1056</guid>
		<description><![CDATA[Een paar weken terug hoorde ik voor &#8216;t eerst over sapstromen. Het schijnt dat planten die nodig hebben om blaadjes te krijgen en in de winter doen ze het dus blijkbaar niet. Het was een paar dagen lekker weer en meteen verwachtte heel Nederland dat zijn of haar tuintje wel in volle bloei zou staan. Niks [...]]]></description>
				<content:encoded><![CDATA[<p>Een paar weken terug hoorde ik voor &#8216;t eerst over sapstromen. Het schijnt dat planten die nodig hebben om blaadjes te krijgen en in de winter doen ze het dus blijkbaar niet. Het was een paar dagen lekker weer en meteen verwachtte heel Nederland dat zijn of haar tuintje wel in volle bloei zou staan. Niks daarvan. Maar okee, de sapstromen beginnen inmiddels hun werk te doen en ik kan al bijna niet meer door mijn heg heen kijken.</p>
<p>Dat gedoe over sapstromen deed me denken aan iets wat me al een tijdje fascineert. Pisvrees. Voor de vrouwelijke lezers van mijn blog: daar hebben sommige mannen last van. Ik persoonlijk niet overigens, laten we dat voorop stellen. Als ik moet, dan moet ik; het zal me werkelijk een worst (hèhè&#8230;) wezen hoeveel man er dan naast of achter me staat. Een ieder van mijn mannelijke vrienden zal kunnen bevestigen dat ik probleemloos mijn fiere straal in de pot laat kletteren. Dat maakt het ook dat ik me lastig kan verplaatsen in het hele verschijnsel.</p>
<p>Van wat ik heb begrepen maakt de pisvrees het onmogelijk om je plas te lozen wanneer er andere kerels in de buurt zijn. En tja, op sommige toiletten is dat nu eenmaal zo. Zeker als de hokjes bezet zijn, of af en toe te smerig voor woorden. En daar sta je dan, met je volle blaas. Dat is dus precies het gedeelte wat ik niet zo snap. Als je moet en je gaat niet; dan pis na een tijdje toch in je broek? Lijkt me toch net ietsjes genanter.</p>
<p>Begrijp me niet verkeerd: het lijkt me super vervelend, ik heb het te doen met de mannen die hier onder gebukt gaan. Iedere keer in spanning naar het toilet, hopend op een leeg en fris hokje. En ik vraag me meteen af: werkt het in een hokje dan wel meteen? Wat nu als het hokje naast je bezet is en de tijdelijke eigenaar van die twee vierkante meter grond er wat geluid bij maakt? Lastig.</p>
<p>En nu ik er zo over mijmer vraag ik me af of vrouwen hier überhaupt wel eens last van hebben!? Ik bedoel; die gebruiken nooit een urinoir of goot. Altijd in een hokje. Dus bestaat er wel zoiets als vrouwelijke pisvrees? Wat een raadsels.</p>
<p>Een hoop van onze gewoonten en gedragen zijn op een of andere manier terug te herleiden naar &#8220;de oermens&#8221;. Ons sociale gedrag, het &#8220;bij de groep willen horen&#8221;; dat doe je omdat je vroeger als eenling ten dode opgeschreven was. Voer voor de leeuwen. Maar wat dan als je buiten de groep, ergens achteraf je plas moet doen? Ga er maar aan staan! We mogen dus wel concluderen dat deze mannen eigenlijk de echte bikkels zijn. Niks om mee te spotten! En verder: succes.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.repsaj.nl/index.php/2013/04/sapstromen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WCF service using Azure relay and ADFS authentication (2/2)</title>
		<link>http://blog.repsaj.nl/index.php/2013/04/wcf-service-using-azure-relay-and-adfs-authentication-22/</link>
		<comments>http://blog.repsaj.nl/index.php/2013/04/wcf-service-using-azure-relay-and-adfs-authentication-22/#comments</comments>
		<pubDate>Mon, 15 Apr 2013 19:30:29 +0000</pubDate>
		<dc:creator>Jasper Siegmund</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[ADFS]]></category>
		<category><![CDATA[ServiceBus]]></category>

		<guid isPermaLink="false">http://blog.repsaj.nl/?p=870</guid>
		<description><![CDATA[In the second part of this article (read part 1 here), we&#8217;re going to extend our relayed service with AD (Active Directory) authentication. In most cases you&#8217;ll need authentication to provide some security for your business data. In this example, we&#8217;re keeping it simple; just using a valid domain account to access the data. All [...]]]></description>
				<content:encoded><![CDATA[<p>In the second part of this article (read part 1 <a href="http://blog.repsaj.nl/?p=850">here</a>), we&#8217;re going to extend our relayed service with AD (Active Directory) authentication. In most cases you&#8217;ll need authentication to provide some security for your business data. In this example, we&#8217;re keeping it simple; just using a valid domain account to access the data. All (enabled) accounts are valid. But with some extending, you can quite easily adapt this code to work with AD groups for instance, making sure only certain users can get to the data. This is done by using claims, perhaps I&#8217;ll cover that in a third article.<span id="more-870"></span></p>
<p>Let&#8217;s sum up the things we&#8217;ll need to get this working:</p>
<ol>
<li>An <strong>ADFS server</strong> is required to validate the authentication requests. This server needs to be accessible via the Internet, so usually it will live inside a DMZ zone of some kind. Let me clarify that I am <span style="text-decoration: underline;">not</span> an authentication / ADFS expert and that I did not configure our sever (actually, I don&#8217;t even have access). So you might need the help of a colleague here as I did.</li>
<li>You need to setup <strong>Azures ACS</strong> (Access Control Service). How to do that, I will describe in this article.</li>
<li>You need to alter your <strong>client</strong> and <strong>server</strong> code to authenticate themselves using ADFS <strong>instead of</strong> the previously used shared access key.</li>
</ol>
<p>The authentication flow will go as follows:</p>
<ol>
<li>Your client sends an authentication request to the ADFS server.</li>
<li>The ADFS server replies with a SAML token when the credentials supplied were valid. This token is encrypted.</li>
<li>Your client decrypts the token using the decryption certificate.</li>
<li>The decrypted token is used to create a TokenProvider object, which is then passed to the relay binding endpoint.</li>
<li>Because of the trust setup between ACS and ADFS, ACS will recognized the passed along token and provide access based on it.</li>
</ol>
<p>Behind the scenes there&#8217;s much more going on, but these are the basics. This differs from what I first had in mind myself; I thought ACS would contact ADFS and handle the security. It&#8217;s important to realize it doesn&#8217;t work that way; YOU need to provide the ADFS token. Perhaps they&#8217;ll change that in de future? Don&#8217;t know. It would be great if you could just send credentials to ACS and tell it to verify them at the ADFS server. But until that happens, this is what you&#8217;ll need to do.</p>
<h2>ADFS Requirements</h2>
<p>First, we&#8217;re going to setup ADFS. I&#8217;m going to assume you&#8217;ll won&#8217;t be doing that yourself (I didn&#8217;t). If you&#8217;re going to contact your ADFS administrator, you&#8217;ll need the following things:</p>
<ul>
<li><strong>The URL of the FederationMetadata.xml</strong>. This is usually found at:<br />
<a href="https://adfs.company.com/FederationMetadata/2007-06/FederationMetadata.xml">https://adfs.company.com/FederationMetadata/2007-06/FederationMetadata.xml</a>These XML&#8217;s are great because they automate a part of the setup.</li>
<li><strong>The token decryption certificate<br />
</strong>Which you&#8217;ll need to decrypt the token (duh), otherwise you won&#8217;t be able to use it.<strong><br />
</strong></li>
<li><strong>His ok to configure a relying party<br />
</strong>The administrator will need to configure ACS as a relying party in ADFS as well. Sure make sure you get the approvals for that when needed.<strong><br />
</strong></li>
<li><strong>Enabled usernamemixed endpoint<br />
</strong>Ask the administrator to verify that the <em>usernamemixed</em> endpoint is enabled and ask for the URL. Normally it would be:<br />
<a href="https://adfs.company.com/adfs/services/trust/13/usernamemixed"><span style="background-color: white;">https://adfs.company.com/adfs/services/trust/13/usernamemixed</span></a></li>
</ul>
<p>In return, you can provide the ADFS administrator with the metadata XML URL for ACS. He can use that to configure a relying party in ADFS. The URL is found in the ACS management portal, under &#8220;Application Development&#8221;. It will be something like: <a href="https://calculator-sb.accesscontrol.windows.net/FederationMetadata/2007-06/FederationMetadata.xml">https://calculator-sb.accesscontrol.windows.net/FederationMetadata/2007-06/FederationMetadata.xml</a>.<br />
<strong>Note</strong>: you&#8217;ll need the –sb URL (also see &#8220;Setting up ACS&#8221;)!</p>
<h2>Setting up ADFS</h2>
<p>I&#8217;m not going to elaborate on how to setup ADFS since I&#8217;m not a specialist. I can however point you to this article: <a href="http://msdn.microsoft.com/en-us/library/jj136813.aspx">http://msdn.microsoft.com/en-us/library/jj136813.aspx</a>. It clearly describes what to do. I used it as guidance on this entire project, but it doesn&#8217;t use username/password type credentials, so don&#8217;t copy/paste the code!</p>
<h2>Setting up ACS</h2>
<p>Setting up ACS is described in the article as well, but I want to elaborate on that a bit. First important thing to realize is that your service bus has a <strong>separate ACS</strong>! That fooled me for a while; I would open up the Azure management portal, click Active Directory, select my instance and select &#8220;Manage&#8221;. But in that case, Service Bus won&#8217;t be there as a relying party! To open up the correct one, go to &#8220;Service Bus&#8221;, click &#8220;Access Key&#8221; and then click the &#8220;Open ACS Management Portal&#8221; link. Or you can browse to &#8220;<a href="https://namespace-sb.accesscontrol.windows.net">https://namespace-sb.accesscontrol.windows.net</a>&#8220;, replace <em>namespace</em> with your own of course.</p>
<p>If your ADFS administrator gave you the FederationMetadata URL, setting up is easy.</p>
<ul>
<li>Click &#8220;Identity Providers&#8221;</li>
<li>Select &#8220;WS-Federation identity provider&#8221;</li>
<li>Choose a name and insert the metadata URL</li>
<li>Under &#8220;Used by&#8221; select &#8220;Service Bus&#8221;. This will hook up this identity provider to the service bus.</li>
</ul>
<p>Done! Using the metadata from the XML, the rest is configured pretty much automagically. Again, for more detail check out <a href="http://msdn.microsoft.com/en-us/library/jj136813.aspx">this</a> article.</p>
<h2>Setting up the client and server</h2>
<p>Now it&#8217;s back to code again. For both the server and the client, we will have to switch out the TokenProvider. In the relay example we were using <strong>TokenProvider.<span style="background-color: white;">CreateSharedSecretTokenProvider</span></strong>, now we will use <strong>TokenProvider.<span style="background-color: white;">CreateSamlTokenProvider</span></strong> instead. For that, we&#8217;ll need a SAML token which we will get from ADFS.</p>
<p>The samples are a bit too big to all publish, so please just download the solution file (see bottom). I will highlight a few things.</p>
<ul>
<li>For connecting to the ADFS instance, we use the <span style="background-color: white;"><strong>UserNameWSTrustBinding</strong></span> binding.</li>
<li>That binding is used in a <span style="background-color: white;"><strong>WSTrustChannelFactory</strong></span> instance, in which we need to set the credentials of the user. Note that for both client and server it doesn&#8217;t matter what you put in here, as long as the account is a valid one. But you can implement more control later, requesting certain claims for instance. I need to figure out how before I blog about it <img src='http://blog.repsaj.nl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
<li>Another thing to note is the value we put into the &#8220;AppliesTo&#8221; property of the <span style="background-color: white;">RequestSecurityToken</span>. The value needs to be present in the &#8220;relying party identifiers&#8221; list of ADFS. If it&#8217;s not, you&#8217;ll won&#8217;t receive a token.</li>
</ul>
<p>So that all boils down to:</p>
<pre class="prettyprint">string samlToken = GetTokenFromADFS.GetIssuedToken(Constants.adfsTrust13UsernameMixed, Constants.acsEndpoint, Constants.adfsX509CertificateSubjectName, Constants.domainUser, Constants.domainPassword);

var cf = new ChannelFactory&lt;ICalculatorChannel&gt;(
             new BasicHttpRelayBinding(),
             new EndpointAddress(ServiceBusEnvironment.CreateServiceUri("https", Constants.sbNamespace, Constants.sbServicePath)));

cf.Endpoint.Behaviors.Add(new
    TransportClientEndpointBehavior {
        TokenProvider = TokenProvider.CreateSamlTokenProvider(samlToken)
});</pre>
<p>To be absolutely honest, the <strong><span style="background-color: white;">GetTokenFromADFS.GetIssuedToken</span><br />
</strong>I mostly got from a very kind Microsoft engineer who helped me on this. If you want to create and understand that yourself, you got some reading to do about the authentication flow (spnego). I just know it works and have a general understanding of what it does. That suffices too <img src='http://blog.repsaj.nl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>By the way, Microsoft guys, why not stick a method like <span style="background-color: white;">GetTokenFromADFS.GetIssuedToken</span> in the IdentityProvider framework dll&#8217;s?</p>
<p>As you can see, the code is not that different from what it was. And that&#8217;s the beauty of it. Apart from the &#8220;fetch SAML token&#8221; code, most stuff is done by the Azure ServiceBus SDK bits. So once you understand the trick, it&#8217;s easy to implement, also for existing WCF services you might want to expose.</p>
<p>And then&#8230; finally… here&#8217;s the code! Make sure you alter the values in constants.cs (shared) and eventually create a configuration file of course.</p>
<p><a href="http://sdrv.ms/16YCt54">http://sdrv.ms/16YCt54</a></p>
<p>Hope you like it (and it works). If not, please use the comments below!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.repsaj.nl/index.php/2013/04/wcf-service-using-azure-relay-and-adfs-authentication-22/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WCF service using Azure relay and ADFS authentication (1/2)</title>
		<link>http://blog.repsaj.nl/index.php/2013/04/wcf-service-using-azure-relay-and-adfs-authentication-12/</link>
		<comments>http://blog.repsaj.nl/index.php/2013/04/wcf-service-using-azure-relay-and-adfs-authentication-12/#comments</comments>
		<pubDate>Fri, 05 Apr 2013 13:59:55 +0000</pubDate>
		<dc:creator>Jasper Siegmund</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[azure]]></category>
		<category><![CDATA[ServiceBus]]></category>

		<guid isPermaLink="false">http://blog.repsaj.nl/?p=850</guid>
		<description><![CDATA[What I&#8217;m going to write about in this two-part article is what could be considered quite a common scenario. Your company wants to expose data to its employees outside of the internal network. Take a mobile app (or Windows 8 app) for instance, which gets its data from a legacy back-end system. In &#8220;old fashioned&#8221; [...]]]></description>
				<content:encoded><![CDATA[<p>What I&#8217;m going to write about in this two-part article is what could be considered quite a common scenario. Your company wants to expose data to its employees outside of the internal network. Take a mobile app (or Windows 8 app) for instance, which gets its data from a legacy back-end system. In &#8220;old fashioned&#8221; scenario&#8217;s, you could:</p>
<ul>
<li>Create a WCF webservice to host the data.</li>
<li>Deploy the webservice into some kind of secured network zone (DMZ).</li>
<li>Kindly ask the firewall admins to open up a port to your service.</li>
<li>Register a DNS address which makes it easier to call your service.</li>
<li>Request SSL certificates and secure your service so only encrypted data is sent.</li>
</ul>
<p>In this article, I&#8217;ll write about how Azure can make your life easier by handling some of these things in a different way. You, as a reader, should be familiar with WCF and have a basic understanding of authentication schemes. Some knowledge of what ADFS is would be handy too.</p>
<p>There&#8217;s two Azure topics I want to talk about: <strong>relay</strong> and <strong>ACS</strong>. In the first part of this article, we&#8217;ll talk about relay. How to setup ACS with ADFS will be topic of the second part.</p>
<p>&nbsp;</p>
<h2>Setting up the service bus in Azure</h2>
<p><img class="alignleft" alt="" src="http://blog.repsaj.nl/wp-content/uploads/2013/04/040513_1403_ExposingWCF1.png" />Relay is a technique which enables you to register your WCF service with Azure. Once registered, clients are able to call Azure instead of your service directly. And because the service initiates the communication, you only need access <strong>to</strong> the Internet, not <strong>from </strong>it. In Azure, this is handled by the service bus, which is a multifunctional messaging system. Relay is only a part of the functionality.</p>
<p>Here&#8217;s what happens in general:</p>
<ol style="margin-left: 154px;">
<li>The service registers itself with Azure .</li>
<li>Azure acknowledges the registration. The connection is kept open for future use.</li>
<li>A client now connects to the endpoint registered with Azure and sends a webservice request.</li>
<li>The request is relayed to the local WCF service.</li>
<li>The result is passed back to Azure.</li>
<li>The service bus passes the result to the client.</li>
</ol>
<p>For you as a developer, this has some advantages:</p>
<ul>
<li>The call to Azure is https secured, so all data going to Azure is always encrypted. No need to purchase an SSL certificate.</li>
<li>Same goes for data going to the client, encrypted as well.</li>
<li>No need to open up any firewall ports. Default internet access is enough to make this work</li>
<li>Although I haven&#8217;t thoroughly tested this, it should work in all kinds of proxy-enabled scenario&#8217;s too.</li>
</ul>
<p>Ok, cool. So what do you need to make this work? To begin with, you&#8217;ll need a Windows Azure account. Open up the management portal (<a href="https://manage.windowsazure.com/">https://manage.windowsazure.com/</a>) and go to the &#8220;service bus&#8221; section. Click &#8220;Create&#8221; and choose a namespace for your service bus instance:</p>
<p><img alt="" src="http://blog.repsaj.nl/wp-content/uploads/2013/04/040513_1403_ExposingWCF2.png" /></p>
<p>You can request the access key once you created the service bus instance. This key is used to authenticate server / client with the service bus. In part 2, we&#8217;re going to use ACS / ADFS for that, in which case the shared secret access key is irrelevant.</p>
<h2>Creating a relayed WCF service</h2>
<p>Once you&#8217;ve got your service bus namespace setup, it&#8217;s time to create a service. Most easy way is to create a console application which will use a ServiceHost object to self-host the service. The most important thing here are the bindings. You will have to use two bindings:</p>
<ul>
<li>One normal binding (like BasicHttpBinding) which hosts the service in a normal way, for instance on <a href="http://localhost:1234">http://localhost:1234</a>.</li>
<li>A matching relay binding (in this case BasicHttpRelayBinding) which is used to connect to Azure and relay the service.</li>
</ul>
<p>Assuming some WCF knowledge, creating a service host should be easy:</p>
<pre class="prettyprint">ServiceHost serviceHost = new ServiceHost(typeof(CalculatorAPI), new Uri(serviceEndpoint));</pre>
<p>Registering the endpoints and bindings:</p>
<pre class="prettyprint">serviceHost.AddServiceEndpoint(
  typeof(ICalculatorAPI), new
  BasicHttpBinding(), "/"
);

serviceHost.AddServiceEndpoint(
    typeof(ICalculatorAPI), new BasicHttpRelayBinding(
        EndToEndBasicHttpSecurityMode.None, 
        RelayClientAuthenticationType.None),
    ServiceBusEnvironment.CreateServiceUri("https", "calculator", "api"))
    .Behaviors.Add(new TransportClientEndpointBehavior
    {
        TokenProvider = TokenProvider.CreateSharedSecretTokenProvider("owner", "&lt;&lt;azure_access_key&gt;&gt;")
    });</pre>
<p>The things to notice:</p>
<ul>
<li>The bindings need to match. So use a BasicHttpRelayBinding in combination with a BasicHttpBinding and not a WsHttpBinding for instance.</li>
<li>Both endpoints register the same interface class, so both endpoints know which methods your service will provide.</li>
<li>For the relay binding, you specify the service bus address with the help of the CreateServiceUri method. This asks for a scheme, the namespace you created earlier and a service path which can be anything you like.</li>
</ul>
<p>In the example for part 2 (ADFS), we&#8217;ll switch from using a SharedSecretTokenProvider to a SamlTokenProvider used with SAML tokens.</p>
<p>Basically, that&#8217;s all you need to do on the server side. Simple, right? You could create one extra endpoint to provide a mex metadata exchange binding. The code to do that:</p>
<pre class="prettyprint">// Check to see if the service host already has a ServiceMetadataBehavior
ServiceMetadataBehavior smb = serviceHost.Description.Behaviors.Find&lt;ServiceMetadataBehavior&gt;();

// If not, add one
if (smb == null)
  smb = new ServiceMetadataBehavior();

smb.HttpGetEnabled = true;
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
serviceHost.Description.Behaviors.Add(smb);

// Add MEX endpoint
serviceHost.AddServiceEndpoint(
    ServiceMetadataBehavior.MexContractName,
    MetadataExchangeBindings.CreateMexHttpBinding(),
    serviceAddress + "/mex"
);</pre>
<p>I would advise to use the mex endpoint only in development environments and leave it out for production. But that&#8217;s up to you, it doesn&#8217;t really matter that much.</p>
<p>Add a serviceHost.Open(), run your console app and see if it properly registers itself with Azure. Once it does, you should be able to create a client and connect with it.</p>
<h2>Creating a client to match</h2>
<p>Creating a client follows the same principles. The client counterpart of a ServiceHost is the ChannelFactory. Because it shares the interface definition, it&#8217;s wise to keep that class in a shared library. But you could also make use of the local endpoint and the &#8220;Add Service Reference&#8221; functionality of Visual Studio, which will generate an interface class for you. As long as the interface class has the same methods and signatures as your service has, you&#8217;re good.</p>
<pre class="prettyprint">var cf = new ChannelFactory&lt;ICalculatorAPIChannel&gt;(
    new BasicHttpRelayBinding(),
    new EndpointAddress(ServiceBusEnvironment.CreateServiceUri("https", "calculator", "api")));</pre>
<p>Now, as we did with the service, we need to specify the endpoint behaviour:</p>
<pre class="prettyprint">cf.Endpoint.Behaviors.Add(
    new TransportClientEndpointBehavior {
        TokenProvider = TokenProvider.CreateSharedSecretTokenProvider("owner", "&lt;&lt;azure_access_key&gt;&gt;")
    });</pre>
<p>And with that setup, you can simply create a channel and call the method of choice!</p>
<pre class="prettyprint">using (var ch = cf.CreateChannel())
{
    var answer = ch.Add(10, 6);
    Console.WriteLine("Answer: {0}", answer);
}</pre>
<p>So the cool thing is, apart from some configuration and setup, it&#8217;s really not that hard to setup a relayed service. In my opinion, this is far less complicated than convincing the firewall guys to open up ports for you <img src='http://blog.repsaj.nl/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>This service is secure. All the communications are encrypted via SSL and both client and server need to know the shared access key to be able to connect to the service bus. But this method of authentication is pretty limited and not really usable in mobile apps scenario&#8217;s (how do you prevent some unauthorized user from using the app?). So in the follow-up of this article I will explain how to extend the sample with ADFS integrated authentication. That article will also contain a full code sample.</p>
<p><strong>Update: and <a href="http://blog.repsaj.nl/?p=870">here&#8217;s</a> part two.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.repsaj.nl/index.php/2013/04/wcf-service-using-azure-relay-and-adfs-authentication-12/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing a windows service with Visual Studio 2012</title>
		<link>http://blog.repsaj.nl/index.php/2013/04/installing-a-windows-service-with-visual-studio-2012/</link>
		<comments>http://blog.repsaj.nl/index.php/2013/04/installing-a-windows-service-with-visual-studio-2012/#comments</comments>
		<pubDate>Mon, 01 Apr 2013 15:37:16 +0000</pubDate>
		<dc:creator>Jasper Siegmund</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[installer]]></category>
		<category><![CDATA[vs2012]]></category>

		<guid isPermaLink="false">http://blog.repsaj.nl/?p=844</guid>
		<description><![CDATA[Since Visual Studio 2012, the default installer project was switched for a limited edition of InstallShield. I won&#8217;t get into the discussion whether this was a step forward or backward, but it&#8217;s there. When you&#8217;re building an installer for Windows Service, you might get stuck in the situation where the installer is deploying your files [...]]]></description>
				<content:encoded><![CDATA[<p>Since Visual Studio 2012, the default installer project was switched for a limited edition of InstallShield. I won&#8217;t get into the discussion whether this was a step forward or backward, but it&#8217;s there.</p>
<p>When you&#8217;re building an installer for Windows Service, you might get stuck in the situation where the installer is deploying your files onto the filesystem, but the actual service isn&#8217;t appearing in the services console. That&#8217;s because the installer class didn&#8217;t get called to register the service. For those of you who don&#8217;t know; you need to add an installer class to your service which registers it with Windows (you can easily do so by right clicking the service and choosing &#8220;Add installer&#8221;.</p>
<p>Anyways. If this is the case, go to &#8220;Files&#8221; in step 2 of the installer and open it up. Right click your project and open up the properties window. Go to the second tab &#8220;COM &amp; .NET Settings&#8221;.</p>
<p><a href="http://blog.repsaj.nl/index.php/2013/04/installing-a-windows-service-with-visual-studio-2012/com-settings/" rel="attachment wp-att-845"><img class="alignnone size-medium wp-image-845" alt="COM settings" src="http://blog.repsaj.nl/wp-content/uploads/2013/04/COM-settings-215x300.png" width="215" height="300" /></a></p>
<p>There, you&#8217;ll find a checkbox &#8220;Installer Class&#8221; which you need to enable. Now compile your installer again and there you go: it&#8217;ll register your service in Windows again.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.repsaj.nl/index.php/2013/04/installing-a-windows-service-with-visual-studio-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SP2010: Errors in content deployment</title>
		<link>http://blog.repsaj.nl/index.php/2013/03/sp2010-errors-in-content-deployment/</link>
		<comments>http://blog.repsaj.nl/index.php/2013/03/sp2010-errors-in-content-deployment/#comments</comments>
		<pubDate>Fri, 22 Mar 2013 09:54:30 +0000</pubDate>
		<dc:creator>Jasper Siegmund</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[ContentDeployment]]></category>
		<category><![CDATA[SP2010]]></category>

		<guid isPermaLink="false">http://blog.repsaj.nl/?p=840</guid>
		<description><![CDATA[This is a topic which comes up more then once when you&#8217;re working with the content deployment feature. For those of you unfamiliar with content deployment; it&#8217;s basically a process to import and export a site collection in an automated way, across farms if you like to. But content deployment is a tricky process in [...]]]></description>
				<content:encoded><![CDATA[<p>This is a topic which comes up more then once when you&#8217;re working with the content deployment feature. For those of you unfamiliar with content deployment; it&#8217;s basically a process to import and export a site collection in an automated way, across farms if you like to.</p>
<p>But content deployment is a tricky process in which a number of things can go wrong. Most of the solution I&#8217;m going to mention are not new, but I could not find a blog which combines them all, so that&#8217;s wat I did.</p>
<p><span id="more-840"></span></p>
<h4>Object already exists</h4>
<p>A common problem are errors telling you that stuff already exists on the target site. I found it a best practice to always start with an empty site. When you manually create two sites in seperate farms and then try content deployment, these errors are pretty likely to occur.</p>
<p>When you want to start with an empty site in your target environment, start with <strong>an empty site</strong>, not one based on the &#8220;blank site&#8221; template, because that one isn&#8217;t empty at all. To start with a truly empty site, navigate to Create Site Collection in Central Administration. For the template, choose custom and then the &#8220;&lt;choose template later&gt;&#8221; option. Technically, this will create your site collection, but leave the RootWeb empty for later specification. When you open your site in the browser, the first thing it will do is ask you which template you want to use. The point here: don&#8217;t choose one! Leave it empty before trying content deployment.</p>
<p>You might read this and think &#8220;hmmm, I didn&#8217;t do that&#8221;. You delete your existing site and try again. Same error? Reason for that is that deleting isn&#8217;t actually deleting. When you delete your site from Central Administration, it get&#8217;s marked for deletion in the database, but isn&#8217;t actually deleted. Reading blogs you&#8217;ll find the tip to run the Gradual Site Deletion timer job for your web application, which should delete the site. Well guess what; it doesn&#8217;t! That&#8217;s because your site remain undeleted for the period of time you&#8217;ve set your recycle bin settings to. By default that&#8217;s 30 days. After that, the content will be marked for deletion and the timer job will delete your site.</p>
<p>To force deletion, you can use the Remove-SPDeletedSite Powershell command. To find out the ID of the site (which I prefer to the relative URL), you can check the AllSites and AllWebs database tables.</p>
<p>After running the command, execute the timer job again and you&#8217;ll notice the rows in the database are really gone.</p>
<h4>Feature not found</h4>
<p>Ok, so you&#8217;ve now got your empty site, but deployment still fails. It complains about missing features.</p>
<p>When you deploy accross multiple farms, you need to check if the same features (mostly in WSP files) have been deployed to all farms. Upon deployment, SharePoint will check if everything needed is available in the target environment and give you errors if that&#8217;s not the case.</p>
<p>When you&#8217;ve checked that, there&#8217;s also the case of application servers and front-end servers. Your farm might have been setup so that the web applications are only deployed to the front-end servers and not the applications servers. Upon deployment of a solution, SharePoint deploys the feature files only to the servers actually running the web applications where the solution is being deployed to. So those feature files might not exist on your application server.</p>
<p>So you should check if you&#8217;re running content deployment on a server which has the files needed. Check if the feature listed as missing is present in the FEATURES folder of the SharePoint hyve.</p>
<p>When the content deployment configuration doesn&#8217;t list a front-end as an option, it&#8217;s likely that your front-ends are not running the &#8220;Central Administration&#8221; service. Start that service on one of your front-ends and you&#8217;ll be able to configure it for content deployment. Or make sure the features are deployed to the application server as well, that&#8217;s your choice.</p>
<p>&nbsp;</p>
<p>Got any other common issues with content deployment? Put them in the comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.repsaj.nl/index.php/2013/03/sp2010-errors-in-content-deployment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Goedkoop is duurkoop?</title>
		<link>http://blog.repsaj.nl/index.php/2013/02/goedkoop-is-duurkoop/</link>
		<comments>http://blog.repsaj.nl/index.php/2013/02/goedkoop-is-duurkoop/#comments</comments>
		<pubDate>Wed, 27 Feb 2013 20:00:50 +0000</pubDate>
		<dc:creator>Jasper Siegmund</dc:creator>
				<category><![CDATA[Social]]></category>

		<guid isPermaLink="false">http://blog.repsaj.nl/?p=829</guid>
		<description><![CDATA[Ik heb de laatste tijd weer wat spulletjes gekocht. Eens in de zoveel tijd is het weer zover, dan komt die behoefte naar boven. En hoewel ik me soms wel eens laat verleiden tot minder briljante aankopen moet ik zeggen dat de meeste euro&#8217;s toch goed besteed worden. Weinig spijt, tot nu toe&#8230; Ik weeg m&#8217;n [...]]]></description>
				<content:encoded><![CDATA[<p>Ik heb de laatste tijd weer wat spulletjes gekocht. Eens in de zoveel tijd is het weer zover, dan komt die behoefte naar boven. En hoewel ik me soms wel eens laat verleiden tot minder briljante aankopen moet ik zeggen dat de meeste euro&#8217;s toch goed besteed worden. Weinig spijt, tot nu toe&#8230;</p>
<p>Ik weeg m&#8217;n keuzes dan ook altijd goed af. Er wordt vooronderzoek gedaan op internet, waar ik zowel kijk naar de professionele reviews als gebruikerservaringen. Daar laat ik me meestal grotendeels door leiden, ik vind dat meer waard dan het verkooppraatje wat een verkoper in de winkel me kan vertellen. Natuurlijk, die hebben misschien verstand van zaken en zijn dagelijks met die spullen bezig. Maar toch; ze staan daar om je iets te verkopen. Omzet, dat is waar het onderaan de streep om draait.</p>
<p>Bij sommige beslissingen komt het onderbuik gevoel kijken, je kent het vast. Soms is dat gevoel positief, je beslissing &#8220;voelt&#8221; gewoon goed. En soms werkt het tegen je, denk je dagenlang nog &#8220;heb ik daar nu wel goed aan gedaan&#8221;. Dat laatste gevoel heb ik bij de aankoop van mijn was/droog combinatie. Door vele mensen afgeraden, toch gedaan. En of ik er goed aan heb gedaan, dat zal de tijd leren. Als je dat onderwerp interessant vindt, trouwens, lees dan vooral het boek &#8220;Start with why&#8221; van Simon Sinek, waarin wordt uitgelegd waarom beslissingen soms goed of juist niet goed voelen. Aanrader!</p>
<p>Goed, op naar de moraal van dit verhaal: een beslissing is meer dan alleen het afwegen van de positieve en negatieve punten. Er komt gevoel bij kijken en in sommige gevallen spelen er aan de zijkant nog allerlei belangen. Zo koop je waarschijnlijk eerder een fiets van je oom die een fietsenwinkel heeft, dan van een willekeurige andere fietsenboer. Niet omdat die fietsen nu per se beter of goedkoper zijn, maar omdat het je oom is. Is dat dan goed of slecht? Geen idee, maar het voelt als de juiste beslissing.</p>
<p>Toch proberen we in Nederland (en in de EU en daarbuiten net zo goed) kostte wat kost alle niet rationele overwegingen bij een aankoop zoveel mogelijk buitenspel te zeggen. En dan noemen we dat vervolgens: de aanbesteding. Het idee achter een aanbesteding is eenvoudig: je zet op papier wat je wilt hebben, laat aanbieders je daarop een voorstel doen en kiest vervolgens &#8220;de beste&#8221;. Maar is dat dan ook echt de beste? Stel dat 2 aanbieders beweren dat ze je exact hetzelfde kunnen leveren, maar aanbieder A) is 20% goedkoper. Op basis van de rationele feiten zou je zeggen: doen! Op basis van je onderbuik gevoel misschien niet?</p>
<p>Die aanbestedingen doen we niet omdat we daar zin in hebben, die doen we omdat het moet. Nog voor de aanvraag de deur uit gaat is het al geen vrije beslissing meer. Weg onderbuikgevoel. En dus zitten we nu met, ik noem maar wat, een Fyra die niet rijdt. Die voldeed op papier aan alle eisen en was goedkoper dan de concurrentie. Maar ja, die eisenlijst is altijd op meerdere manier te interpreteren. En wie zegt dat die gekke Italianen niet een paar vinkjes hebben gezet in kolommetjes, waar ze eigenlijk geen vinkje hadden mogen zetten? Vraag me af welke beslissing er genomen was wanneer de NS naar haar onderbuikgevoel had geluisterd.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.repsaj.nl/index.php/2013/02/goedkoop-is-duurkoop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Auto SP Solution Installer</title>
		<link>http://blog.repsaj.nl/index.php/2013/01/auto-sp-solution-installer/</link>
		<comments>http://blog.repsaj.nl/index.php/2013/01/auto-sp-solution-installer/#comments</comments>
		<pubDate>Thu, 31 Jan 2013 16:30:05 +0000</pubDate>
		<dc:creator>Jasper Siegmund</dc:creator>
				<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://blog.repsaj.nl/?p=821</guid>
		<description><![CDATA[Update 01-02-2013 As seen below in Matthias his reaction, there is already a similar project on Codeplex which I&#8217;ve clearly overlooked. I&#8217;m currently seeing if we could join forces (although their project is already very mature). So the Auto SP Solution Installer might have a short lifetime and merge into spsd.codeplex.com. Today I published my [...]]]></description>
				<content:encoded><![CDATA[<p><strong>Update 01-02-2013</strong> As seen below in Matthias his reaction, there is already a similar project on Codeplex which I&#8217;ve clearly overlooked. I&#8217;m currently seeing if we could join forces (although their project is already very mature). So the Auto SP Solution Installer might have a short lifetime and merge into <a href="http://spsd.codeplex.com">spsd.codeplex.com</a>.</p>
<p>Today I published my first Codeplex project. It&#8217;s called &#8220;Auto SP Solution Installer&#8221;, based upon the well known &#8220;Auto SP Installer&#8221; from which I borrowed some code.</p>
<p>The goal of the project is to easy the deployment process of solutions across farms in a DTAP environment. At a lot of my customers, I notice there&#8217;s a lack of SharePoint knowledge at the administration side. The administrators sometimes barely know what they&#8217;re doing, or they&#8217;re just doing what they are told by the developers. Or even worse: the developers are deploying stuff themselves.</p>
<p>Let&#8217;s be honest: the Auto SP Solution Installer can&#8217;t fix a faulty lifecycle process. But it can automate some of the steps, making sure the room for error get&#8217;s smaller.</p>
<p>The current feature set is as follows:</p>
<ul>
<li>Adding, removing, installing and updating your WSP files</li>
<li>Deploying WSP&#8217;s to specific web applications</li>
<li>Scheduled deployment of WSPs to prevent downtime</li>
<li>Warning the farm administrator about maintenance compliancy and GAC deployments</li>
<li>Installing, uninstalling, enabling and disabling features (scoped)</li>
<li>Using the same deployment configuration across all your farms in a DTAP environment. Farm configuration is seperated from solution configuration.</li>
</ul>
<p>Basically, you create a deployment configuration (XML) and provide some WSP&#8217;s. In a seperate configuration file, the farms (yes, multiple) are described. The script figures out on which farm it&#8217;s running, which web applications exist, etc.  and then deploys your solutions as configured. The same package of WSPs and config XML can then be moved to the next farm (test, acceptance, production) and re-used there without changing anything.</p>
<p>Also, the script will warn the administrator about maintenance windows and GAC deployments which will cause downtime to all of your web applications (IIS reset).</p>
<p>Interested? The first initial release can be found on Codeplex: <a href="http://autospsolinstaller.codeplex.com">http://autospsolinstaller.codeplex.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.repsaj.nl/index.php/2013/01/auto-sp-solution-installer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Aan alle Prius rijders</title>
		<link>http://blog.repsaj.nl/index.php/2013/01/aan-alle-prius-rijders/</link>
		<comments>http://blog.repsaj.nl/index.php/2013/01/aan-alle-prius-rijders/#comments</comments>
		<pubDate>Sun, 13 Jan 2013 19:06:54 +0000</pubDate>
		<dc:creator>Jasper Siegmund</dc:creator>
				<category><![CDATA[Social]]></category>
		<category><![CDATA[prius]]></category>

		<guid isPermaLink="false">http://blog.repsaj.nl/?p=817</guid>
		<description><![CDATA[Afgelopen week was er in de media veel te lezen over dit bericht: &#8216;Groene&#8217; auto vaak niet zo zuinig (via NOS). Ik had even het idee dat ik een déjà-vu had. En terecht! Tik op google maar eens &#8220;zuinige auto niet zo zuinig&#8221; in (of klik hier). Genoeg berichtjes uit 2010 en eerder die over [...]]]></description>
				<content:encoded><![CDATA[<p>Afgelopen week was er in de media veel te lezen over dit bericht: <a href="http://nos.nl/artikel/460484-groene-auto-vaak-niet-zo-zuinig.html">&#8216;Groene&#8217; auto vaak niet zo zuinig</a> (via NOS). Ik had even het idee dat ik een déjà-vu had. En terecht! Tik op google maar eens &#8220;zuinige auto niet zo zuinig&#8221; in (of klik <a href="https://www.google.nl/search?hl=nl&amp;tbo=d&amp;output=search&amp;sclient=psy-ab&amp;q=zuinige+auto+niet+zo+zuinig&amp;btnK=">hier</a>). Genoeg berichtjes uit 2010 en eerder die over hetzelfde onderwerp gaan.</p>
<p>Het verhaal is heel eenvoudig. Fabrikanten geven allerlei schitterende cijfers op voor hun zuinige modellen. Met deze auto&#8217;s draagt u een steentje bij, wordt de aarde een beetje groener, dat soort onzin. De overheid wil graag dat wij om het milieu denken en heeft daarom allerlei belastingvoordeelregeltjes bedacht voor mensen die graag in een Prius stappen. Ik zou er persoonlijk nog niet dood in gevonden willen worden, maar dat terzijde. Ik zou sowieso niet graag dood gevonden worden, ook dat terzijde.</p>
<p>En nu (en al eerder blijkbaar dus ook) blijkt dat die &#8216;groene&#8217; rijders helemaal niet de verbruikscijfers halen die door de fabrikant zijn opgegeven. Joh! Tot zover nog niks nieuws onder de zon zou je zeggen. Zou je zeggen, want blijkbaar is Den Haag hier wel heel verbaasd over. Er wordt nu ineens gevraagd om <a href="http://nos.nl/artikel/460557-nieuwe-zuinigheidstest-nodig.html">nieuwe tests</a>.</p>
<p>Hoi mensen in Den Haag. Ik heb alvast een nieuwe test bedacht. Vraag aan de leasemaatschappijen de kilometerstanden en de getankte liters brandstof op. Deel het een door het ander, dan weet je precies wat een auto verbruikt. Bereken zo per maand of jaar het bijtellingspercentage en beloon de zuinige rijder. De rijder die zijn best doet om netjes te rijden en weinig brandstof te verbruiken. En niet de rijder die kiest voor de leukste cijfertjes in de folder. Als u mij voor dit briljante idee mocht willen sponsoren met een leuk bijtellingstarief, mijn gegevens zijn reeds bij u bekend.</p>
<p>Ik hoop dat ze die belastingvoordeeltjes met terugwerkende kracht terugdraaien. En dan vooral voor de Prius rijder die mij met 150 voorbij komt stuiven op de snelweg. Dat zijn vast dezelfde mensen die zo geirriteerd zijn om de Grieken en hun belasting-ontduik-fratsen. Maar ondertussen wel 14% bijtelling aftikken voor een auto die op die manier geen steek zuiniger is dan een normaal model. En lelijk.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.repsaj.nl/index.php/2013/01/aan-alle-prius-rijders/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Werken bij een groot bedrijf? Doen!</title>
		<link>http://blog.repsaj.nl/index.php/2013/01/werken-bij-een-groot-bedrijf-doen/</link>
		<comments>http://blog.repsaj.nl/index.php/2013/01/werken-bij-een-groot-bedrijf-doen/#comments</comments>
		<pubDate>Tue, 08 Jan 2013 20:25:51 +0000</pubDate>
		<dc:creator>Jasper Siegmund</dc:creator>
				<category><![CDATA[Social]]></category>
		<category><![CDATA[in]]></category>

		<guid isPermaLink="false">http://blog.repsaj.nl/?p=808</guid>
		<description><![CDATA[Nu ongeveer een half jaar geleden stopte ik met mijn baan bij mijn vorige werkgever. Na 5 jaar vond ik het tijd voor iets anders en ben ik op zoek gegaan naar de volgende stap in mijn carriere. Zoals je misschien weet, of anders kunt lezen op mijn site, werk ik tegenwoordig voor Atos (vroeger [...]]]></description>
				<content:encoded><![CDATA[<p>Nu ongeveer een half jaar geleden stopte ik met mijn baan bij mijn vorige werkgever. Na 5 jaar vond ik het tijd voor iets anders en ben ik op zoek gegaan naar de volgende stap in mijn carriere. Zoals je misschien weet, of anders kunt lezen op <a href="http://www.repsaj.nl/work">mijn site</a>, werk ik tegenwoordig voor Atos (vroeger Atos Origin, die van het visje). En hoewel ik daar qua werkzaamheden ongeveer hetzelfde doe, is dit toch echt wel een andere baan. Van ongeveer 75 medewerkers naar 75.000 collega&#8217;s. Veel mensen vragen me: hoe is dat dan, werken bij zo&#8217;n groot bedrijf? Bij deze.</p>
<p>Vanaf het moment dat je naar je sollicitatie gaat is meteen wel duidelijk dat dit wel even iets anders is. In mijn geval mocht ik naar de HighTech campus in Eindhoven, wat sowieso al een toffe en inspirerende omgeving is. Er zitten daar veel tech bedrijven, namen waarvan je meteen denkt: &#8220;Hey! Ken ik!&#8221;. Een goed begin dus. De sollicitatie procedure was eigenlijk heel eenvoudig. Geen tests ofzo, gewoon twee gesprekjes en babbelen over je CV en ambities.</p>
<p>Eenmaal aangenomen begin je met (in mijn geval) 2 introductiedagen. De eerste dag krijg je, naast een stuk of 40 andere collega&#8217;s (wederom: in mijn geval, dat aantal schijnt te wisselen), meteen je toegangspas, laptop, SIM-kaart, VPN token, noem het maar op. De vrijdag ervoor had ik m&#8217;n pouleauto al voor de deur staan, werd bezorgd. Luxe! Tijdens de introductiedagen krijg je te horen hoe het bedrijf in elkaar zit, welke onderdelen er zijn en wat die doen. Ook wat er van je verwacht wordt; hoe je je uren inboekt, waar je e-learning modules kunt volgen, noem maar op. 2 Dagen volop informatie waarvan niet alles blijft hangen, maar het is een goed begin. En nog steeds kom ik soms collega&#8217;s tegen van &#8220;de intro&#8221;, lachen!</p>
<p>En dan aan de slag. De eerste dagen krijg je een buddy toegewezen die je wegwijs moet maken binnen het bedrijf. Daar kun je terecht met vragen, handig. Je gaat je Atos profiel maken zodat je aangeboden kunt worden aan klanten (afhankelijk van je functie natuurlijk). Even uitzoeken welke telefoon je wilt kopen van je budget in de phoneshop. Kortom: meteen onderweg. Netwerken is belangrijk, je collega&#8217;s wijzen je al snel op de koffieautomaat (hoewel ons nieuwe Enterprise Social Network deze snel moet gaan vervangen). Laat je zien en zorg dat mensen weten dat je openstaat voor opdrachten.</p>
<p>En dan het dagelijkse werken. Thuiswerken? Graag! De kantoorlocaties zijn beperkt, dus thuiswerken is geen vraag maar een must. Samenwerken doe je ook veel online. En soms face-to-face, bijvoorbeeld op &#8216;t Flight Forum in Eindhoven of in Utrecht. Dus ja, ik zit snel een uurtje in de auto om ergens te komen. Maar ook dat valt helemaal niet tegen. Gewoon op tijd weg (wel vroeg opstaan) maar vaak al voor 6 uur weer thuis. Dat lukte me bij mijn vorige baan nooit.</p>
<p>En er gebeurd echt vanalles! Zo hebben we een App Academy waar smartphone / tablet apps ontwikkelt worden. We hebben het Enterprise Social Network waar ik al over vertelde; een soort Facebook voor bedrijven. We hebben communities over allerlei onderwerpen waar je je voor kunt inschrijven. Die organiseren weer vaak (avond) sessies waar je veel van opsteekt. Weet je iets even niet zelf? Dan is de kans groot dat een collega je kan en wil helpen. En eigen initiatieven worden gewaardeerd! Dus ben ik nu community lead voor SharePoint, waardoor ik regelmatig online meetings heb met mensen uit Duitsland, Frankrijk en zelfs China. Boven het maaiveld uitsteken en opvallen in de menigte kan niet bij een groot bedrijf? Onzin. Tenminste, bij Atos dan.</p>
<p>Dus ja, ik zit wel op mijn plek! Mijn huidige opdracht loopt nog tot eind februari en dan gaan we weer kijken naar een nieuwe. En als het goed is ga ik nog ergens mijn best doen om de master opleiding voor SharePoint te volgen. Met misschien wel een tripje naar Redmond in het verschiet.</p>
<p>Werken bij een groot bedrijf? Doen!</p>
<p>Oh en ik moet er natuurlijk bij vermelden: als je interesse gewekt is, neem dan gerust contact op met me (<a href="mailto:jasper.siegmund@atos.net">jasper.siegmund@atos.net</a>). Dan zorg ik dat je gegevens terecht komen bij recruitment. Of als je zelf contact opneemt, noem dan even mijn naam. Kan ik weer een leuk weekendje weg boeken <img src='http://blog.repsaj.nl/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><a href="http://blog.repsaj.nl/index.php/2013/01/werken-bij-een-groot-bedrijf-doen/atos/" rel="attachment wp-att-809"><img class="alignnone size-medium wp-image-809" alt="Atos" src="http://blog.repsaj.nl/wp-content/uploads/2013/01/Atos-300x126.png" width="300" height="126" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.repsaj.nl/index.php/2013/01/werken-bij-een-groot-bedrijf-doen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
