Source Control – it’s Essential!

Continuous Integration, Source Control, Visual Studio No Comments »

Visual Studio 2010

With the announcement regarding the release of Microsoft Visual Studio 2010 on April 12th, I started thinking about some conversations that I’ve had with clients over the last couple of months. Many have expressed interest in getting to use the new development environment and were eagerly waiting for its release. In two cases these clients didn’t have source control systems. I would never have believed it, however I’ve seen it (or the lack of it). To make it worse, one of these is an enterprise level organization with scores of development teams, developing everything from their corporate web site to large scale EAI initiatives. Their reason for not using source control – Team Foundation Server is too complex to install and manage. And they do daily backups. Well, okay then!

Back to Visual Studio. Visual Studio is much more than just a development environment these days, in conjunction with Team Foundation Server, it’s an application lifecycle management system. It’s features include version control, build automation and work item tracking to name but a few. As far as I’m concerned, having these capabilities is essential to organisations that do a lot of in-house development. One option that I often recommend is to use a hosted solution. Let the experts take care of it! Over the past year I’ve made use Praktik Hosting for work with some of my clients, especially the small to midsize and remote clients. They have a great monthly subscription plan and have never been down. So, get Visual Studio 2010, and leave Team Foundation Server to the experts.

, , ,

View blog reactions

Bookmark and Share Bookmark and Share

BizTalk ESB Toolkit Architecture Poster

BizTalk No Comments »

BizTalk ESB Architecture Poster

The BizTalk ESB Architecture Poster is now available from the Microsoft Download Center.

Link: BizTalk ESB Toolkit Architecture Poster





, , , ,

View blog reactions

Bookmark and Share Bookmark and Share

K2 4.5 for K2 blackpearl, K2 blackpoint and K2 connect Released!

Business Process, K2, Workflow No Comments »


On Monday K2 announced the release of K2 4.5. K2 4.5 includes several new features and enhancements to the family of K2 products, K2 blackpearl, K2 blackpoint and K2 connect. K2 4.5 is  geared to increase versatility and scalability, as well as simplifying maintenance.

K2 4.5 contains several new features and enhancements including:

  • An updated, more powerful Web-based designer, K2 Designer for SharePoint and K2 Studio
  • Inline functions, allowing process designers to include functions and calculations in processes without having to write code
  • Enhanced SmartObject functionality
  • Memory and performance improvements, across design time and runtime
  • A simplified installation experience

My top 3 new features are:

  1. K2 Studio – the new standalone designer that can used to build quick process driven applications (regular and SharePoint based applications).
    K2 Studio
  2. The K2 Designer for SharePoint – providing a simplified design environment to build workflow processes in SharePoint.
    K2 Designer for SharePoint
  3. Inline Functions – allowing for complex logic and calculations within the design canvas – no more calling code functions.
     Inline Functions

, , , , , ,

View blog reactions

Bookmark and Share Bookmark and Share

ESB Toolkit 2.1

BizTalk, Visual Studio No Comments »

ESBWith the announcement that BizTalk Server 2009 R2 is being renamed to BizTalk Server 2010, there is an impact on the ESB Toolkit 2.0 component. The ESB Toolkit 2.0 has a dependency on Visual Studio 2008. However, BizTalk Server 2010 will only support Visual Studio 2010, meaning that the ESB Toolkit 2.0 component won’t function. As a result the ESB Toolkit will be updated to version 2.1 and will be released in conjunction with BizTalk Server 2010.



, , , ,

View blog reactions

Bookmark and Share Bookmark and Share

BizTalk Server 2009 R2 now BizTalk Server 2010

BizTalk No Comments »

BizTalk Logo

Microsoft announced that the upcoming release of BizTalk Server 2009 R2 will be renamed to BizTalk Server 2010. Why was this done – well, Microsoft says that initially the release was meant to provide support for Windows Server 2008 R2, SQL Server 2008 R2 and Visual Studio 2010. Since then they have included a key features, thereby expanding on the scope of the release. These features include:

  • Enhanced trading partner management – enabling customers to manage complex B2B relationships with ease.
  • Enhanced BizTalk Mapper – critical to increasing productivity in both EAI and B2B solutions.
  • Enable secure data transfer – across business partners with FTPS adapter
  • Updated adapters for SAP 7, Oracle eBusiness Suite 12.1, SharePoint 2010 and SQL Server 2008 R2.
  • Improved and simplified management – including an updated System Center management pack.
  • Simplified management through single dashboard – further enabling backup and restore BizTalk configuration.
  • Enhanced performance tuning capabilities – at Host and Host Instance level.
  • Out of box event filtering and delivery of RFID events.

