Displaying items by tag: migration

Using automation to modernize mainframe applications will bring a codebase to today’s common coding standards and architectures. But in many cases, modernization to an application’s functional equivalent isn’t always enough. Organizations can do more to make their modern code more efficient and readable. By building refactoring phases into their modernization projects, organizations can eliminate the Pandora’s box of dead or non-functional code that many developers don’t want to open, especially if it contains elements that just don’t work.

Using TSRI’s automated refactoring engine, remediation was complete in an hour.

What is Refactoring and How is it Used?

Refactoring, by definition, is an iterative process that automatically identifies and remediates pattern-based issues throughout a modernized application’s codebase. For example, unreferenced variables or unnecessary redundant snippets could exist throughout the application. This scan, known as dead/redundant code refactoring, will find repetitions of any of this unusable code to flag, then remove it from the codebase. One of TSRI’s current projects found 25,000 instances of a similar issue that would have required 15 minutes of manual remediation per instance—not including the inevitable introduction of human error that would require further remediation. The number of development hours would take more than a year for a single developer to complete.

Using TSRI’s automated refactoring engine, however, remediation was complete in an hour.

Calling refactoring its own post-modernization phase is, in some ways, misleading. Refactoring typically occurs all the way through an automated mainframe transformation. As an example, in a typical COBOL or PL/1 mainframe modernization, TSRI would refactor the code from a monolithic application to a multi-tier application, with Java or C# handling back-end logic, a relational database layer through a Database Access Object (DAO) layer, and the user interface (screens) modernized in a web-based format. Believe it or not, many legacy applications still run on 3270 green-screens or other terminals, like in the graphic below.

Once the automated modernization of the legacy application is complete, the application has become a functionally equivalent, like-for-like system. However, any deprecated code, functions that may have never worked as planned, or routines that were written but never implemented will still exist. A process written in perhaps 1981—or even 1961—may have taken far more code to execute than a simple microservice could handle today.

Situations like this are where refactoring becomes indispensable.

 

Where to begin?

Before a formal refactoring process can begin, it’s important to understand your goals and objectives, such as performance, quality, cybersecurity, and maintainability. This will typically mean multiple workshops to define which areas of the modernized codebase need attention and the best candidates for refactoring, based upon the defined goals. These refactorings will either be semi-automated (fully automated with some human input) or custom written (based upon feedback from code scanners or subject-matter experts.)

The refactoring workshops can reveal many different candidates for refactoring:

  • Maintainability: By removing or remediating bugs, dead or orphaned code, or any other anomalies the codebase can be reduced by as much as one third while pointing developers in the direction of any bugs in need of remediation.
  •  
  • Readability: Renaming obscure functions or variables for a modern developer to fit within naming conventions that are both understandable and within the context of the code’s functionality.
  •  
  • Security: Third-party tools such as Fortify and CAST can be utilized to find vulnerabilities, but once found they need to be remediated through creation of refactoring rules.
  •  
  • Performance: Adding reusable microservices or RESTful endpoints to connect to other applications in the cloud can greatly improve the efficiency of the application, as can functionality that enables multiple services to run in parallel rather than sequentially.

 

What are the Challenges?

  • Challenge 1: One reason refactoring must be an iterative process is that some functionality can change with each pass. Occasionally, those changes will introduce bugs to the application. However, each automated iteration will go though regression testing, then refactored again to remediate those bugs prior to the application returning to a production environment.
  •  
  • Challenge 2: The legacy architecture itself may pose challenges. On a mainframe, if a COBOL application needs to access data, it will call on the entire database and cycle through until it finds the records it needs. Within a mainframe architecture this can be done quickly. But if a cloud-based application needs to call a single data record out of millions or billions from halfway across the world (on cloud servers), the round trip of checking each record becomes far less efficient—and, in turn, slower. By refactoring the database, the calls can go directly to the relevant records and ignore everything else that exists in the database.
  •  
  • Challenge 3: Not every modernization and refactoring exercise meets an organization’s quality requirements. For example, the codebase for a platform that runs military defense systems is not just complex, it’s mission critical. Armed forces will set a minimum quality standard that any transformation must meet. Oftentimes these standards can only be achieved through refactoring. A third-party tool like SonarQube in conjunction with an automated toolset like TSRI’s JANUS Studio® can be utilized to discover and point to solutions for refactoring to reach and exceed the required quality gate.
  •  

