kirk liemohn

Likes

Family & Tennis

Kirk Liemohn Principal Software Engineer

Kirk Liemohn is a Principal Software Engineer at ThreeWill. He has over 20 years of software development experience with most of that time spent in software consulting.

Learn More About Kirk

More About Kirk

Kirk Liemohn started out on UNIX, but transitioned to Microsoft technologies and has about 20 years on the Microsoft platform including .NET from its inception. He has done most of this as either a development lead or architect, with a large percentage of that time on SharePoint.

His focus over the last several years has included SharePoint migrations, Office 365 & Azure architecture and development, and integrating SharePoint with third party products. These solutions compliment Kirk’s passion around SharePoint enterprise search and customizing SharePoint to host divisional or enterprise-wide applications.

For a deep dive on SharePoint integration that covers the many areas Kirk is passionate about, check out the white paper Kirk co-authored: Benefits of SharePoint 2010 as a Product Platform.

Experience

Dev Lead – SharePoint Application Migration (SharePoint 2010 to SharePoint 2013) for a Large Telecommunications Company

  • Farm solution needed to be moved to a client-side solution based on IT policy.
  • Updated SharePoint 2010 REST-based client-side code in Angular with SharePoint 2013 REST-based client-side code in Angular.
  • Replaced a server-side timer job for creating PDFs with a Click Once windows application.
  • Used Gulp for build deployment and running PowerShell provisioning scripts.
  • Used PowerShell for repeatable site, list, and workflow provisioning.
  • Had a Continuous Integration process where code checkins (merge w/master) resulted in a fresh SharePoint site collection hosted in Azure with the provisioned application.
  • Migrated content with a custom migration scripts because 3rd party tools were unable to handle the migration of certain list columns.

Dev Lead – SharePoint Application Migration (SharePoint 2010 to SharePoint 2013) for a Large Telecommunications Company

  • Farm solution needed to be moved to a client-side solution based on IT policy.
  • Replaced server-side code with an AngularJS single page application (SPA) to allow CRUD operations on SharePoint lists as well as other custom content.
  • Used Gulp for build deployment and running PowerShell provisioning scripts.
  • Used PowerShell for repeatable site, list, and workflow provisioning.
  • Used 3rd party Dell migration tool owned by the client to copy over SharePoint list items.

Dev Lead – SharePoint Migration (Dedicated to Multitenant) for a Global Beverage Company

  • Analyzed options for moving from several thousand site collections from Office 365 Dedicated to Office 365 Multitenant.
  • Researched tool options for migration.
  • Validated key use cases with the migration tool and managed workarounds for uses cases that the tool could not handle.
  • Led development and migration team on POC, tooling, and pilots.
  • Automated Metalogix Content Matrix with PowerShell scripts:
    • Assign site collection to batches with a SharePoint list and the PowerShell script picks from the batch.
    • Script runs on one of 8 Azure migration nodes.
    • Script fixes issues the tool does not handle directly.
    • Script analyzes Metalogix logs and triages issues into a SharePoint list.
    • Script sends out email notifications based on configuration in a SharePoint list.
    • Script adds notifications to source and target site collections.
    • Script handles incremental migrations as needed.
    • Script sets source environment to read-only after cutover date.
  • Project included a migration dashboard, built using an Azure web site application, to show status of 8 migration nodes.

Developer – Law Firm Extranet in Azure

  • Set up SharePoint Services across the farm in Azure (2 WFEs, 2 app servers).
  • Set up Office Web Apps on servers within an Azure Availability Group.
  • Created web parts by extending the Content Query Web Part (CQWP). One of them provided hover and play capability for video content and required specific configuration to work with iOS Safari.

Developer – Inventory Management for Automotive Dealers

  • Solution provides tracking of cars at a dealership using RFID.
  • Technical solution involved ASP.NET MVC, Angular, and MongoDB.
  • Wrote several ASP.NET Html Helpers for Angular as well as Angular directives and filters.