One benefit customers will see is the support window being reset to 10 years (5 years mainstream and 5 years extended support).

, , ,

View blog reactions

Bookmark and Share Bookmark and Share

BizTalk Server 2006 R2 Service Pack 1 Available

BizTalk No Comments »

BizTalk Logo

Microsoft BizTalk Server 2006 R2 Service Pack 1 is available for download. Included in this service pack are the following key (in my opinion) fixes:

  • The SQL Adapter supports calling from a dynamic sent port.
  • Integrated tracing in debugging EDI specific issues.
  • Support for using multiple certificates to sign outgoing AS2 messages.

To download the service pack and see a full list of implemented fixes and enhancements follow this link: BizTalk Server 2006 R2 Service Pack 1

, ,

View blog reactions

Bookmark and Share Bookmark and Share

Counting Nodes in BizTalk EDI Map

BizTalk No Comments »


While working on an BizTalk EDI project, I needed to count dependents on 834 documents. What made this difficult was that the document would contain users and their dependents intermittently. I could have a user with no dependents followed by one with three. I wanted to be able to count the dependents so that I can make some logical decisions during the orchestration. I ended up using an Inline XSLT Call Template to implement the transformation.

The map called a Scripting functoid as shown below:


The transformation script I used looks as follows:

<xsl:template name="Dependents">
    <xsl:param name="parIsEmp" />
    <xsl:param name="parEmpID" />
    <xsl:element name="Dependents">
    <xsl:if test="$parIsEmp = ‘N’">
    <xsl:if test="$parIsEmp = ‘Y’">
        <xsl:call-template name="CountDependents">
        <xsl:with-param name="par_EmpID" select="$parEmpID" />

<xsl:template name="CountDependents">
    <xsl:param name="par_EmpID" />
    <xsl:value-of select="count(//s0:INSLoop1/s0:INS/INS01[$par_EmpID = ../../s0:REF_3/REF02/text() and 'Y' != ../../s0:INS/INS01/text()])" />

, , ,

View blog reactions

Bookmark and Share Bookmark and Share

Multiple K2 SharePoint Event Processes

K2 No Comments »


Recently I ran into an interesting problem while developing K2 SharePoint Event Processes. My project was made up of multiple processes that were kicked-off when a new item was added to a SharePoint list. Initially the first process was deployed without a problem, however as I tried to deploy additional processes to the server I received the following error:

Task Error: System.Web.Services.Protocols.SoapException: Server was unable to process request. —> Unexpected end of file has occurred. The following elements are not closed.

Deployment Error Message

When looking in the event log I found the following entry:

Event Log Error

After quite a bit of research and reaching out the K2 Insiders community, I managed to resolve it with support from the K2 support team.

My project structure was broken down by project name, with folders separating processes by function and then the processes below that. When deploying a K2 SharePoint Events process that is triggered by the ‘Item Added’ event, two rows are created in the EventReceivers table of the SharePoint web application content database (one with a name of MyProcessName_ItemAdding and one with the name of MyProcessName_ItemAdded). These two rows are created for each SharePoint list that has one or more K2 Events process associated with it.

The ‘Data’ column in this table contains an XML string that includes each K2 SharePoint Events process name.  For example, the ‘Data’ column for a SharePoint list that has two K2 Events Processes associated with it might look something like this: <Data><Process>MyProjectName\MyFolderName\MyProcessName</Process><Process>MyProjectName\MyFolderName2\MyProcessName2</Process></Data>

It turns out that the ‘Data’ column in the EventReceivers table has a data type of nvarchar(256).  When deploying multiple Events processes associated with the same SharePoint list, if the total length of this xml string eventually exceeds 256 characters, the deployment error will occur.

