Automated Notification System Ensures Tax Reporting is Timely


Our client, a Seattle-based non-profit organization, must align with tax regulations in multiple countries in order to maintain its non-profit status globally. Due to the complexity of juggling multiple tax codes, the organization was missing deadlines even with the use of a standard SharePoint task list. Simply connecting tasks to Outlook wasn’t sufficient for ensuring compliance with the numerous weekly, monthly and quarterly tax requirements.

Plaster Group’s Enterprise Software team was tasked with developing a notification solution that would provide automated scheduling and sufficient reminders using out of box technology. Consultants needed to develop adequate tools and processes to automate our client’s finance group workflows, reduce the need for managerial oversight, and eliminate the missed deadlines.


Plaster Group met with our client’s finance group to:

  • Identify personnel responsible for tasks associated with tax code compliance that require notification of impending deadlines
  • Combine the international tax requirements of our client’s teams to develop a schedule of important delivery dates many years in advance
  • Identify how many reminders would be necessary, and to whom, and iterate to find balance between too few and too many notifications

Plaster Group’s Enterprise Content Management consultants advocated for delivering fewer, more pertinent notifications so that they would be simultaneously visible and valued among our client’s employees and demonstrated the out of box SharePoint functionality that could create the necessary solution.


Plaster Group Content Management consultants developed and implemented a standard SharePoint workflow to email separate reminders at specific times before and after task due dates. Key features included:

  • Early Reminders – email notifications sent from the task to the responsible team member thirty days before the upcoming due date, prompting action
  • Follow-up Notification – email reminders sent from the task to the responsible team member immediately after a missed due date
  • Management Assistance – email escalation sent to the responsible team member’s leader if the task is still open thirty days after a missed due date


Using the workflow, team members now receive a consistent reminder of upcoming due dates, with sufficient time to plan and take action. In addition:

  • Email prompts help task owners manage and close their tasks on a regular basis, improving process efficiency
  • Automation ensures escalation happens without requiring task owner to initiate
  • Since implementation, almost no deadlines have been missed

As such, our client’s tax compliance risk has been reduced across the entire enterprise, as have the risks to their non-profit status. Employees are able to perform their duties more easily and effectively. 

Prototype-Driven Agile Development (Part 2)

This article is the second installment of a two-part article on prototype-driven Agile development. It is strongly recommended that the first installment be read before continuing.


The first version of the enterprise application that you developed using a prototype-driven, Agile development methodology turned out better than you expected.  Deployment to the production environment went off reasonably well and the application is up and running.  The users of the application got what they had expected since they had a hand in developing it.  The application is in production and the release party is over.  Job well done.

But, as is usually the case with the first version of any large application development project, some features couldn’t be implemented due to the ever present constraints of time, money and resources.  There is more work to do to build out the promised features and convert the as yet untapped potential of the application into real value.  But wait.  The prototype-driven methodology worked great before the application was deployed to production.  Now that it’s in production, however, can the same methodology be used to build major enhancements to the running system?  If so, can the methodology provide the same level of productivity?  In fact it can.


This article discusses how prototype-driven development can be used after the first version of the application has been deployed to production with all of the accompanying overhead of support, maintenance and operational management.  In fact, the value of prototyping or extra-Agile project management doesn’t diminish because there’s code running in production.  On the contrary, prototyping enables a wide range of experimentation opportunities including:

  • A-B testing of alternative complex UI designs before committing one to production
  • comparing different database design options for functionality and performance in pre-production environments
  • testing alternative factoring of application functionality between the server and client components

… just to name a few.  The value of prototyping, i.e. trying different options for solving a problem, is just as valuable post-version 1 as it was developing version 1.

Methodology Enhancements

How much or little prototyping can actually be utilized will be determined more by whether software architecture and design best practices were employed when building version 1 of the application rather than whether or not it’s running in production.  The use of loosely coupled services, architectures such as MVC/MVVM, a common (enterprise) service bus and other system-level architecture and design patterns allow for more narrowly-scoped prototyping and enable lighter-weight Agile project management.