Architect and Developer – SharePoint Online and Azure Onboarding Portal

  • Architect for a cloud based onboarding solution that requires about 15 hiring managers to review around 2400 applicants and then hire and terminate over 800 seasonal employees a year.
  • Design involved Azure for external (applicant / seasonal employee) access and SharePoint Online for internal (hiring manager / HR) access.
  • The SharePoint Provider Hosted App included:
    • Custom list and views that were synced between SharePoint and the Azure database.
    • A custom SharePoint state machine workflow for handling time-based events.
    • Custom SharePoint ribbon buttons for performing bulk actions on applicants and seasonal employees.
    • CORS REST calls to Azure.
  • The Azure application included:
    • Azure Web Sites and Azure Databases.
    • SendGrid Azure add-on for sending emails (including mass emails).
    • An App Installed remote event receiver for setting up SharePoint list security.
    • A custom database-driven state machine workflow.
    • Integration with a third party talent scoring agency.
    • Responsive (mobile first) MVC 5 with Razor forms and Bootstrap.
    • Entity Framework 6 code-first.
    • Use of various Javascript/CSS libraries/tools: jQuery, jQuery Validate, LESS, Modernizr, Moment.js, and others.

Architect – Office 365 Hybrid Guidance for a Large Media Entertainment Production Company

  • Set up a test Office 365 hybrid environment for SharePoint using a one-way outbound topology.
  • The test environment included O365, CloudShare (to host most of the on-prem components), and a local ADFS proxy (as this could not be hosted in CloudShare).
  • Performed POC tests around search in this environment.
  • Other POC tests were done on SkyDrive, unified profiles, and MySites.
  • Presented POC findings to technical representatives across four divisions of the enterprise in a two-day workshop.
  • Assisted with governance plan on hybrid environment.

Dev Lead – Global Compliance Reporting for a Global Tax Consulting Company

  • Co-lead the development of application on SharePoint 2010 for a tax-related document management and tracking system for global companies.
  • The application was an extranet involving several internal parties and client users with roles and capabilities across the user base.
  • The application utilized out-of-the-box SharePoint 2010 collaboration features as much as possible with customizations that compliment SharePoint for the application needs including:
    • A site definition that set up the site with multiple lists and libraries and custom permissions for the various roles.
    • Custom synchronization of a list and library to utilize datasheet view with record sets.
    • Custom ribbon actions for copying files, in-place records management, bulk upload, bulk property update, and tagging files.
    • Custom search configuration using custom managed properties (for custom refiners), custom scopes, and custom filters on the Search Core Results web part. The search functionality including search results page was provisioned during site creation.
  • Designed, implemented, and maintained the build and deployment scripts written in PowerShell that were used in dev, QA, staging, and production.

Architect and Developer – Form 990 Tax Application for a Global Tax Consulting Company

  • Lead architect and Designer of application on SharePoint 2010 involving ~110 InfoPath forms representing the logic behind specific Form 990 tax forms.
  • The application was an extranet involving several internal parties and client users with several roles and capabilities across the user base.
  • The application could import prior year from GoSystem and export to GoSystem as the system of record.
  • Assisted the dev lead in managing the development. We had 6 developers (4 US/Canada-based, 1 on-shore, 1 off-shore) as well as several off-shore QA resources.
  • Designed, implemented, and maintained the build and deployment scripts written in PowerShell that were used in dev, QA, staging, and production.
  • Designed and implemented the InfoPath hosting page which centralized much of the logic of all forms. This included operations such as data flow from form to form, provisioning of other forms, locking and timeout of forms, linking to other forms, managing master/child relationship between forms, and intercepting and modifying the out-of-the-box InfoPath error handling.
  • Designed and implemented the worksheet import functionality.

Principal Software Engineer – Upgrade of Enterprise Video Management Software

  • Upgraded a SharePoint connector to a newer version of a leading video management system.

Principal Software Engineer – Architect and Developer for Enterprise-Wide Employee Feedback Tracking System for a Large Telecommunications Company

  • High availability enterprise-wide suggestion tracking application for a large Fortune 100 company that supports 30,000+ users.
  • Application has mobile and non-mobile user interface for feedback browsing, searching, and entry.
  • Application includes 4 levels (roles) of managers for feedback resolution and workflow around that resolution.
  • The application runs on SharePoint 2010. Most of the user interface is pure JavaScript (jQuery) with Sandboxed event handlers and some applications for special functions such as custom attachment uploading and data exports.
  • Led the development of JavaScript which made heavy use of the SharePoint Client-side Object Model (CSOM/JSOM) as well as the SharePoint search service using AJAX; most pages have no server side code.
  • Led the effort on load testing that was done using WAPT and Amazon EC2. The WAPT scripts were updated to not only send JSOM, but to parse the results as well.
  • Updates to production were handled with feature upgrades.