Navigating to the ‘K2 Manage Events’ page in SharePoint, or trying to redeploy will cause the following error as the data in the ‘Data’ column of the EventReceivers table has been truncated:

Unexpected end of file has occurred.  The following elements are not closed: Process, Data. Line 1, position 257.

SharePoint Manage K2 Events Error

To access the ‘K2 Manage Events’ page again, I needed to delete the two rows from the EventReceivers table.

One possible solution was to change the project structure and use shorter names, ensuring that I didn’t exceed 256 characters (including the K2 XML tags the processes are wrapped in). However, this would only be a workaround though as anyone adding multiple processes to be triggered off a list may run into the problem. The field length in the table cannot be changed as it is a SharePoint database table and the effects of altering it is unknown (never mind the warranty/support issues that would raise).

Another solution is to limit the number of processes that are attached to the list. Unfortunately, I was unable to do that as it was a dumping area for documents that are scanned.

The solution I ended up using was to create a Dispatcher process to handle all interactions with the list and to call the relevant processes as required. It is still not ideal though, as every time a new process has to be fired off when there is an interaction with the list, the Dispatcher process needs to be updated.

K2 has opened a ticket regarding this issue and hopefully a more elegant solution is found. One thing to note is that this only affects K2 SharePoint Event Processes and NOT SharePoint Workflow Integration Processes.

, , ,

View blog reactions

Bookmark and Share Bookmark and Share

K2 Log Viewer for K2 blackpearl

K2 No Comments »


Having previously created the K2 Log Reader utility to read the K2 Server logs files for 2003, I thought it was about time that I did the same for K2 blackpearl. After all, K2 blackpearl has been around for years and I have left it late. Before updating the Log Reader, I thought it may be prudent to search the K2 Underground for something similar. To my pleasant surprise matthewv had created the K2 Log Viewer and uploaded it to the Underground for general use. Great job matthewv! 

Link: K2 Log Viewer

, , ,

View blog reactions

Bookmark and Share Bookmark and Share

K2 Insiders Conference

Conferences, K2 No Comments »

K2 Insiders Conference 2009

Not wanting to spoil any K2 announcements and presentations at the Microsoft SharePoint in Las Vegas, I decided to wait until now to start posting on some of the events and information at the K2 Insider Conference held last week.

Keynote Presentation

The conference started of with the Keynote Presentation by SourceCode CEO, Adriaan Van Wyk. Adriaan spoke about SourceCode’s need to ensure that software quality and performance were the number one priority for the K2 line of products. He went into the roadmap going forward and mentioned that even in the current economic climate SourceCode was performing well – profitable and cash flow positive.

He reiterated that K2 blackpearl was all about solving business problems, and was it was the natural progression from 2003  solving some of the latter’s challenges, a lack of proper event monitoring, policies and reporting functionality. In addition, it added the SmartObjects layer which provides a  single source of data for workflows.

Going forward, the next major release for K2 blackpearl is currently called 090x. It includes some new features and enhancements to the current version, including:

  1. K2 blackpearl and K2 blackpoint will originate from the same code base. As a result K2 blackpearl will include all of the features that currently exist in the K2 blackpoint. K2 blackpoint will be a true subset of K2 blackpearl.
  2. K2 connect will be updated for 90x compatibility (clustering made easier).
  3. Enhanced installer platform allowing for:
    • Simple / full installation.
    • Custom installation.
    • A configuration manager and health checking feature to make for a simple installation process.
  4. Platform enhancements including:
    • Workflow Server enhancements to improve scalability and resource management.
    • Smart Objects enhancements to improve performance and scalability.
    • New APIs and enhancements to existing ones.
  5. An improved browser experience, including the following new features:
    • A new K2 Designer for Microsoft SharePoint.
    • Inline Functions, the ability to include more functions in workflows without needing to resort to code.
    • Process portals for Microsoft SharePoint.
    • Enhanced reporting.
  6. An improved development experience including:
    • K2 Studio for K2 blackpearl development. The K2 Studio is an Office-like development tool geared at power-users.
    • Visual Studio 2008 and Visual Studio 2005 support.
    • Inline Functions.
    • SmartObject Filters.

