How custom software ages | Application Development Video Series, Episode 1

Not unlike hardware, custom-built software applications can age over time. There are a variety of ways that a business can outgrow a software application, and those aging applications can become more burdensome to maintain than to update or rewrite.

We don’t typically think of software as something that can age. The code is written and run on a computer, so it doesn’t age like hardware does or like people do. It becomes obsolete or becomes less functional, unable to keep up with the demands of the business and the business users. Software is usually written based on a snapshot of a business need for a certain period or range of time. Unfortunately, software doesn’t change dynamically the way the business does. Businesses can change, market demands can change, the number of users can change, and the software can have trouble keeping up with that.

Another aspect of aging is that the software may have been built in a technology that is no longer supported or is slowly on its way out the door; it’s being deprecated or replaced by more modern design patterns and technologies. The software was written years ago, and the technical resources are no longer available or difficult to find. When you can find them, they are expensive, which makes maintaining the software more and more costly.

Technologies, design patterns, and understanding of software as a functional piece of a business were limited 10-15 year ago, and that technology continues to evolve. When we think about legacy applications, they were monolithic in nature and written top-to-bottom; every line of code was executed in one lump sum. To change one little thing in those applications, you had to change everything.  Thankfully, now we have better paradigms alongside better technologies where we can separate the different pieces of functionality and objectives into multiple layers.

  • We can have part of the application that is written specifically to manage the database.
  • We can have another piece that manages business rules and validation.
  • We can have another piece that’s a service layer that allows you to integrate other systems and software, preserving the code that’s already in place for business logic and the database.
  • We also have the user interface and front end of the database. This part is also changing: it used to be just PC-based, but now you’re going to want to think about new devices like GPS, tablets, and cell phones so people can access your software anywhere in the world.

We begin to realize there is an aging process that happens with software — as it ages, it becomes more difficult and expensive to maintain in addition to some of the lost opportunities for growth. For instance, older software wasn’t designed to take advantage of the hardware that you’re probably already using which has multiple core processors and robust memory capabilities. Bringing the software up to date will give you the opportunity to take advantage of those hardware options for better performance.

Software Modernization: When Is It Time?

SharePoint Consulting: Workflow Not Found

Managing New Workflow Manager Installation with SharePoint Consulting

I needed to remove a Web Front End (WFE) from a SharePoint farm for development reasons, but afterwards we noticed that workflows stopped working.  To remedy this, I decided to just re-install Workflow Manager on the main WFE.  Though this is not normally a recommended practice, we had few concerns since we are only working off a development environment.

I installed Workflow Manager on the WFE, then registered Workflow Manager using the –Force parameter to write over the previously registered Workflow Manager.

Register-SPWorkflowService –SPSite “http://mysite” -WorkflowHostUri “http://mysite:12291″ –SharePoint Consulting: Workflow ManagerAllowOAuthHttp -Force

However after installing Workflow Manager on the WFE I got the following error when starting a workflow:  “Something went wrong.  To try again, reload the page and then start the workflow.”

Workflow exception: “Something went wrong. To try again, reload the page and then start the workflow.”

This error wasn’t terribly descriptive, so I then checked the ULS logs and found these two errors:

“Microsoft.Workflow.Client.WorkflowNotFoundException: Workflow ‘e0a7dd54-cdb2-430f-bd98-16f6f9c1132c’, for scope ‘/SharePoint/default/8586cf62-a76c-464b-8ad0-2609f5c6cc01/b2301f34-5ce3-4237-b818-0942146a7541′, was not found. HTTP headers received from the server – ActivityId: 34956577-bdab-4a56-a2bf-25b2f33dc0af. NodeId: BOGBOWSDEV01. Scope: /SharePoint/default/8586cf62-a76c-464b-8ad0-2609f5c6cc01/b2301f34-5ce3-4237-b818-0942146a7541. Client ActivityId : a7c4369c-e8b8-f00e-7f24-c293dc32ac42. —> System.Net.WebException: The remote server returned an error: (404) Not Found.     at Microsoft.Workflow.Common.AsyncResult.End[TAsyncResult](IAsyncResult result)     at Microsoft.Workflow.Client.HttpGetResponseAsyncResult`1.End(IAsyncResult result)     at Microsoft.Workflow.Client.ClientHelpers.Se…     a7c4369c-e8b8-f00e-7f24-c293dc32ac42”

“Exception occured in scope Microsoft.SharePoint.WorkflowServices.WorkflowInstanceService.StartWorkflowOnListItem. Exception=Microsoft.Workflow.Client.WorkflowNotFoundException: Workflow ‘e0a7dd54-cdb2-430f-bd98-16f6f9c1132c’, for scope ‘/SharePoint/default/8586cf62-a76c-464b-8ad0-2609f5c6cc01/b2301f34-5ce3-4237-b818-0942146a7541′, was not found. HTTP headers received from the server – ActivityId: 34956577-bdab-4a56-a2bf-25b2f33dc0af. NodeId: BOGBOWSDEV01. Scope: /SharePoint/default/8586cf62-a76c-464b-8ad0-2609f5c6cc01/b2301f34-5ce3-4237-b818-0942146a7541. Client ActivityId : a7c4369c-e8b8-f00e-7f24-c293dc32ac42. —> System.Net.WebException: The remote server returned an error: (404) Not Found.     at Microsoft.Workflow.Common.AsyncResult.End[TAsyncResult](IAsyncResult result)     at Micro…                a7c4369c-e8b8-f00e-7f24-c293dc32ac42”

Again, these errors weren’t very descriptive.  Through a bit of trial, error, and luck, I finally realized that the previously existing workflows were only deployed to the old Workflow Manager, which was no longer in use.  Obviously the workflows would need to be redeployed for the new Workflow Manager.  I then tried redeploying the workflows, and success!  The workflows worked as expected.