Principal Software Engineer – Marketing Funds Application for a Large Telecommunications Company

  • Upgraded InfoPath Forms Services application from SharePoint 2007 to SharePoint 2010 in a Sandboxed solution.
  • InfoPath form has nine stages with complicated mutli-valued approval by the client and vendors. Due to sandboxed limitations and need for emailing forms, this had to be done without code-behind in the InfoPath form (requiring many “tricks of the trade”).
  • Solution involved a site and form that required external access by vendors with special attention to securing data to prevent one vendor from seeing another vendor’s data.

Principal Software Engineer – Enterprise Reporting portal for Global Audit Practice

  • Provided framework for processing SSRS reports using Data-Driven Subscriptions.
  • Allowed for both schedule-based and trigger based sending of reports as attachments to emails sent to a set of recipients.

Consultant – Packaged Service Implementation

  • Helped define a package service offering delivering the SharePoint integration with enterprise social features to customers.
  • Included working with customers for preparedness, training, installation, and configuration.

Lead – SharePoint Integration for Enterprise Video Management Software

  • Led the SharePoint development effort in creating a connector between SharePoint and a leading video management system.
  • Provided initial guidance for product management, including a discussion of capabilities and roadmap for the initial release.
  • Key components included:
    • SSO using custom ticket forwarding or alternatively a claims/SAML option
    • Cross-site scripting with IFRAMEs and a messaging layer
    • Crawling/indexing database content using SharePoint BCS (full and incremental)
    • Custom search results user interface using custom XSLT and extending the Core Search Results web part
    • Custom Query time search security trimmer
    • Custom search refiners
    • JQuery
    • Web parts

Lead – SharePoint Integration for Enterprise Social Business Software

  • Led the SharePoint development effort in creating a connector between SharePoint and a leading Java-based social software company.
  • Provided initial guidance for product management, including a discussion of capabilities and a roadmap for the initial release.
  • Worked with product company architect to provide high-level architectural boundaries. Then led the SharePoint team on more detailed design and architecture. Key components were:
    • RESTful service layer using a WCF-like approach for SharePoint 2007
    • Integrated Search
    • Content Embedding
    • SSO
    • Security trimming through delegation or impersonation
    • AJAX web parts
    • Multiple layers of control (farm admin, site admin, user)
    • SharePoint workflow integration
    • Remote entitlements (honoring SharePoint security in an external product)
  • Designed and implemented much of the above within SharePoint. Key technologies included HttpHandlers, HttpModules, AJAX, and JQuery.
  • Assisted with port to SharePoint 2010.
  • Assisted with customer implementations.

Architect – SharePoint Integration for Leading Product Company

  • Provided architectural guidance for integration between SharePoint and a image capturing and workflow solution.
  • Solution involved document libraries for work queues, document workflow, an a MVC pattern and a simple processing engine to allow for retrieving documents for review from multiple work queues.

Principal Software Engineer – Knowledge Base for a Engineering Firm

  • Provided high level design and guidance for knowledge base on SharePoint involving personalized content, customized data entry, and roll-up of content.

Principal Software Engineer – Help Desk Ticketing OBA for a Business Process Integration Company

  • Created a prototype help desk ticketing system using InfoPath Forms Services utilizing assets for creating a Service Request.

Principal Software Engineer – Extranet for a Nonprofit Organization

  • Provided architectural guidance on extranets.
  • Set up Extranet Collaboration Manager for the organization and created site templates for new extranet sites.

Principal Software Engineer – Budget Outlook for a Large Insurance Company

  • Provided guidance on options for reporting on SharePoint list data.
  • Updated a web part to create a SharePoint job for creating a snapshot of list items into a backup/snapshot SharePoint list.