In conclusion, while an automated modernization will quickly and accurately transform legacy mainframe applications to a modern, functionally equivalent, cloud-based or hybrid architecture, refactoring will make the application durable and reliable into the future.

--

TSRI is Here for You

As a leading provider of software modernization services, TSRI enables technology readiness for the cloud and other modern architecture environments. We bring software applications into the future quickly, accurately, and efficiently with low risk and minimal business disruption, accomplishing in months what would otherwise take years.

See Case Studies
Learn About Our Technology
Get started on your modernization journey today!

Published in Education
Friday, 09 July 2021 10:42

Get Started with Your Modernization!

Highlights on “Setting Project Scope” and “Setting Up Development Sandboxes”

TSRI is thrilled to present highlights from Modernizing for the Future, our cloud webinar featuring Scott Pickett, our Vice President of Product Development and Service Delivery. In these first two segments, Scott helps your organization get the mainframe modernization process started.

The first segment, “Setting Project Scope,” helps your organization understand their existing baselines, setting realistic expectations and accomplishments for your migration, and planning your target environment.

In this second segment, “Setting Up Development Sandboxes,” Scott discusses your organization’s development sandbox and why setting up an experimental environment will be critical to the success of your automated modernization. Your sandbox will help validate your target environment as well as understand any complexities in languages, architectures, or databases.

 

Be sure to check out the remaining videos in this series as well:

 

As always, TSRI can help answer any questions you may have about automated modernization, and making sure your systems are ready to deploy in modern computing environments.

-------

TSRI is Here for You

As a leading provider of software modernization services, TSRI enables technology readiness for the cloud and other modern architecture environments. We bring software applications into the future quickly, accurately, and efficiently with low risk and minimal business disruption, accomplishing in months what would otherwise take years.

Get started on your modernization journey today!

Published in Best Practices

capitol buildingModernization of High Value Assets (HVAs) and software systems is more urgent than ever. In the past year, tens of millions of U.S. citizens have leveraged critical online systems to manage their livelihood and health during the COVID-19 pandemic. With such a heavy reliance on these systems, now is the time for the federal government’s critically important HVAs systems to keep up with citizens’ growing needs.

 

The Technology Modernization Fund was established in 2017 to support government and civic agencies to bring their critical software infrastructure into the modern age. On May 12 of this year, President Biden issued a comprehensive executive order that gave direction to federal departments and agencies to strengthen the government’s cybersecurity posture. The order establishes a requirement to modernize systems and implement stronger cybersecurity standards by moving agencies and their contract partners to secure cloud services and a zero-trust architecture, which uses identity management protocols to verify that every user of a system interacts with the appropriate levels of security access. This order also mandated deployment of multifactor authentication and encryption.

 

According to Federal Chief Information Security Officer Chris DeRusha, the White House is pushing federal agencies toward a “zero-trust paradigm.” With the pressure on, many agencies are struggling with the magnitude of such an undertaking and are, justifiably, fearful of the perceived security and down-time risks associated with modernization.

 

Modernizing an HVA doesn’t have to be risky

 

Using a graceful, automated approach to leverage modernization solutions can result in a very low risk modernization. By implementing a step-by-step cloud migration while keeping legacy systems running in parallel, an automated modernization can happen quickly, safely, and reliably.

 

TSRI has over 25 years of experience undertaking migrations of this kind (see below).

 

  • TSRI’s Work is the “Playbook” for Future Government Modernization
    A large percentage of TSRI’s work over the past 25 years has been the modernization of critical government and military software applications. If fact, our recent work with HUD was called the “playbook” for future government modernization.

 

  • Modernize Quickly and Maintain Business-as-Usual in the Process
    Our technology enables HVAs to be modernized rapidly and without business disruption.

 

  • Cloud-Ready, Cloud-certified — AWS & Beyond
    As a certified AWS partner for mainframe modernization, TSRI helps organizations take advantage of the Technology Modernization Fund to transform and secure their applications for cloud deployment on AWS and other leading platforms.

 

 

Ready to modernize? Reach out to us to learn more and get started!

 

 

 

 

 

-----

 

TSRI is Here for You

As a leading provider of software modernization services, TSRI enables technology readiness for the cloud and other modern architecture environments. We bring software applications into the future quickly, accurately, and efficiently with low risk and minimal business disruption, accomplishing in months what would otherwise take years.

 