While no official release date for the 090x version was announced, it can be assured that it will be after a stringent QA cycle has been completed, ensuring the highest quality with a much user experience being the top priority.

K2 Release Management

This provided a nice segue into the Release Management presentation by Olaf Wagner, Senior VP for Product Management. Olaf spoke about the four main areas of SourceCode’s release management cycle:

  1. K2 Release Strategy:
    • Major releases every 3/4 years. The version being slated for 2011.
    • Minor releases twice per year. The next release being 090x. Minor releases will Includes new features.
    • Updates (hotfixes) to be released every 2nd Tuesday. They are cumulative but customers can access older updates.
  2. Support strategy:
    • Major release support – includes the current and previous version (e.g. 2003)
    • Minor release support – includes the current and previous minor version of current major version, i.e. currently K2 blackpearl.
    • Updates release support – current updates are supported
  3. Coexistence:
    • It is possible to export from older client to an updated server unless specifically stated in release notes.
  4. Product Shipping Vehicle:
    • It will be simpler with the single codebase after the release of 090x.
    • K2 blackpoint will be a true subset of K2 blackpearl.
    • All products will ship on the same day, which means that new features will not ship in one product ahead of another.
    • The above mentioned point will allow for enhanced quality assurance from SourceCode for the entire product line.

What’s new in K2 blackpearl 090x

The next presentation by Holly Anderson and Renier Britz from SourceCode delved into the new features and enhancements around the upcoming 090x release. These include so many new features and enhancements, I’ve decided to list them in point form:

  1. Installation
    • The Installation and Configuration wizard are merged into a single wizard for a simpler installation process.
    • New install options allowing for simple or custom installation.
    • A new Configuration Analysis Tool to check the K2 environment for potential issues.
    • The ability to install to a non-Active Directory environment. It must be noted that there is no support Forms based authentication in SharePoint at this time.
    • The ability to perform unattended installs.
    • The option to activate K2 features on default SharePoint site collections.
    • Auto-chaining with the latest K2 update.
  2. Administration
    • K2 has been updated for SharePoint administration tools.
    • All K2 features are deployed as solutions to the SharePoint environment.
    • The ability to manage the K2 server from SharePoint.
    • Enhanced SharePoint SmartObject administration.
    • The Process Portal site will be available on any SharePoint site.
  3. Infrastructure
    • Scalability enhancements.
    • SmartObject performance enhancements.
    • New Dynamic SQL ServiceObject supporting stored procedures (with Out parameter), views and tables.
    • Windows 2008 R2 and SQL Server 2008 support.
    • SSL support for SharePoint.
    • Internationalization support.
  4. End User Experience
    • Process Portals with process and user reports.
    • Silverlight based View Flow.
  5. Design and Development Experience
    • K2 Designer for Visual Studio
      • Visual Studio 2008 support
      • Enhancements to ADO.Net data provider including: Paging, ANSI SQL Support and Query performance enhancements.
      • ServiceObject APIs.
      • Instance Management APIs.
      • Inline Functions including Math, String formatting, Expressions, Integration with SmartObjects. These are also extendable.
    • K2 Studio
      • Targets non-developers and SharePoint power users. It’s a full breadth designer, minus the code.
      • K2 studio is an office-like think client designer.
      • No Visual Studio dependencies.
      • No additional licensing requirements.
      • Assemble item and non-item based workflow applications and solutions.
      • No code.
      • Line-Of-Business (LOB) integration.
      • A Reference Wizard which can call out to an external assembly/web service.
      • Use SharePoint records management and publishing.
    • K2 Designer for SharePoint
      • Silverlight based workflow designer aimed at less technical users and Microsoft Office power users.
      • It requires no client site installation and includes a rich design experience.
      • The layout is workflow controlled and is focused on item-based workflows
      • The ability to quickly create SharePoint based workflow applications and solutions with no need to burden IT resources.
      • No coding required.
  6. General
    • InfoPath forms supports.
    • Inline Functions.
    • Custom task notifications.
    • Task groups allowing multiple destination sets.
    • Export process to K2 studio (downstream movement only).
    • Process data fields.
    • Use SmartObject in process design.
    • Ability to connect sibling nodes.
    • Save workflows and workflow steps into favourites.
    • New wizards, including:
      • Set folio and process data field.
      • Switch InfoPath view.
    • The ability to save email templates.
    • The ability to split workflow from the Start activity.
    • Process Portals – administration view of process and instances.