Principal Software Engineer – Marketing Funds OBA for a Large Telecommunications Company

  • Integrated an InfoPath template to work with both SharePoint Form Services and the InfoPath 2007 client.
  • InfoPath Forms Services is used by internal users, but the form is emailed to external clients that use the InfoPath 2007 client to interact with the form.
  • Wrote SharePoint forms library event handlers to allow for keeping track of form changes in a single field that can be displayed within the form.

Lead – Build and Integrated Test Automation for Integration with an Enterprise Wiki

  • Provided automated build and test capability with SharePoint and Confluence integration.
  • Used MSBuild, NUnit, and Selenium for automation.
  • Provided search diagnostics guidance as well as federated search guidance.

Principal Software Engineer – Search Architecture for a Large Insurance Company

  • Provided architectural guidance and planning for using SharePoint Search for a large insurance company.
  • Guidance included options for custom protocol handler and custom archiving system.

Lead – SharePoint/Confluence Integration for University System

  • Set up pilot integration of SharePoint and Confluence.
  • Integrated SharePoint and Confluence with SiteMinder.

SharePoint Architect – Architectural Guidance for a Large Telecommunications Company

  • Provided architectural guidance and direction for the client’s enterprise use of SharePoint.
  • Provided guidance on use of third party social networking software including Confluence, Newsgator, and SharePoint, and others. Included a roadmap for when technology may be implemented.
  • Provided guidance on search, governance, records management, and extranets within SharePoint.

Principal Software Engineer – OBA for a Large Telecommunications Company

  • Part of a 3-person development team responsible for design and deployment of a MOSS 2007 Office Business Application (OBA) to allow an Administrator to create new service-based sites based on a set of standard content.
  • Responsible for aiding the client in InfoPath form design.
  • Created deployable web services using Code Access Security (CAS) within SharePoint. These web services allowed for InfoPath form designers to easily gain Active Directory information as well as SharePoint group membership information for the current user.

Principal Software Engineer – Microsoft Project AddIn for Project Management Consulting Company

  • Assisted in the release of an application level AddIn for project management system to enforce a proprietary project management methodology in Microsoft Project 2007.
  • Added email framework capability (MAPI, SMTP, WebDav).
  • Added Import functionality that takes in project task changes from external users and incorporates them into the Microsoft Project plan.
  • Created an Import Metrics report that compares exports and imports and displays them in an Excel spreadsheet.

Lead – SharePoint Integration with Image Processing Software

  • Created a prototype of SharePoint web part integration with Execute360, a capture, imaging, content, and work management product from Global 360.

Lead – SharePoint Integration with an Enterprise Wiki

Architect / Lead – SharePoint Architectural Guidance for a Large Healthcare Company

  • Focus was on records management, SharePoint document library configuration, and best practices for developers.

Architect / Lead – Design of Intranet Portal for an Energy Supplier

  • Design of intranet portal for a rapidly growing company.
  • Focus was on role-based, dashboard access of pertinent information.
  • Researched integration with Microsoft Business Portal.

Principal / Lead -Business Analysis Portal for Lottery Jurisdictions

  • Led medium sized team consisting of client developers and ThreeWill associates in creating a business analysis portal based on Windows SharePoint Services v3. Was personally responsible for many web part development tasks.
  • Solution involved heavy use of Web Parts and skinning of SharePoint. Web parts incorporated AJAX, Dundas Charts, Dundas Maps, Dundas Gauges, Dundas OLAP Services, and Microsoft Virtual Earth.
  • Mentored client developers on how to develop against SharePoint; particularly in creating web parts.
  • Data technologies included SQL Server Analysis Services (SSAS) and SQL Server Integration Services (SSIS).

Architect / Lead – SharePoint Search Integration for Speech Intelligence Company

  • Integrated Microsoft Office SharePoint Server 2007’s search with a 3rd party search engine.
  • Solution involved using custom web parts and SharePoint events.