See Case Studies

Learn About Our Technology

Get started on your modernization journey today!

 

Published in Government
Friday, 30 April 2021 10:44

Ada to C++ - Raytheon - TCS / MCS

Navy Multi-band Terminal (NMT) is a SATCOM terminal, which expands available bandwidth and provides support for ForceNet, the Navy's approach to network-centric operations.  TSRI transformed the legacy Ada code to C++, and refactored the modernized application.

  • Customer & Integrator: Raytheon & US Navy
  • Source & Target Language: Ada to C++
  • Lines of Code: 89,000
  • Duration:  5 months
  • Services: Automated Code Transformation, Transformation Blueprint, System Integration and Test Support, Automated Refactoring

 

Published in Case-Studies
Tuesday, 13 April 2021 12:36

Ada to C++ - US Navy - Modem Control Software

TSRI was engaged to modernize US Navy SATCOM Multi-band Terminal (NMT) Modem Control System (MCS) from Ada to C++. To provide SPAWAR with the best modernization approach, Raytheon selected TSRI to transform the existing MCS Ada code into C++ and to re-factor
the C++ toward the desired target architecture. TSRI's fixed-price "integrator ready" deliverable was selected by Raytheon for its low technical risk,
shortened schedule, and low cost.

  • Customer & Integrator: US Navy & Raytheon
  • Source & Target Language: Ada to C++
  • Lines of Code: 190,000
  • Duration:  5 months
  • Services: Automated Code Transformation, Application Blueprint®, Transformation Blueprint®, Engineering Support, Automated Refactoring

Published in Case-Studies

AWS Mainframe Migration Competency

When companies and governments need to migrate their mission-critical applications to the cloud, they will need a partner to make that transformation as smooth and efficient as possible. And when it comes to modernization, a highly automated process will get them cloud-ready quickly and accurately. TSRI is here to help organizations begin their modernization journey, and we are honored to be named as a Validated Partner in Amazon Web Services’ new Mainframe Migration Competency!

The AWS Competency Program is designed to identify, validate, and promote AWS Partners with demonstrated technical expertise and proven customer success.
The Competency designation helps AWS Partners differentiate their business to customers by showcasing their products and services in specialized areas across industries, use cases, and workloads. AWS Partners are vetted, validated, and verified against a high bar to achieve the AWS Competency designation.

TSRI joins an elite group of integrators and technical specialists in this competency. With more than 25 years of experience and leadership in modernization across multiple platforms and languages, we are perfectly positioned to help organizations with legacy architectures migrate to the cutting edge.

read the announcement

-----

TSRI is Here for You

As a leading provider of software modernization services, TSRI enables technology readiness for the cloud and other modern architecture environments. We bring software applications into the future quickly, accurately, and efficiently with low risk and minimal business disruption, accomplishing in months what would otherwise take years.

See Case Studies

Learn About Our Technology

Get started on your modernization journey today!

 

Published in AWS

At AWS re:Invent 2020, Amazon Web Services (AWS) unveiled plans for a new “Mainframe Migration Competency” and announced that TSRI has been identified as a launch partner! AWS recognized that TSRI’s solution — which provides near-100% automation and cloud-specific refactoring — are a huge benefit for organizations seeking reliable, low-risk, and rapid migration to the cloud. Furthermore, TSRI’s proven track record, which includes hundreds of successful modernization projects over more than 25 years, meant that TSRI would be a reliable and knowledgeable technology partner for AWS customers.

 

AWS and TSRIFrom AWS:

“Recognizing the complexity of a mainframe migration, our customers seek proven methodologies, tools, and best practices to empower successful migrations. The AWS Partner Network (APN) plays a critical role in these efforts by providing proven technology products and services for customers’ mainframe migrations.”

 

TSRI’s model-based solution transforms even very large (tens of millions of lines of code) legacy systems written in languages like COBOL, Fortran, PowerBuilder, Ada, MUMPS, VB6, and more than 30 other languages, into modern applications in cloud-native target architectures. The output is a modern multi-tier application that takes advantage of cloud utilities and scalability.

Now is the time to modernize for the cloud. According to AWS, “more than 70 percent of the Fortune 500 companies still run business-critical applications on mainframes, and many companies and institutions still possess legacy mainframes in their data centers. As a result of constantly evolving customer needs, the demand for modernization has accelerated as companies require increased agility to meet those needs.