In order to continue using a prototype-driven, Agile methodology, some changes to the process used to build version 1 are required, however.  For instance, while fixes for defects in the production system can be prototyped, those fixes should be tested and deployed using established processes to minimize the risk of introducing new defects into production.  Likewise, final testing of new and changed components should be rigorous to ensure that quality of service isn’t negatively impacted.  Up until pre-production deployment testing begins, though, prototype-driven Agile development can be leveraged to optimize designs and save development time.

Before version 2 development begins, a hybrid approach should be defined based on the requirements associated with the ‘production application life cycle’.  Typically, this lifecycle is comprised of different smaller cycles which include operational documentation, service desk training, user training, initial deployment, defect mitigation, upgrade deployments, etc.  Some of these smaller cycles will likely require adherence to a set of standardized operational requirements, such as those defined in in the ITIL framework, in order to effectively manage change and minimize risk.  This overhead is a sunk cost, however, so the value of prototype-driven Agile development isn’t diminished for having to incorporate the additional processes and deliverables required to deploy to production.

Operational Excellence

So far, this article and its predecessor have discussed the software development process.  But, there are tremendous opportunities to enhance even the most Agile development processes through smart automation of operational processes and procedures.

For instance, automated test suites enable more testing in a shorter time resulting in a reduction in overall time to QA.  Automated test suites in turn enable check-in gating.  That is, completion of a source code check-in is predicated on the source code successfully compiling, all of the automated test suite passing, and, finally, a successful deployment to a non-production environment; all of which decrease the likelihood of bugs and increase the certainty of the eventual production deployment being successful.  All of these gates can be automated inline in the source code check-in process.

Automated deployment is another key component of the total application lifecycle and should include such characteristics as ‘one-button’ launch, automation of deployment step verification and deployment final verification, automated rollback, deployment process monitoring and alerting, and deployment process auto-documentation.  By reducing or eliminating manual procedures in favor of more deterministic and repeatable automated processes, the end-to-end develop-test-deploy cycle can be repeated daily or even after each source code check-in.  From practice comes perfection.

In Conclusion

Prototype-driven development using an Agile methodology can yield productivity and quality benefits for both new system development projects and existing system enhancement projects, particularly if good software architecture and design practices are applied from the beginning.  Further, automating operational processes can significantly reduce risk and speed up time-to-production.  In combination, prototype-driven Agile development and operational automation can help IT achieve unprecedented organizational agility and productivity.

Plaster Group Architecture and Agile  consulting services can help you evolve your software development processes. We’ll help you create a roadmap to higher quality and greater productivity, and we’ll help you execute on it, saving you time and money while opening up new levels of flexibility and productivity for your IT software development investment.

Plaster Group is One of Washington’s Best Places to Work!

PSBJ 2014Pudget Sound Business Journal has announced their finalists for Washington’s Best Places to Work, and we’re very excited to see Plaster Group has made that list! Our wonderful employees make Plaster Group such a great place to work and are the reason why we are a finalist – thank you all very much! We’re looking forward to attending the Awards Ceremony at Safeco Field where they will be unveiling the winner on August 14! Find out about our company culture and career opportunities here, and be sure to read our reviews on Glassdoor!

What’s New in Microsoft SQL Server 2014

Database - Microsoft SQL Server Updates ArticleMicrosoft released the latest version of SQL Server – SQL Server 2014 – to the world in April, 2014. As usual, it comes with a lot of new features that are designed to give developers and administrators better performance, security, and manageability. Here, we’re going to focus on just five of the major areas of improvement: in-memory OLTP, improvements to Always On, new Hybrid Cloud features, the new Buffer Pool, and better security through separation of duties between administrators and developers.

Hekaton – In-Memory OLTP and Native Compiled Stored Procedures

Let’s start with the most impressive new feature in SQL Server 2014, taken from a Microsoft Research project called Hekaton: in-memory OLTP. With in-memory OLTP, a database administrator can identify tables that are to run entirely in-memory, removing the traditional code paths used for paging data into and out of disk storage. With Hekaton, all of the indexes and data for a table is kept in memory, giving up to a 30x – not 30%, 30 times – improvement in performance. As long as your SQL Server has enough RAM, all of the processing for important tables – or even an entire database – can take place in memory, with lazy writes back to disk for persistence.