Principal / Lead – SharePoint Operations Portal for Power Generation Service Company

  • Lead the design and implementation of an operations portal for all key operational data.
  • Introduced SharePoint and structured management of data to the client using the Windows SharePoint Services v3 and heavy use of SharePoint lists.
  • Solution involved migration of Excel and Access data to SharePoint lists, custom ASP.NET screens within SharePoint, SharePoint events, row-level security code, Reporting Services integration with SharePoint, Workflow, and Content Types.

Principal Consultant – Framework Development for Global Audit Practice

  • Designed and developed domain validation functionality within a framework used to separate domain business logic from individual views and controllers.
  • Designed and developed multi-select functionality used for shared functions within the framework.

Principal Consultant – Technical Design for Global Audit Practice

  • On design team that developed the line of business technical design methodology for the global audit practice.
  • Developed design document template.
  • Involved in determining what requirements needed formal technical design.
  • Created technical designs including the Financial Statement Close Process and Archive, Roll-Forward, Restore, Recover.
  • Led business towards business design efforts that were technically feasible (esp., on Multi-Entity Same Team).
  • Researched performance limitations with new requirements and reporting those findings to the practice partner.
  • Researched and reported on changes needed to run two versions of a custom Groove tool at the same time (“side-by-side”).
  • Tests were performed on the Groove client and Groove Data Bridge.
  • Researched and reported on performance implications of changing certain types of data in the application to use Groove strings, streams, or documents.

Principal Consultant – Collaboration Interface for a Global Consulting Firm

  • Worked as the Groove liaison with a global consulting firm to help them customize Groove to their needs.
  • Lead a team to create a custom Groove tool for document management.
  • Lead a team to create a Groove Office add-in to allow easier integration with Groove using Groove Web Services.
  • Lead a team to design a solution to synchronize Groove with Documentum using Groove Web Services.

Team Lead – Security Layer for a Smart Client Banking Application for Financial Services Company

  • Redesigned and lead a team to develop the security layer within a smart client banking application.
  • The application used web services to communicate between the remote client and the central banking system.
  • Security involved integration with LDAP and a single sign-on system.

Development Lead – Framework Data Layer for a Global Audit Practice

  • Development Lead for a development team creating a Groove Abstraction Layer.
  • The abstraction layer extended base ADO interfaces and classes to allow data access layer to Groove data using interfaces that are well known to developers.
  • The project involved both Groove Web Services and the Groove Workspace API (GWAPI).
  • Unit tests were performed against GWAPI using .NET Remoting.

Development Lead – Clinical Application for a Long Term Health Care Provider

  • Lead 15 developers including both client developers and consultants located in three locations.
  • Distributed .NET WinForms application requiring high availability across 250 facilities with centralized services.
  • Managed and helped create 200 use cases with three business analysts.
  • Coordinated with off-shore testing.

Development Lead – CRM Application for a Transaction Processing and Settlement Company

  • Development Lead for nearly two years on a $21 million program involving 60 developers.
  • Consisted of 20 client developers, 10 third party vendor developers, and 30 consultant developers divided across three teams, three project managers, and three locations.
  • Global mission critical thin client .NET call center application now utilized by several global clients with up to 3000 customer service representatives per client.
  • Required constant communication across developers, project managers, R&D, business analysts, QA, and logistics.
  • Primary role was to ensure the developers were efficient, delivering high quality code, that architecture changes were appropriate, and that technical risks were communicated and resolved.
  • Led effort for design tool user guide, training manuals, and training class. Coordinated instruction across developer facilities.

Development Lead – Internet Portal for a Transaction Processing and Settlement Company

  • Development lead, architect, and project manager for an Internet portal site.
  • Project included Active Directory design.
  • Project involved coordination with graphic artists.

Test Lead – Framework Services for a Software Consulting Company

  • In charge of stress testing for a set of enterprise framework services.
  • Stress tests used Microsoft’s Application Center Test product.

Team Lead – User Services for a S&P 400 Business Services Company

  • Team lead for a user services offering within a large enterprise architecture project.
  • Involved heavy use of Active Directory and LDAP.

Architect / Development Lead for HACCP – Product Development for Food Safety Software Tool

  • Lead architect, developer, and manager for flagship Windows-NT product using the FDA defined HACCP methodology.
  • The product automates data entry in food processing plants to keep hazards out of food.
  • Product has 4 tiers: a presentation layer, client COM objects, stateless MTS data objects, and an SQL database.
  • Major technologies involved: COM, Visual Basic, Active Server Pages, SQL Server, and Teklogix wireless data entry.