“Due to the slow development cycle of mainframes, more companies are migrating to the cloud to enable rapid development and innovation. Furthermore, as mainframe subject matter experts retire and leave the workforce, these companies face an increasing skills gap.

“Coupled with high upgrade and development costs and expensive usage fees, CIOs with mainframes they must maintain are well aware of the business risks to their enterprise. As a result, a growing number of companies are looking to modernize and migrate their mainframe workloads to Amazon Web Services. These migrations enable companies to realize business benefits like an average 70 percent savings in IT infrastructure costs.”

See the AWS blog for more.

We’re excited to start the modernization journey with any organization looking to get off their mainframe and on to AWS! Learn more about how TSRI can help you transform your technology quickly and seamlessly, ensuring you and your application users can make the most of what cloud technologies have to offer.

-------

 

TSRI is Here for You

As a leading provider of software modernization services, TSRI enables technology readiness for the cloud and other modern architecture environments. We bring software applications into the future quickly, accurately, and efficiently with low risk and minimal business disruption, accomplishing in months what would otherwise take years.

See Case Studies

Learn About Our Technology

Get started on your modernization journey today!

 

Published in AWS
Monday, 27 January 2020 14:19

The Business Case for Automated Modernization

Perhaps you’ve seen your competition pull ahead. Maybe your customers have become frustrated with their experience as they interact with your systems. Possibly, you’ve even experienced a security breach. You know your legacy systems need to move into the 21st century, and perhaps you’re struggling to decide how to move forward. Whether you want to face it or not, now is the time to take a hard look at modernizing your digital infrastructure.

According to salesforce.com, “while there may be a multitude of reasons for a business to undergo digital transformation, it mostly boils down to survival. Digital transformation can be risky and expensive, so it’s often a necessity for businesses that want to survive and outlast the ones that failed to evolve.”

And then there’s the expense: Daniel Newman at The Future of Work suggests that as much as 80 percent of an IT budget can be spent on maintenance. Modernizing legacy systems—even incrementally—can help a company see its capabilities leap forward by using the cloud to integrate automation into standard business processes. John Brandon at techradar.com suggests that “some of the most disruptive technologies—such as machine learning, voice bots like Amazon Alexa, and artificial intelligence—are helping to automate mundane tasks and improve how a business runs.”

These technologies run on data. In this new era of computing, the businesses that truly succeed will be the ones that put an emphasis on their data. If they haven’t already, legacy systems with limitations on their data will fall behind, especially when introducing machine learning and AI into the mix. At the same time, the data and infrastructure that have kept older systems going for so long can’t just be switched off, and freezing the systems as teams write and develop its replacement will push customers away.

Modernization effectively overcomes these risks to your organization by opening up the possibilities that an older codebase wasn't designed to handle.

“Taking inventory of what still works and what doesn’t allows companies to identify which processes are no longer relevant,” writes Newman. “Only applications deemed critical to business are then modernized; the others are simply retired, saving time and money on maintenance.”

When you decide to replace or reconfigure your legacy system, you can decide between any of these modernization options:

New Application Development. Replicate your legacy system by writing entirely new code. Your team will manually develop your new system using current coding practices with modern interfaces, and support for current technologies. This option is very expensive option, and it’s generally only usable to set a baseline for future development. You’ll incur expenses that can be as high as the original project, risk levels are similar to a typical “waterfall” project, and there are high likelihoods of time and budget overruns.

Extend/Surround. Many organizations currently opt for this method. The development teams or consultants encapsulate the legacy system in coding containers that provide APIs and tack-on integration with other systems. While the solution may work, you will have a patchwork of code, often in multiple programming languages, that gradually increases technical debt and incurs added maintenance costs. While this situation defers replacement, it will likely be costly in the long run.

COTS/SaaS. Both common off-the-shelf (COTS) solutions or cloud-based SaaS systems enable you to migrate to a less expensive and more modern architecture, but costs can easily escalate. The new system will require customization and ongoing licensing costs. Such a migration could create ripple effects on other systems and cause you to incur other costs from conforming to a completely new platform with unknown attributes.

Automated Modernization. A careful translation of code by a team of expert external engineers creates a new, modern application based upon the logic and behavior of the original. The process will include varying degrees of automation, which increases accuracy while decreasing costs. Modernization will likely incur the least risk and expense of any of these options.