As a SQL Server DBA for almost twenty years, I have to say that I haven’t been this excited about a new feature – ever. It’s jaw-droppingly fast. Even if your server had enough RAM to hold your entire database in cache before, Hekaton still runs much faster with its new locking algorithms and lack of disk/memory paging.

In addition to the in-memory OLTP features, Hekaton also brings native-compiled stored procedures to SQL Server 2014 when running against memory-optimized tables. This means that your stored procedures are read and compiled using parts of the Visual C++ compiler, generating native .DLL’s that are invoked as if they had been written in C. These new native compiled stored procedures can give a 2-3x improvement in performance over interpreted SQL.

Always On Improvements

Always On is a marketing name for a set of features introduced in SQL Server 2012 that allow SQL Server to keep running across multiple servers in the event one fails or needs to be taken out of service for maintenance. SQL Server 2014 improves on Always On Availability Groups in a number of ways.

First, the old limit of four read-only replicas has been increased to eight. By having more read-only replicas of your database, you can improve availability while shifting read-intensive workloads off to those replicas. For instance, you might have your master database running a standard OLTP workload, with read-only replicas handling tasks like reporting and backup.

Next, SQL Server 2014 allows read-only processing to continue using the replicas in an Availability Group, even if the quorum managing the read/write version of the database fails. By decomposing the functionality of your application into read-write and read-only features, you can enable a degree of functioning for your users even while the main database is offline.

Hybrid Cloud Features

Continuing the high-availability theme, SQL Server allows your on-premise databases to create secondary replicas on SQL Server 2014 instances running in Azure Virtual Machines. This gives you the ability to do a manual fail-over to Azure in the event that your main database and replicas are completely unavailable in a disaster scenario.

Additionally, if you run your main database in an Azure Virtual Machine, you can create your primary replicas in another Azure VM and have them automatically fail over to each other.

One other exciting new feature in SQL Server 2014 is the built-in ability to do database backups directly to Azure Blob Storage. With this feature, the days of running on-premise backups and shipping tapes offsite are over. For older versions of SQL Server, Microsoft is shipping a file monitor service that watches for your backups to be run and then automatically uploads them to Azure Blob Storage. With your backups already in Blob Storage, SQL Server disaster recovery in Azure is as simple as standing up a new Virtual Machine and running a database restore.

Buffer Pool Extensions

SQL Server has always used memory as a cache for data and stored procedures to improve performance; technically, this is known as the buffer pool. With larger data sets, the buffer pool can run out, and SQL Server will evict memory pages from the pool as it needs to for more-recently-touched data. In SQL Server 2014, we can use a fast SSD drive as a buffer pool extension (BPE). This extension is used only when main server memory starts to run out, and provides faster-than-spinning-disk-I/O access to data that’s already been read from disk. This provides improved random I/O throughput, reduced latency, and a new caching architecture that enables us to take advantage of low-cost SSD drives to expand available cache, instead of just adding RAM.

Separation of Duties

SQL Server 2014 comes with a new ability to create roles and sub-roles for administration and operations staff that provides granular control over what a DBA has access to do. In the past, most operational functions required sysadmin-level rights, meaning that a DBA could not only perform administrative tasks like installing servers, creating databases and availability groups, and running backups, but also had rights to see all of the data on those servers. With new Separation of Duties features, roles can be created for operations staff that enable those server-level and database-level tasks while providing no rights to read or modify any of the data contained in them. Although security logs were available already to audit this kind of data access, these new features can guarantee that staff only has access to data when they need it.

There’s Much More

Although I’ve given an overview of what I think are the most significant improvements, this is hardly a comprehensive look at what’s new in SQL Server 2014. There are improvements to the overall data story, including data mining, big data, and Polybase – SQL Server / Hadoop integration. Microsoft offers a 180-day free trial when you’re ready to try it for yourselves.