Team Lead for SPC – Product Development for Food Safety Software Tool

  • Designed and managed the development of a Windows-NT statistical process control product.
  • The product automates data entry in food processing plants to keep the process under control (i.e., weight of package near label stated amount).
  • The product uses 4 tiers as the HACCP product described above.

Software Engineer – Product Development for Food Safety Software Tool

  • Designed and solely developed configuration product for company’s flagship UNIX product. Product written using Progress 4GL against a Progress database.
  • Developed and installed customized manufacturing execution system (MES)/supervisory control and data acquisition (SCADA) systems at client sites.
  • Site manager for 43 customer systems.
  • DBA for Oracle and Progress databases.
  • Developed programmable logic controller (PLC) drivers for communication with manufacturing equipment using C++.
  • Cooperative student recruiter and manager.

Co-op Student – Technical Testing Project for Large Government Contractor

  • Wrote robot control testing programs in C on OS/2.
  • Project involved Q security clearance from the US Department of Defense.

Co-op Student – Technical Testing Project for Industrial Machinery & Equipment Manufacturing Company

  • Performed eddy current sensitivity testing using C and Lotus macros.
  • Maximized the manufacturing throughput by ordering inventory using Just in Time concepts within a C program.
  • Designed and wrote reports against an Oracle database using SQL for an early warning nuclear detection system.

Presentations

O365 Hybrid Workshop

  • Worked with a team from ThreWill to present a 2-day workshop around an O365 hybrid SharePoint environment with discussion around single O365 tenant shared across all divisions or a tenant per division. Kirk’s focus was on describing what a hybrid environment is, describing the results of the search POC, and governance.

Governance Workshop

  • Worked with Microsoft to prepare and present a 2-day governance workshop. This involved baseline review of WSS/MOSS features with demos, governance overview, and a discussion on infrastructure, architecture and security.

The Next Level – SharePoint 2007 Seminar

  • Presented 4 of 8 major topics in a Microsoft/ThreeWill joint seminar sharing real life project experience and examples that highlighted key features of Windows SharePoint Services v3 (WSS v3) and Microsoft Office SharePoint Server 2007 (MOSS 2007) that allow companies to use a single platform for their organization. Topics included SharePoint Security, Communities and Collaboration, Enterprise Content Management, and Enterprise Search.

MOSS Enterprise Search

  • Presented on architecture, administration, and development against the SharePoint enterprise search features.

Publications

Education

B. S. Electrical Engineering, Georgia Institute of Technology

  • Cooperative Plan
  • Graduated with Highest Honor
  • Computer Engineering certificate
  • Industrial/Organizational Psychology certificate

Certifications

  • Microsoft Certified Technology Specialist: WSS 3.0 Application Development
  • Microsoft Certified Application Developer (MCAD): Microsoft.NET
  • Microsoft Certified Professional

Technical

Tools:

Visual Studio.NET, SharePoint Designer, STSDev, SharePoint Solution Installer, SubVersion, Reflector/ILSpy, NUnit, NDoc/SandCastle, Selenium, Fiddler

Technologies:

  • SharePoint: O365, 0365 hybrid, app model (Provider Hosted / SharePoint Hosted), enterprise search, web parts, application pages, CSOM/JSOM, InfoPath
  • Client Side: jQuery, Bootstrap, jQuery Validate, jQuery UI, Angular
  • Server Side: .NET, ASP.NET, ASP.NET MVC, Entity Framework, Web Services / WebAPI, Http Modules, Http Handlers, XML, Active Directory

Languages:

JavaScript, C#, PowerShell, XSLT, SQL

Databases:

SQL Server, SQL Server Analysis Services, MongoDB, Oracle 7.3, Progress 4GL

Platforms:

Windows Server, HP-UX

Concepts:

Full Software Development Lifecycle, Agile/Scrum, Object Oriented Programming, Design Patterns

Open Source:

Developer on the CodePlex SharePoint Solution Installer