Replacement of aging systems is becoming increasingly urgent, and as programmers of many of these older systems retire, replacement costs will continue to rise. An automated modernization program will likely yield the least expensive and most flexible alternative for stable, long-term performance.

 

-----

TSRI is Here for You

As a leading provider of software modernization services, TSRI enables technology readiness for the cloud and other modern architecture environments. We bring software applications into the future quickly, accurately, and efficiently with low risk and minimal business disruption, accomplishing in months what would otherwise take years.

See Case Studies

Learn About Our Technology

Get started on your modernization journey today!

Standish Group, “Modernization: Clearing a Pathway to Success,” 2010

Published in Best Practices

Nearly everyone wants speed, efficiency, and accuracy—especially when it comes to software applications. As companies modernize their legacy codebases and migrate to the cloud, one of the best ways to achieve top performance is to create containers for modernized code.

Code modernization has become increasingly important as we move toward integrated cloud-based and virtualized software environments. While the original legacy code was written to meet the needs of the business at that moment time, modernization of code permits these legacy applications to meet the needs of today’s organization while retaining the integrity of the original business logic. Software developers can then focus on innovation rather than maintenance. Modernization makes it possible to meet the demands of today's infrastructure requirements without high cost or compromises in security or functionality. Companies looking to expand services, access improved processes, and use resources more efficiently will need architectural changes. Bringing these trends together, containerization under Docker and Kubernetes has created a new model for application deployment that provides numerous advantages to program operation and interoperability but requires special accommodation.

Containers provide consolidation benefits by permitting application instances to be stacked in larger virtual machines. Containerization improves efficiency, security, and reduces software licensing. It reduces complexity and ensures application portability, but the boost to protecting an organization’s systems at a time when only 56% of companies are integrating security into their technology strategies cannot be understated, according to Advanced’s 2020 Digital Business Report.

To take advantage of not just the security inherent to containerization, but the potential of having systems that can be ready for the next big advances in computing, applications must be modernized to externalize APIs and microservices. It is also important to ensure proper function within a containerized environment. Modernization transforms legacy applications to operate efficiently, reliably, and securely within the new environment with identical performance to the original application.

The Three-Step Approach: Transform, Cloud-Enable, Containerize & Deploy

When thinking about modernization, organizations can take a three-step approach based on TSRI’s experience in all forms of legacy code transformation, including migration to cloud services and containerization, to reduce risk and increase success:

1.         Migrate legacy monolithic code to a service-oriented environment. This includes updating language from COBOL to Java, JavaScript, or C#, changing databases, and enabling microservices. At this step of the process, the migration also begins to abstract underlying services from the application.

2.         Integrate service-oriented applications with native cloud services. This includes re-orienting code from WebSphere, DB2, or other legacy platforms to Apache Tomcat, Amazon RDS, or other modern platforms, for example. Upgrading to incorporate the latest native architectural interfaces ensures that applications will tightly integrate with the new environment, and ensures easier updates in future.

3.         Transform native cloud to Docker containers. The movement to containers provides additional architectural abstraction and improved integration of applications within the cloud.

As with any kind of migration and modernization, organizations need to assess, tune and optimize their applications for suitability and to ensure that applications will perform adequately within the container environment without infrastructure issues that might arise from coding anomalies.

The key to a successful migration is to evaluate and model the underlying legacy code logic and to pinpoint the areas that require adaptation to the new environment. Not every application has a natural and hazard-free path to a cloud-based containerized solution. Knowledge of container operations such as ephemeral storage and parallelization issues is extremely important in managing this transition. The transformed code must also be optimized to meet the needs of its new environment.

In the case of migrating and modernizing mainframe systems to the cloud, fully automated refactoring technologies such as TSRI’s JANUS Studio® toolset transform legacy applications to cloud-native applications for containerized deployment on multiple cloud providers, including a practice devoted specifically to AWS. TSRI’s model-based solution transforms even large legacy systems written in languages such as COBOL, Fortran, PowerBuilder, Ada, MUMPS, and VB6 into modern applications in cloud-native target architectures.

-------

TSRI is Here for You

As a leading provider of software modernization services, TSRI enables technology readiness for the cloud and other modern architecture environments. We bring software applications into the future quickly, accurately, and efficiently with low risk and minimal business disruption, accomplishing in months what would otherwise take years.

