<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://k2underground.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">BLACKTOP:  Writings From the Road</title><subtitle type="html" /><id>http://k2underground.com/blogs/blacktop/atom.aspx</id><link rel="alternate" type="text/html" href="http://k2underground.com/blogs/blacktop/default.aspx" /><link rel="self" type="application/atom+xml" href="http://k2underground.com/blogs/blacktop/atom.aspx" /><generator uri="http://communityserver.org" version="4.1.40407.4157">Community Server</generator><updated>2009-05-29T16:55:00Z</updated><entry><title>Escalations and Working Hours</title><link rel="alternate" type="text/html" href="/blogs/blacktop/archive/2010/01/08/escalations-and-working-hours.aspx" /><id>/blogs/blacktop/archive/2010/01/08/escalations-and-working-hours.aspx</id><published>2010-01-08T13:30:00Z</published><updated>2010-01-08T13:30:00Z</updated><content type="html">&lt;p&gt;When you use escalations with working hours you might not get the behavior you expect if you don&amp;#39;t pay attention.&amp;nbsp; Here&amp;#39;s an example.&amp;nbsp; Let&amp;#39;s say you have defined working hours as 9AM-5PM Monday-Friday--that&amp;#39;s 8 hours a day.&amp;nbsp; If you set an escalation for 1 day, when will the escalation fire if it is set at 9 AM on Monday?&lt;/p&gt;
&lt;p&gt;The casual answer (which I think many people assume) would be 9 AM Tuesday.&amp;nbsp; But that&amp;#39;s not right.&amp;nbsp; The escalation will fire at&amp;nbsp;5PM on Wednesday.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;What??&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It all makes sense once you understand what is happening.&amp;nbsp; One day has 24 hours, yet working hours are set to 8 hours per day.&amp;nbsp; So using 8 working hours per day, a 1 day escalation will take 3 - 8 hour days (3x8=24 hours) before it fires.&lt;/p&gt;
&lt;p&gt;That will really mess with your head.&amp;nbsp; Be careful when setting those escalations.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=34941" width="1" height="1"&gt;</content><author><name>DavidL</name><uri>http://k2underground.com/members/DavidL/default.aspx</uri></author></entry><entry><title>TIP:  Limiting Memory Use for SQL Server 2008</title><link rel="alternate" type="text/html" href="/blogs/blacktop/archive/2010/01/05/tip-limiting-memory-use-for-sql-server-2008.aspx" /><id>/blogs/blacktop/archive/2010/01/05/tip-limiting-memory-use-for-sql-server-2008.aspx</id><published>2010-01-05T14:21:00Z</published><updated>2010-01-05T14:21:00Z</updated><content type="html">&lt;p&gt;You can use the script below to limit the maximum amount of memory used by SQL 2008.&amp;nbsp; While this can be important on a VPC where you have mulitple applications requesting memory, I would use the default settings on a dedicated SQL box.&amp;nbsp; Replace xxx below with the maximum amount of memory in MB:&lt;/p&gt;
&lt;p&gt;sp_configure &amp;#39;show advanced options&amp;#39;, 1;&lt;br /&gt;GO&lt;br /&gt;RECONFIGURE;&lt;br /&gt;GO&lt;br /&gt;sp_configure &amp;#39;max server memory&amp;#39;, xxx;&lt;br /&gt;GO&lt;br /&gt;RECONFIGURE;&lt;br /&gt;GO&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=34892" width="1" height="1"&gt;</content><author><name>DavidL</name><uri>http://k2underground.com/members/DavidL/default.aspx</uri></author></entry><entry><title>Kerberos:  Duplicate SPNs</title><link rel="alternate" type="text/html" href="/blogs/blacktop/archive/2009/12/24/kerberos-duplicate-spns.aspx" /><id>/blogs/blacktop/archive/2009/12/24/kerberos-duplicate-spns.aspx</id><published>2009-12-25T01:32:00Z</published><updated>2009-12-25T01:32:00Z</updated><content type="html">&lt;p&gt;One of my favorite new features of Windows Server 2008 is the addition of the -X parameter to the SETSPN command. It finds duplicate SPNs.&amp;nbsp; This can be very helpful when setting up and troubleshooting Kerberos.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Except it doesn&amp;#39;t always work.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Instead, I&amp;#39;ve found this tool called DelegConfig to be incredibly helpful when configuring Kerberos and it detects duplicate SPNs when SETSPN -X does not:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1887"&gt;http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1887&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=34829" width="1" height="1"&gt;</content><author><name>DavidL</name><uri>http://k2underground.com/members/DavidL/default.aspx</uri></author></entry><entry><title>IIS 7, Kerberos, And the Checkbox of Doom</title><link rel="alternate" type="text/html" href="/blogs/blacktop/archive/2009/12/07/iis-7-kerberos-and-the-checkbox-of-doom.aspx" /><id>/blogs/blacktop/archive/2009/12/07/iis-7-kerberos-and-the-checkbox-of-doom.aspx</id><published>2009-12-07T20:04:00Z</published><updated>2009-12-07T20:04:00Z</updated><content type="html">&lt;p&gt;When configuring a web site to use Kerberos authentication on IIS 7 you might be tempted to use Kernal Mode Authentication.&amp;nbsp; There is a bug in HTTP.SYS that can cause your server to frequently blue-screen and reboot.&amp;nbsp; By frequent I mean every few seconds.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://k2underground.com/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.03.45.53/kernel.jpg"&gt;&lt;img border="0" src="http://k2underground.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Components.PostAttachments/00.00.03.45.53/kernel.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Until a standard patch is released, there is a hotfix available from Microsoft along with several manual workarounds in this KB&amp;nbsp; article:&amp;nbsp; &lt;a href="http://support.microsoft.com/kb/962943"&gt;http://support.microsoft.com/kb/962943&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The easiest manual workaround is to simply uncheck the Kernel mode authentication checkbox.&amp;nbsp; In order to keep the server stable long enough for you to uncheck the box, no one must be browse a Kerberos web site on the machine.&amp;nbsp; If they do, odds are it will blue screen.&lt;/p&gt;
&lt;p&gt;As Kerberos is typically used with K2, I found this out the hard way.&amp;nbsp; Thanks to Blake in K2 Support for pointing me to this KB.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=34554" width="1" height="1"&gt;</content><author><name>DavidL</name><uri>http://k2underground.com/members/DavidL/default.aspx</uri></author></entry><entry><title>Some rules were not applied</title><link rel="alternate" type="text/html" href="/blogs/blacktop/archive/2009/11/08/some-rules-were-not-applied.aspx" /><id>/blogs/blacktop/archive/2009/11/08/some-rules-were-not-applied.aspx</id><published>2009-11-09T03:28:00Z</published><updated>2009-11-09T03:28:00Z</updated><content type="html">&lt;p&gt;That&amp;#39;s&amp;nbsp; my all-time #1 favorite InfoPath Forms Services error.&amp;nbsp; Really, what could be more useful and informative than that?&lt;/p&gt;
&lt;p&gt;If you&amp;#39;ve used Forms Services with K2 very much, you&amp;#39;ve seen this annoying, frustrating, useless error.&amp;nbsp; Forms Services tells you can&amp;#39;t open (or submit) a form because &amp;#39;some rules were not applied.&amp;#39;&amp;nbsp; What it doesn&amp;#39;t tell you is anything useful, like what rule, what error.&lt;/p&gt;
&lt;p&gt;It is possible to enable more logging in Forms Services to put more details into the SharePoint log.&amp;nbsp; But here&amp;#39;s a simple trick you can use to find out more information about the error.&amp;nbsp; Simply go back into the InfoPath integration wizard and change the option to deploy the form using the InfoPath client.&amp;nbsp; When you get this error in the InfoPath client it gives&amp;nbsp; you a &amp;quot;Details&amp;quot; button that will give you some sort of vital clue about the error.&lt;/p&gt;
&lt;p&gt;When I&amp;#39;m creating a process that uses Forms Services InfoPath integration with K2, I always leave the client option checked during the early rounds of testing.&amp;nbsp; Later once I&amp;#39;m sure the form is working, I switch back to Forms Services.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=34211" width="1" height="1"&gt;</content><author><name>DavidL</name><uri>http://k2underground.com/members/DavidL/default.aspx</uri></author></entry><entry><title>The Best Way to Register a Service Instance</title><link rel="alternate" type="text/html" href="/blogs/blacktop/archive/2009/09/23/the-best-way-to-register-a-service-instance.aspx" /><id>/blogs/blacktop/archive/2009/09/23/the-best-way-to-register-a-service-instance.aspx</id><published>2009-09-23T16:11:00Z</published><updated>2009-09-23T16:11:00Z</updated><content type="html">&lt;P&gt;When you use a dynamic service like the built-in SharePoint service or the DynamicSQLService on blackmarket, you can run into trouble when moving between environments if you don't know to the best way to register the service instance.&amp;nbsp; There are actually many different ways to register a service instance; this is the best way for the long run.&lt;/P&gt;
&lt;P&gt;If you're brand new to blackpearl, you usually discover this after you attempt to deploy your SmartObjects to a different environment from where they were originally deployed.&amp;nbsp; You might get an error like this when you try to deploy:&lt;/P&gt;
&lt;P&gt;Error&amp;nbsp;1&amp;nbsp;Deploy smartobjects: Task error: SmartObjectServer Exception: Dependancy could not be created: System.Exception: Dependancy could not be created. Parent does not exist in this environment. Check Data property of exception.&lt;BR&gt;&amp;nbsp;&amp;nbsp; at SourceCode.Hosting.Services.DependancyService.VerifyObjects(List`1 parents)&lt;BR&gt;&amp;nbsp;&amp;nbsp; at SourceCode.Hosting.Services.DependancyService.CreateDepenancyBatch(Dictionary`2 depenancyBatch). SmartObject: 'SmartObject1'&lt;BR&gt;Parent ID = 'ae6c687b-af27-4160-843d-016c782757ed'&lt;BR&gt;Parent Name = 'Denallix News'&lt;BR&gt;Parent Class Name = ''&lt;BR&gt;Parent Version = ''&lt;BR&gt;Parent Extra Data = 'SourceCode.SmartObjects.Services.SharePoint.SharePointService'&lt;/P&gt;
&lt;P&gt;Why do you get this?&amp;nbsp; When you create a SmartObject that uses a service instance, the SmartObject binds to the &lt;U&gt;GUID&lt;/U&gt; of the service instance, not the name. When you move to another environment, if the service instance is created dynamically or you don’t specify a GUID when you register it, a GUID will be generated for you. When the GUIDs don’t match SmartObject deployment will fail with the error above. &lt;STRONG&gt;The best way to prevent this error message is to register the service the right way the first time and avoid the error altogether.&lt;/STRONG&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;The key is to register any service instance that is used in multiple environments with the same GUID.&amp;nbsp; You can do this with the &lt;STRONG&gt;BrokerManagement.exe&lt;/STRONG&gt; tool that is located in {blackpearl installation directory}\ServiceBroker.&amp;nbsp; If you use the default installation path, this will be C:\Program Files\K2 blackpearl\ServiceBroker.&amp;nbsp; When you start the tool, you will get the main menu below:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.k2underground.com/files/folders/33289/download.aspx"&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Click on &lt;STRONG&gt;Configure Services&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;On the next screen, drill down into the tree view on the left and find your service&lt;/LI&gt;
&lt;LI&gt;If you've already registered a service instance and you're getting the above error, note the settings of the instance, then delete it by right-clicking on it and &lt;STRONG&gt;Delete Service Instance&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;To add your service instance, right-click the service and &lt;STRONG&gt;Register Service Instance&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;A dialog will display that allows you to enter the details of the service instance.&amp;nbsp; This is the same information you would use if you were registering the instance through the workspace.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;IMG src="http://www.k2underground.com/files/folders/33290/download.aspx"&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Click &lt;STRONG&gt;Save&lt;/STRONG&gt; and the service will&amp;nbsp;build metadata about the underlying system&lt;/LI&gt;
&lt;LI&gt;The next screen is key.&amp;nbsp; Enter your system name and display name.&amp;nbsp; Notice the Service GUID field:&amp;nbsp;this is the GUID for the service instance.&amp;nbsp; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;IMG src="http://www.k2underground.com/files/folders/33291/download.aspx"&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;For the SmartObject to deploy correctly, you should make this GUID the same for this service instance in all of your different environments.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;How do you know what the GUID is for this service instance in your original environment?&amp;nbsp; You can run the BrokerManagement utility in the other environment and drill down to the service instance&amp;nbsp;to see the GUID.&amp;nbsp; If you have already seen the error above, the GUID you want is displayed in the message after Parent ID.&amp;nbsp; In the example above it is 'ae6c687b-af27-4160-843d-016c782757ed'.&lt;/P&gt;
&lt;P&gt;When you have&amp;nbsp;entered the correct GUID, click OK and then exit the BrokerManagement tool.&amp;nbsp; Your&amp;nbsp;SmartObjects should now deploy without error.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;When you register the service instance with the same GUID across your environments, your SmartObjects can deploy easily because they bind to the GUID of the service instance, not the name.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;What happens if you have already deployed your service instance to the new environment and you don't want to delete and re-add it?&amp;nbsp; You can use the Service Instance Synchronizer utility I posted to blackmarket to change the GUID of a deployed service instance.&amp;nbsp; &lt;A href="http://www.k2underground.com/k2/ProjectHome.aspx?ProjectID=71"&gt;http://www.k2underground.com/k2/ProjectHome.aspx?ProjectID=71&lt;/A&gt;&amp;nbsp;&amp;nbsp;There are a couple of considerations:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;You should never change the GUID of an instance that was pre-installed by K2&lt;/LI&gt;
&lt;LI&gt;If you have any SmartObjects already deployed that bind to the old GUID they will no longer work if you change the GUID.&lt;BR&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=33292" width="1" height="1"&gt;</content><author><name>DavidL</name><uri>http://k2underground.com/members/DavidL/default.aspx</uri></author></entry><entry><title>Interesting blog on Workflow Complexity</title><link rel="alternate" type="text/html" href="/blogs/blacktop/archive/2009/09/01/interesting-blog-on-workflow-complexity.aspx" /><id>/blogs/blacktop/archive/2009/09/01/interesting-blog-on-workflow-complexity.aspx</id><published>2009-09-01T14:45:00Z</published><updated>2009-09-01T14:45:00Z</updated><content type="html">&lt;P&gt;I just read this interesting blog post on workflow complexity&amp;nbsp;that I thought I would share:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.bagofspanners.com/2009/09/01/granularity-versus-pragmatism-translating-paper-workflow-to-a-business-process-management-system/"&gt;http://www.bagofspanners.com/2009/09/01/granularity-versus-pragmatism-translating-paper-workflow-to-a-business-process-management-system/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;I think this blog makes a lot of good points.&amp;nbsp; I have seen many cases where customers want to take a bad paper-based process and convert it to a bad automated process.&amp;nbsp; "We've done it that way for many years..." is often heard.&amp;nbsp; The absolute worst processes are designed by committees--they want to throw in something for everyone.&lt;/P&gt;
&lt;P&gt;How to solve this?&amp;nbsp; I don't have a magic solution.&amp;nbsp; But often it involves trying to get people to think about the goals of the process and&amp;nbsp;not about&amp;nbsp;how that might have been done in the past.&amp;nbsp; If you can isolate the goals, you can usually see a path.&amp;nbsp; For any feature/want/desire/additional scope item, ask how it helps meet the goals.&amp;nbsp; &lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=32847" width="1" height="1"&gt;</content><author><name>DavidL</name><uri>http://k2underground.com/members/DavidL/default.aspx</uri></author></entry><entry><title>Installing SilverLight 3 Visual Studio Tools Offline</title><link rel="alternate" type="text/html" href="/blogs/blacktop/archive/2009/08/28/installing-silverlight-3-visual-studio-tools-offline.aspx" /><id>/blogs/blacktop/archive/2009/08/28/installing-silverlight-3-visual-studio-tools-offline.aspx</id><published>2009-08-28T19:59:00Z</published><updated>2009-08-28T19:59:00Z</updated><content type="html">&lt;P&gt;I recently needed to install the SilverLight 3 Visual Studio Tools in a VPC that was not connected to the internet.&amp;nbsp; Unfortunately, the installer wants to connect to the internet to download the SilverLight SDK and won't complete without a connection.&amp;nbsp; I know I could reconfigure the network settings on the VPC to connect to the internet, but I have it configured for a special project and I had spent hours getting things just right and didn't want to mess it up.&amp;nbsp; I eventually found this workaround on the internet:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Download the SilverLight tools for Visual Studio&lt;/LI&gt;
&lt;LI&gt;Download the SilverLight SDK&lt;/LI&gt;
&lt;LI&gt;Copy these files over to your VPC and put them in the same directory&lt;/LI&gt;
&lt;LI&gt;Extract the contents of both of these setup files into the same folder by running both insallers from the command line with a /x parameter at the end&lt;/LI&gt;
&lt;LI&gt;In the extracted files, run &lt;STRONG&gt;vs_silverlighttools_setup.exe&lt;/STRONG&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;It will take a few minutes, but this will install the tools without connecting to the internet.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/jamlew/archive/2009/03/24/understanding-issues-installing-silverlight-3-via-web-platform-installer.aspx"&gt;http://blogs.msdn.com/jamlew/archive/2009/03/24/understanding-issues-installing-silverlight-3-via-web-platform-installer.aspx&lt;/A&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=32797" width="1" height="1"&gt;</content><author><name>DavidL</name><uri>http://k2underground.com/members/DavidL/default.aspx</uri></author></entry><entry><title>TIP:  Accessing Resources as the Web Application Pool Account Instead of the Current User</title><link rel="alternate" type="text/html" href="/blogs/blacktop/archive/2009/08/21/tip-accessing-resources-as-the-web-application-pool-account-instead-of-the-current-user.aspx" /><id>/blogs/blacktop/archive/2009/08/21/tip-accessing-resources-as-the-web-application-pool-account-instead-of-the-current-user.aspx</id><published>2009-08-21T14:44:00Z</published><updated>2009-08-21T14:44:00Z</updated><content type="html">&lt;P&gt;Generally custom web applications that interact with K2 impersonate the current user for security by setting this attribute in the web.config file:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;lt;identity impersonate="true"/&amp;gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;But sometimes you want to perform some code&amp;nbsp;in the security context of the account that runs the application pool.&amp;nbsp; There is a simple way to do this in code:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;using (System.Web.Hosting.HostingEnvironment.Impersonate())&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Code in here will execute as the application pool identity instead of the current user&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;}&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;I knew it could be done, but it took me a couple of hours of searching to find it.&amp;nbsp; Here is a great article with some ideas on the subject:&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://httpcode.com/blogs/PermaLink,guid,961b0893-cebf-47e2-a608-9562136bcad4.aspx"&gt;http://httpcode.com/blogs/PermaLink,guid,961b0893-cebf-47e2-a608-9562136bcad4.aspx&lt;/A&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=32653" width="1" height="1"&gt;</content><author><name>DavidL</name><uri>http://k2underground.com/members/DavidL/default.aspx</uri></author></entry><entry><title>(Almost) Any Port in a Storm</title><link rel="alternate" type="text/html" href="/blogs/blacktop/archive/2009/08/17/almost-any-port-in-a-storm.aspx" /><id>/blogs/blacktop/archive/2009/08/17/almost-any-port-in-a-storm.aspx</id><published>2009-08-17T18:12:00Z</published><updated>2009-08-17T18:12:00Z</updated><content type="html">&lt;P&gt;I was working with a customer recently who was having authentication problems on their development environment.&amp;nbsp; All K2 Components and MOSS were installed on the same server.&amp;nbsp; However, whenever they went to K2 Workspace or opened an InfoPath form that used SmartObjects they would always get prompted for credentials.&amp;nbsp; Since everything was installed on the same server except SQL (which is a blog for a different day) there shouldn’t be any need for configuring Kerberos.&amp;nbsp; I could see when they browsed to K2 Workspace the browser was showing it was in the &lt;EM&gt;Internet&lt;/EM&gt; security zone.&amp;nbsp; Internet Explorer will only pass your windows credentials to a server that is in your &lt;EM&gt;Local Intranet&lt;/EM&gt; or &lt;EM&gt;Trusted Sites&lt;/EM&gt; security zone.&amp;nbsp; Therefore, the solution was obvious:&amp;nbsp; add the K2 Workspace to the local intranet or trusted site zone.&amp;nbsp; This would also fix the prompting in InfoPath as it invokes web services in the K2 site to integrate with SmartObjects.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;Except&amp;nbsp;that didn’t work.&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;When they entered the URL to the K2 Workspace in the local intranet zone, I noticed they were entering it like this:&amp;nbsp; &lt;A href="http://k2dev.domain.com:81/"&gt;http://k2dev.domain.com:81&lt;/A&gt;.&amp;nbsp; Ah ha!&amp;nbsp; A clue!&amp;nbsp; They had installed MOSS first and put it on port 80.&amp;nbsp; Later when they installed K2 workspace, they set up a new web site on port 81.&amp;nbsp; This was enough information to figure out why they were getting prompted for credentials.&amp;nbsp; There is a little known (ah-hem) undocumented feature (cough) in Internet Explorer which prevents adding URLs with a port number to the local intranet zone or trusted sites zone.&amp;nbsp; See this article for additional information:&amp;nbsp; &lt;A href="http://support.microsoft.com/kb/296287"&gt;http://support.microsoft.com/kb/296287&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;The solution in this case is easy.&amp;nbsp; The K2 Workspace site needs to be put on port 80 so it can then be a local intranet or trusted site.&amp;nbsp;&amp;nbsp; But MOSS is already on port 80, you object!&amp;nbsp; No problem.&amp;nbsp; The answer lies with Host Headers.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Open up the IIS console.&amp;nbsp; Right-click the properties of the website (not virtual directory) containing K2 Workspace.&amp;nbsp; On the Web Site tab, click the Advanced button to the right of the IP Address field.&amp;nbsp; On the following Advanced Web Site Identification tab, click the Add button.&amp;nbsp; Give a name for your web site, specify port 80, and the IP address of the server hosting it in the dialog:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.k2underground.com/files/folders/32560/download.aspx"&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;But wait, there’s more!&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;We’re only one third done.&amp;nbsp; We’ve given a name to this site, but no one else knows about it yet.&amp;nbsp; We need to tell DNS about the new name so when someone types it in the browser address bar, it knows where to send it.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;You’ll need to have enough rights to perform the next step.&amp;nbsp; If you don't, make friends with a domain administrator.&amp;nbsp; You need to configure the DNS entry for this host header.&amp;nbsp; On the Start Menu, open Administrator Tools then click DNS.&amp;nbsp; In the DNS console, find your domain controller, expand Forward Lookup Zones, then right-click on your domain suffix (in this example domain.com).&amp;nbsp; Right-click and add New Host A record.&amp;nbsp; C Records won’t work, it must be an A record.&amp;nbsp; Enter the same name and IP Address you put on the host header and check the Create associated pointer (PTR) checkbox.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.k2underground.com/files/folders/32561/download.aspx"&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Hold on there partner, we’re still not done yet.&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;We need to re-run the K2 Configuration Manager to tell it where K2 Workspace is now located:&amp;nbsp; &lt;A href="http://k2workspace.domain.com/"&gt;http://k2workspace.domain.com&lt;/A&gt;.&amp;nbsp; If we don’t do this, it still thinks it is at &lt;A href="http://k2dev.domain.com:81/"&gt;http://k2dev.domain.com:81&lt;/A&gt;.&amp;nbsp; Re-run the configuration manager on the K2 host server and on the K2 Workspace server (in this customer’s case, they were the same machine), update the URL, and finish the configuration change by rebooting when prompted.&amp;nbsp; After the reboot, open up K2 Workspace in the browser.&amp;nbsp; Hey, it doesn’t prompt for credentials anymore!&amp;nbsp; If it does, make sure it is in your local intranet zone or trusted sites.&amp;nbsp;&amp;nbsp; In the Workspace Management Console, drill down into the environment variables for your site in the current (development) environment.&amp;nbsp; Edit the “Web Service URL” environment variable to reflect the new K2 Workspace URL:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.k2underground.com/files/folders/32562/download.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Now, re-deploy your InfoPath process that was prompting for credentials.&amp;nbsp; You have to do this to make sure that environment variable is updated in the appropriate spots.&amp;nbsp; After it is deployed you should be able to access both K2 Workspace and your InfoPath form without getting prompted for credentials.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;If you think you need to use host headers in a distributed environment, make sure you set them up &lt;EM&gt;before&lt;/EM&gt; you begin the install (as recommended in the blackpearl &lt;STRONG&gt;Getting Started Guide&lt;/STRONG&gt;).&amp;nbsp;&amp;nbsp; In a distributed environment you will need to use the host headers in your Kerberos settings.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=32563" width="1" height="1"&gt;</content><author><name>DavidL</name><uri>http://k2underground.com/members/DavidL/default.aspx</uri></author></entry><entry><title>Where did that activity data field go?</title><link rel="alternate" type="text/html" href="/blogs/blacktop/archive/2009/08/05/where-did-that-activity-data-field-go.aspx" /><id>/blogs/blacktop/archive/2009/08/05/where-did-that-activity-data-field-go.aspx</id><published>2009-08-05T18:47:00Z</published><updated>2009-08-05T18:47:00Z</updated><content type="html">&lt;P&gt;Every once in a while when I'm writing a server code event I have trouble remembering whether a particular activity data field is a destination instance field or an activity field and which&amp;nbsp;API syntax is used&amp;nbsp;to access it.&amp;nbsp; Things like that happen when you get older.&amp;nbsp; I use this little snippet in a server code event to help me out.&amp;nbsp; Attach to the process using the Visual Studio debugger and you'll see the messages in the output window.&lt;/P&gt;
&lt;P&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;System.Diagnostics.Debug.WriteLine("K2.ActivityInstanceDestination.DataFields");&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; foreach (DataField df in K2.ActivityInstanceDestination.DataFields)&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; {&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;nbsp;&amp;nbsp; System.Diagnostics.Debug.WriteLine("field: " + df.Name + " value: " + df.Value.ToString());&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; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Diagnostics.Debug.WriteLine("K2.ActivityInstanceDestination.ActivityInstance.DataFields");&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; foreach (DataField df in K2.ActivityInstanceDestination.ActivityInstance.DataFields)&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; {&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;nbsp;&amp;nbsp; System.Diagnostics.Debug.WriteLine("field: " + df.Name + " value: " + df.Value.ToString());&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; }&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=32380" width="1" height="1"&gt;</content><author><name>DavidL</name><uri>http://k2underground.com/members/DavidL/default.aspx</uri></author></entry><entry><title>Microsoft Virtual PC and FAT32 Disks</title><link rel="alternate" type="text/html" href="/blogs/blacktop/archive/2009/06/26/microsoft-virtual-pc-and-fat32-disks.aspx" /><id>/blogs/blacktop/archive/2009/06/26/microsoft-virtual-pc-and-fat32-disks.aspx</id><published>2009-06-26T20:08:00Z</published><updated>2009-06-26T20:08:00Z</updated><content type="html">&lt;P&gt;When you run MS Virtual PC on a drive formatted for FAT32 you might get some unanticipated behavior.&amp;nbsp; The maximum file size on FAT32 is 4GB - 1 byte.&amp;nbsp; If your .VHD file needs to grow beyond this limit, VPC will start creating files that have the same name as your .VHD but an extension of .V0&lt;EM&gt;n&lt;/EM&gt; where&amp;nbsp;n starts at 1 and gets incremented every time a new 4GB extension is needed.&amp;nbsp; VPC automatically starts splitting the HD image across logical files to fit within the FAT32 limitation.&amp;nbsp; If you want to back up a FAT32-based VHD you must also back up all of the .V0n files.&amp;nbsp; If you try to start the VPC without the .V0n files, your virtual image will not boot because the guest OS thinks the file system is corrupted.&amp;nbsp; This also applies to differencing disks.&lt;/P&gt;
&lt;P&gt;This might come up because many external USB drives come from the factory formatted as FAT32.&amp;nbsp; If you want to avoid this altogether, run the VHDs on a NTFS-formatted drive.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=31702" width="1" height="1"&gt;</content><author><name>DavidL</name><uri>http://k2underground.com/members/DavidL/default.aspx</uri></author></entry><entry><title>SharePoint Document Upload-Part 2</title><link rel="alternate" type="text/html" href="/blogs/blacktop/archive/2009/06/19/sharepoint-document-upload-part-2.aspx" /><id>/blogs/blacktop/archive/2009/06/19/sharepoint-document-upload-part-2.aspx</id><published>2009-06-19T16:33:00Z</published><updated>2009-06-19T16:33:00Z</updated><content type="html">&lt;STRONG&gt;TIP:&lt;/STRONG&gt;&amp;nbsp; When you upload a document to a SharePoint library that has versioning enabled and requires check-in/check-out&amp;nbsp;the document will not appear in the library until after it is checked-in.&amp;nbsp; On the document upload wizard, check the box to create a K2 Content Field (an XML field that holds metadata about the document).&amp;nbsp; Then add another SharePoint Document event and take the option to check-in the file using data from the content field.&amp;nbsp; After that your document will be visible in the library.&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=31591" width="1" height="1"&gt;</content><author><name>DavidL</name><uri>http://k2underground.com/members/DavidL/default.aspx</uri></author></entry><entry><title>SharePoint Document Upload</title><link rel="alternate" type="text/html" href="/blogs/blacktop/archive/2009/06/18/sharepoint-document-upload.aspx" /><id>/blogs/blacktop/archive/2009/06/18/sharepoint-document-upload.aspx</id><published>2009-06-18T05:26:00Z</published><updated>2009-06-18T05:26:00Z</updated><content type="html">&lt;P&gt;I was using the SharePoint Documents upload event wizard to upload an XML document to a Shared Documents library.&amp;nbsp; When the process ran, there were no errors, but the document did not appear in the library.&amp;nbsp; To make a long story short, the default Shared Document library has a document template of Word.&amp;nbsp; I deleted and re-created the Shared Document library and set the document template to 'None'.&amp;nbsp; Now the XML document is uploaded successfully when the process runs.&amp;nbsp; Why not just use a Form Library?&amp;nbsp; This document library will eventually hold many different kinds of documents, so None is the best choice for a template.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=31557" width="1" height="1"&gt;</content><author><name>DavidL</name><uri>http://k2underground.com/members/DavidL/default.aspx</uri></author></entry><entry><title>How to Version InfoPath Forms Used in K2 Processes</title><link rel="alternate" type="text/html" href="/blogs/blacktop/archive/2009/05/29/how-to-version-infopath-forms-used-in-k2-processes.aspx" /><id>/blogs/blacktop/archive/2009/05/29/how-to-version-infopath-forms-used-in-k2-processes.aspx</id><published>2009-05-29T21:55:00Z</published><updated>2009-05-29T21:55:00Z</updated><content type="html">&lt;P&gt;You have a K2 process that uses InfoPath integration.&amp;nbsp; It’s been in production for 6 months and working fine.&amp;nbsp; Along comes Mr. Customer and he’d like to add some new fields to the form and change the process.&amp;nbsp; Existing processes that have already started should continue using the original form and process but once deployed all new process instances should use the new form.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;How do we keep the InfoPath form version in sync with the K2 process?&amp;nbsp; Although this is a pretty common need, it’s hard to find the K2 documentation that explains how to do it.&amp;nbsp; Fortunately, it’s &lt;EM&gt;really&lt;/EM&gt; &lt;EM&gt;easy&lt;/EM&gt;. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Content Types&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;When you’re going through the InfoPath Process Integration wizard, on the deployment location page of click the &lt;STRONG&gt;Add as content type&lt;/STRONG&gt; radio button.&amp;nbsp; This is only available if you are deploying your forms to SharePoint.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.k2underground.com/files/folders/31242/download.aspx"&gt;&lt;/P&gt;
&lt;P&gt;When the process is deployed, a new library called &lt;STRONG&gt;K2 InfoPath Form Templates&lt;/STRONG&gt; will be created to contain the InfoPath form content types.&amp;nbsp; As each version of the process is deployed a version of the template will be added to this library.&amp;nbsp; The process version and form version will be automatically linked.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.k2underground.com/files/folders/31243/download.aspx"&gt;&lt;/P&gt;
&lt;P&gt;That's it!&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://k2underground.com/aggbug.aspx?PostID=31244" width="1" height="1"&gt;</content><author><name>DavidL</name><uri>http://k2underground.com/members/DavidL/default.aspx</uri></author></entry></feed>