Custom Inline Functions

Koos Du Preez, SourceCode CTO, spent some time going over the Inline Functions to be introduced in the 090x version, and how to build custom ones.

Building custom Inline Functions are quite simple. The steps are:

  1. Create .Net 3.5 project Visual Studio 2008.
  2. Add references to:
    • SourceCode.Framework
    • SourceCode.Workflow.Functions
    • SourceCode.Workflow.Functions.Design
    • System.Drawing
  3. Add Using statements for the referenced assemblies.
  4. Declare the class with a Category (single category per class) – you can reuse K2 categories or create your own.
  5. Declare the “Name”, “Description” and “Icon” methods for the inline function.
  6. Declare method parameters as function parameters (inside the method signature).
  7. Provide the function implementation (use static functions).

To install the function the Design Time steps are:

  1. Quit the designer.
  2. Copy the assembly to K2 Bin folder
  3. Restart designer.

The Runtime steps are:

  1. Stop the K2 Host Server.
  2. Copy the assembly to K2 bin folder.
  3. Start the K2 Host Server.

It is important to note that you will need to manually deploy on alls clients and servers for all environments and reference the assembly deployed manually (including in the GAC).

Debugging the functions is simple to. Simply start the K2 Host server, attach to  the K2HostServer.exe process and debug.

090x Performance & Stability Enhancements

Koos also spent some explaining some the performance and stability enhancements that will come with the 090x version. These include:

  1. Design Experience
    • There was a big effort to analyze process memory allocation and usage patterns using tools like windbg with SOS, CLR profiler, perfmon and of course code reviews.
      • IDisposable pattern extensively
      • Freed memory early disposing large resources like images, icons, etc.
      • Replaced all string manipulations with StringBuilder
      • Remove unnecessary cloning and creation of objects
      • Wizard framework rewritten using XAML and control templates. No control via code.
  2. Runtime
    • K2 Workflow Server
      • There was a big effort to analyze process memory allocation and usage patterns using tools like windbg with SOS, CLR profiler, perfmon, code review
        • Ensure unused objects disposed early
        • Process runtime state management improvements (kept current version only)
        • Bypassed socket transmissions for local IPC’s
        • IPC authentication cashing implemented
      • Used SQL Profiler to isolate longest and most expensive queries
        • Common Table Expressions rewrite of Worklist (not using temp tables anymore)
        • Actions per Item refactored to use Common Table Expressions for action union
        • Additional indexes on Transaction and Log databases
        • Added constraints to force integrity
      • Validating investment
        • The Microsoft Technology Centre experience, where SourceCode did some benchmarking using 0807 release.
  3. SmartObjects & ADO.NET
    • High Level Enhancements
      • There was a great deal of SmartObject stack analysis, to minimise client/server calls.
      • “Join Discovery” identified as a bottleneck & implemented relationship caching.
      • Bypassed discovery and force/allow the use of SQL joins in reports.
      • Schema retrieval indentified as bottleneck & implemented object definition caching.
      • ADO data sets returns less than 15-20k results in batch (rather than row by row).
      • ADO Direct Execution (Including Bulk Insert) – option for Service Object to directly execute SQL code. Supported by
        • Dynamic SQL Service
        • SmartBox
        • K2 Reports
      • Compressed Double Buffering (more involved than a one-liner).
      • Double Buffered Data Readers.
      • Server Side Paging (SmartObject API & ADO).
      • Greatly enhanced SQL Syntax support for ADO.
  4. Reporting
    • Pushed 50 GB database and analysed built-in reports.
    • SQL Profiler to most expensive queries.
      • Pushed for ADO based paging (SSRS does local paging)
      • Report Query optimizations
      • Altered log database indexes

With that we ended the first day of the conference. It made for a long but rewarding day of sessions. Next, to dinner and a chance to meet some of the new Insiders.

, , , , ,

View blog reactions

Bookmark and Share Bookmark and Share
WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Log in