See Case Studies

Learn About Our Technology

Get started on your modernization journey today!

 

Published in Best Practices
Monday, 22 February 2010 15:28

TSRI Automatically Modernizes OpenVistA

 

Kirkland, WA. (March 12, 2010) – One of the best kept secrets in Washington DC is that our nation’s veterans already have a comprehensive electronic health care record (EHR) that for decades has supported delivery of quality health care at more than a 160 VHA hospitals around the world.  That extraordinary system is VistA, the Veteran Information System Technical Architecture.  Written in MUMPS, VistA serves as the vital backbone of the Veterans Health Administration (VHA) Electronic Health Care Record System (EHRS) that manages medical record data and delivers medical informatics to the veteran’s bedside while tracking and managing 100% of veteran’s health care electronically throughout his journey through the VHA medical care system.

Visit the VHA’s OpenVistA® Transformation Blueprint at
http://www.tsri.com/open-vista

Ironically, VistA like many systems that are highly successful, is now threatened with self-extinction due to its need for continuous growth and the inability of MUMPS, the language it is written in, to sustain its continued evolution.  VistA suffers from a form of software arthritis common among many legacy systems. Due to its age, size and complexity VistA is brittle, inflexible and resistant to change, and its maintenance costs have gone through the roof, compromising the VHA’s ability to grow and evolve Vista as the foundation for a 21st century medical delivery system for its veterans.

In 2005 the VHA estimated automated modernization of VistA could save the VHA upwards of $3 Billion compared to redevelopment, or manual replacement.  With the announcement today by The Software Revolution, Inc (TSRI), (the world-leading supplier of architecture driven modernization (ADM-based) solutions), of its open-source Transformation Blueprint ® for OpenVistA, TSRI has made a huge start on this daunting challenge.  For those who might care to understand, the OpenVistA Transformation Blueprint ® is a major step towards achievement of the VHA's goal of modernizing its Electronic Healthcare Record  system for its veterans. 

OpenVistA Casestudy

TSRI’s OpenVistA® Transformation Blueprint ® provides the complete target Java code and UML design for the transformation of all 2.1 Million lines of OpenVistA® and 120,000+ lines of Fileman MUMPS code.  The OpenVistA® Transformation Blueprint ® is far more than a mere language translation.  It is a massive multi-million page (300GB) web-based software design and architecture document consisting of navigable hypertext of the 'As-Is' MUMPS and 'To-Be Java' hyperlinked to hundreds of thousands of State Machine Graphs, Cause-Effect Graphs, State-Transition Tables, Control Flow Graphs, Data-Flow Graphs, Structure Charts, Data Element Tables, Class Diagrams expressed as scalable graphical diagrams that richly document all of the MUMPS and target Java/J2EE code. The Transformation Blueprint ® is both an application portfolio as well as a complete architectural roadmap towards a modernized OpenVistA® and Fileman. Every statement of MUMPS in OpenVistA® is shown side-by-side with its transformation into Java/ J2EE along with an extensive array of software property-oriented metric indices (e.g. fan-in, fan-out, complexity, redundancy, dead code, etc) for navigation to the code measured by the property. 

To learn more about TSRI’s transformation of OpenVistA® and the company’s plans for evolving OpenVistA® towards a modernized universal EHR system of the future, read the Chapter 12 casestudy: Veterans Health Administration’s VistA MUMPS Modernization Pilot in William Ulrich and Philip Newcomb’s new book Information Systems Transformation: Architecture-Driven Modernization CaseStudies, just published by Morgan Kaufmann, February 2010 as part of the Object Management Group (OMG) OMG Series.


   Kirkland, WA. (February 22, 2010) – New Book Release

   Information Systems Transformation: Architecture-Driven Modernization Casestudies

   By William M. Ulrich and Philip H. Newcomb
   Published by Morgan Kaufmann
   ISBN: 978-0-12-374913-0
   Copyright Feb 2010
   $59.95 USD €43.95 EUR £29.99 GBP
   www.informationsystemstransformation.com

For more information about TSRI contact:

TSRI
Greg Tadlock
Vice President of Sales
Phone: (425) 284-2770
Fax:     (425) 284-2785
This email address is being protected from spambots. You need JavaScript enabled to view it.

 

Published in Press
Tagged under
Page 5 of 7