Sponsors

Microsoft


TechWell

We have 1660 guests and 2 members online

Home CM Basics Case Study: Enterprise & Database CM

Case Study: Enterprise & Database CM

E-mail
Written by Austin Hastings & Ray Mellott   
Sunday, 01 April 2007 09:43

A perennial question in the configuration management field is how to control databases. Databases are too big and too complex to be managed as simple objects. They have a very expressive language—SQL—for describing their structure, content, and changes. Database CM is important when either the structure or the content of a critical database is being managed. And it is essential for the growing number of business systems driven by metadata[1]. Despite this need, there have been no general solutions available. Commercial vendors have not taken the obvious step of providing generalized configuration and/or change management support, and CM solutions for databases have focused on the structure only, treating content and other attributes, including triggers and stored procedures, as an installation problem rather than a development problem.

A newer issue is how to do Enterprise[2] CM. Some CM tool vendors have attempted to provide support for large-scale systems (e.g., Component Based Development). And vendors have been attempting to support geographically distributed development for some time. Full support for complex enterprise systems is still lacking, however. Supporting complex systems, like supporting complex organizations, is a hard problem.

A recent project needed both functions. A multi-technology system demanded tracking of changes from requirements through retirement. The system included Cobol, Java, and .NET components, but the key component was a metadata tool for application development. The metadata tool was built on an Oracle database, where business logic and business variables were defined and maintained. Software development in this environment centered around changes to the database made with the metadata tool, and involved managing change across the full set of different technologies, across different organizations, in offices that were widely separated. In short, we needed to provide both Enterprise CM and Database CM.

We realized that we were facing two problems with one solution: the diversity of the enterprise forced us to abandon the traditional “software release” approach to CM in favor of a higher level, more abstract solution. Taking an abstract view let us redesign the develop, test, and deploy work flow so that we could manage source code and database content updates interchangeably. We call this technique Longacre Deployment Management™ (LDM), and use it to track the progression of all types of intellectual property (IP)—program logic, hardware and software configuration, database structure or content—through a single, abstract life cycle.

We believe that LDM is essential to successfully implementing CM in a database-heavy enterprise, and that it provides significant advantages over other software release–based techniques where divergent technologies are involved. The novelty of the LDM technique inspired the writing of this case study, along with an accompanying article[3] describing the technical details of implementing LDM. We have endeavored to separate the two. This case study presents the situation faced by our client, and the solutions we devised. The details of LDM provided here are only those relevant to discussing the CM system we implemented. Likewise, the client details in the LDM article are confined to those relevant to providing implementation hints for LDM.


[1]:   ‘Metadata’ is data about data. A data dictionary or an XML schema, for example. A more basic example is a screen definition language, specifying the position and title of fields to be displayed, but leaving the field values themselves to be extracted from another data source.

[2]:     Enterprise is defined first as “a project or undertaking that is especially difficult, complicated, or risky.” Later comes “a business organization.” We mean the first sense of the word.

[3]:     Austin Hastings, “Technical Introduction to Longacre Deployment Management™,” CM Journal, 15 April, 2007, URL: http://www.cmcrossroads.com/content/view/7910/240 (accessed 15 April, 2007).

{mospagebreak title=Background}

Background

We'll call our client “Really Big Financial,” or RBF, and hope they don't sue us. RBF is an American company providing insurance to a niche market. That niche has experienced sustained, profitable growth. As usual, market growth means buyouts and mergers—RBF has development and production facilities spread across North America, and suffers from the usual confusion caused by trying to combine separate organizations.

RBF does software development as an IT function, not as an R&D function: the primary purpose of software development is to support their own business, and RBF's software “customers” are other RBF divisions or business partners. There is a smörgåsbord of different technologies at play: there are COBOL applications doing back office functions and supporting thin-client systems. There are Java and .NET middle-tier and thick-client applications. And there is a new but substantial metadata-based application development environment supporting a web interface.

RBF's legacy software systems continue to be supported, but many of those systems are being discarded as the insurance products[4] that they support reach end-of-life. Going forward, all RBF insurance policy writing applications are being implemented using either .NET (few) or the Metadata  Application Development System (MDS). The legacy applications include several software services. These services remain viable, so RBF is encapsulating them as web services rather than rewrite them. While Service-Oriented Architecture[5] is not the guiding philosophy at RBF, the principles of SOA are providing value.

UML diagram showing technologies deployed at RBF

Illustration 1: Technologies on production servers at RBF

The MDS is a software development environment built atop a database. It is similar to the form and query construction tool provided with Microsoft Access™. The database is used as both a storage environment and a target platform—“code” built in the proprietary GUI is translated into table data or SQL stored procedures. The metadata defines the variables on which logic will operate, the user interface forms and transitions, and all of the internal logic of the application, including edits for data entering the system and transformations for data delivered externally for disposition and processing.

Metadata is deployed from one database to another (for example, from the development database to a testing database) by exporting it as SQL statements. The amount of metadata updated during development of a system change, including data element definitions and the logic that operates on them to address business requirements, can range in scope from a single generated SQL statement to tens of thousands of statements, with few natural boundaries. While developers generally have some idea of the likely impact of a change, there are still occasional surprises that result in hundreds (or thousands) of statements. This is one of the side effects of working in an environment that mixes human- and computer-generated code.

Because the content of the metadata database is “source code,” it must be managed just like any other source code project. Because the metadata exists only in a database, the CM challenge is immediate: existing approaches don't support databases, but RBF has staked their future on a development system that is all database.

Development using the MDS is against a single shared development database.[6] This is a basic implementation of the Shared Workspace pattern, with changes made by one developer immediately visible to others in the development environment. The MDS deployment tool includes logic to serialize changes that are exported together, but detecting and understanding interdependencies among different work items by different developers, sometimes for different insurance products, was and is a source of deployment problems.

An added challenge of the metadata system was the high degree of structure in the development process. Unlike conventional 3GL[7] systems where an ad-hoc test framework can be built for any module, the metadata implementation requires that applications be built from their core functions outward. The MDS vendor made this into a strength, since the highly structured nature of the application and the interpreted, integrated development environment means that application code once developed can easily be reused, or turned into templates.

The gradual state-by-state roll-out of RBF's products has been a snowball of accumulating functionality, with each state delivering a valuable product as well as making improvements to the core code that forms the basis for subsequent products. This has enabled RBF to achieve high rates of development throughput: new product development has gone from months per product to weeks per product.


[4]:     An insurance product is a type of policy in a single state. Because insurance is regulated by the states, U.S. insurers treat each different type of policy (Auto, Life, Home) as a different product in each state. With a few different types and 50 states to write them in, even a small insurer will have tens or hundreds of products.

[5]:     Service-Oriented Architecture, or SOA, is a system architecture that builds on independent ‘services,’ usually provided across a network, to support business users. See http://en.wikipedia.org/wiki/Service-oriented_architecture. SOA is frequently used to integrate ‘mainframe’ and ‘distributed’ components into a unified model.

[6]:     This was a side-effect of the technology transfer from the MDS vendor, not a requirement of the tool. While we did research the possibility of implementing a Private Workspace, it wasn't worth it.

[7]:    3rd-generation Programming Language. Contrast with 4GL.

{mospagebreak title=Ray Mellott}

Ray Mellott

The genesis of the MDS project at RBF was a perfect example of the sausage rule[8] . After a time, RBF's CIO was dealing with different camps, claiming that the MDS project could or could not work, would or would not be useful, etc. Eventually, the CIO wished a pox on all their houses, and brought in an outside specialist. Ray Mellott started in IT in 1967. He has worked as a programmer, analyst, infrastructure person, first and second line manager, and CIO (three times). He has built a data center in a parking garage, built organizations from scratch, and fixed problems others lost jobs over.

When Ray arrived, the MDS vendor was both developing the system and using the system to develop products. Deliveries were late, and there was ‘tension’ between RBF and the vendor. The distributed nature of the enterprise, the transition from external to internal development, and the difficulties working with the MDS vendor simultaneously as system provider and development shop had produced a finger-pointing, doubting culture that had to be fixed if the project was to see any kind of success.

Ray's task was to make the MDS products succeed. ‘Success’ in this case would mean:

  • Demonstrating to the internal audience that the system would work, reliably and at the target transaction volumes.
  • Building a team capable of mastering the MDS, and capable of working together in a multi-technology, geographically distributed environment against increasingly ambitious schedules.
  • Bringing the system development and system management functions in-house.
  • Discovering and addressing the hidden issues resulting from the technology.
  • Transforming the development process from the R&D-style, single-technology approach used by the vendor to a production engine capable of supporting RBF's business strategies, including a continually accelerating pace of product development.

Ray's personal measure of success was to eliminate his own job: either the system would be eliminated for cause, or the system would function in all respects.

Ray's style of management was described by one of the team as: “He asks you to do something totally ridiculous, and keeps asking why you can't do it and ignoring your answers, until it's easier to just do it than keep arguing about it.” Becoming a team, building products to schedule, and using a tool that nobody was sure of—all seemed totally ridiculous, but it became easier to do them than to explain why they couldn't be done.

By Spring of 2006 the new RBF team was functioning and products were being delivered. But costs were high, and the development cycle was filled with errors and problems, most of them human in nature. Ray knew, and demonstrated to senior staff, that the team was experiencing configuration management and change control problems. The mostly-manual process received from the MDS vendor worked in a single-technology, low-volume scenario. But as the team grew and the system was integrated with other production systems, RBF needed new approaches to CM and change management. Because of the metadata component, neither the RBF team nor the majority of the CM community were familiar with the needs of the team.


[8]:     The sausage rule states: People who like sausage should never watch it made.

{mospagebreak title=Austin Hastings}

Austin Hastings

When software development was handled by the MDS vendor, these problems were hidden from RBF. (Actually, they appeared as schedule delays, blown deliveries, and the like.) As the pace of development accelerated, and as product development was handed off from the MDS vendor to the RBF team, these issues were exposed as CM problems instead of mysterious bugs and schedule delays. CM had to change from a series of interesting problems handled by people with intimate knowledge of system nuances, to a set of procedures that avoided or prevented problems. The team needed a CM ‘guru.’ Ray found his way to the CM Crossroads website. To quote his original post:

“Most builds have any number of items; and a complete build can consist of hundreds of uniquely identified items, all manually identified, and all manually prepared. The potential for human error is enormous, and we are realizing this potential all too often.”

Austin Hastings has more than 20 years experience in the software industry. He has been a developer, system administrator, CM weenie, and consultant. Currently he serves as principal consultant for Longacre, a software CM and process automation consultancy. Austin got involved as a result of Ray's call for advice on CM Crossroads. It became clear in discussion with Ray that management of the databases underlying the MDS would be the key to any solution. After some discussion of the nature and challenges of the project, Ray gave Austin a simple mandate, “Help us fix it.” That meant:

  • Helping the team understand in depth the scope, requirements, and benefits of CM.
  • Causing the team to embrace some process automation (low hanging fruit) that could reduce effort and improve quality outside of the core CM domain.
  • Assisting in the selection of a software CM tool vendor.
  • Identifying obvious candidates for process automation enabled by the CM tool.
  • Leading the roll-out of the new tool, and demonstrating to the internal audience (again) that the system works, and can be adopted by the IT community at large.
  • Implementing changes enabled by the above, while improving development schedules.

That mandate has been satisfied as of this writing. While some tasks have been handed off to RBF staff for completion, the team has grabbed the low-hanging fruit, found and implemented an integrated CM solution, automated much of the CM activity, and is enjoying the benefits in reduced human error and improved productivity.

{mospagebreak title=The Problems}

The Problems

The project had to overcome a multitude of problems. Most of those problems were not CM related—Ray can discuss those in a different forum. Four problems dealt directly with CM: manual processes, an over-simple CM approach, the broad mix of technology at RBF, and the unusual nature of the metadata system (i.e., database as source code).

Problem: Manual Processes

The build and deployment processes established for RBF by the MDS vendor were almost entirely manual, were completely dependent on developers to accurately record and communicate the activities conducted, and required intimate knowledge of the internal workings of the system. Changes made in the MDS were tracked using a built-in tracking system in the MDS that had to be correlated with the team's own tracking system. Changes to Java source code and forms templates were controlled using CVS. Java code was built privately by developers, with no record of the source of the build. The resulting binary files were delivered to a shared drive, where the deployment team had to choose the correct files based on their own instincts or on the contents of emails from development or QA.

When QA requested deployment of a set of changes to a test server, the deployment group inspected the change list to understand its contents and decide the deployment order of the changes. The team then grouped the changes together by impact or content and manually executed procedures and scripts to produce deployable artifacts. These were then copied to the right locations and executed or installed. Nearly all build and deployment operations required remotely connecting to different machines via SSH, RDP, or VNC[9] connections.

Not surprisingly, a single misstep could result in significant down-time. During Austin's initial visit (May ’06), half the deployment team plus a few members of the QA group were trying to diagnose a failed deployment. Understanding the problem and devising a solution occupied a group of three to six people for three days. At one point, the team was poring through a user's Microsoft Outlook mailbox trying to trace the installation history of certain features.


[9]:    Secure Shell, Remote Desktop Protocol, and Virtual Network Computing, respectively. All are ways to connect from one computer to another. SSH generally implies using a tty or command-line interface, but it can ‘tunnel’ the X windowing protocol. The other two are screen oriented, and so transport the entire desktop image.

{mospagebreak title=Problem: Simplistic CM}

Problem: Overly Simplistic CM and Change Control

As a new organization, the RBF software team had little native concept of the principles of configuration management or how CM tools could be used for benefit. The team had no overall idea what was needed for good CM, and no clear grasp of the value and importance of good CM. They were using a commercial change tracking system—PVCS Tracker[10]—configured and maintained by the MDS vendor. Like most developers, they had some basic familiarity with version control tools and concepts. Generally, that familiarity started with ‘check out’ and ended with ‘check in.’

The Tracker setup inherited from the vendor was configured for the vendor, not RBF. Because the system wasn't a good 'fit’ for RBF, more and more of the system was abandoned or ignored as time went by. When we eventually migrated to a new system, more than half of the Tracker fields were unused, irrelevant, or filled with inconsistent data.

Probably the subtlest problem was the ‘R&D style’ development philosophy built in to the system. The MDS vendor, of course, is an R&D company. They do software development, the software goes through a release cycle, and all the usual characteristics of COTS software development apply: bug fixes, release planning, feature development, etc.

That doesn't apply to RBF's internal systems: they have some concrete schedule constraints (legal commitments regulating the effective dates of changes to their products) but they can make other system improvements on a day-by-day basis. This difference means that the idea of different “releases” is not a coarse-grained, discrete partition of the growth of the system, but rather a fuzzy, permeable notion that guides system development but does not restrict it. This is a subtle difference, much like the difference in accounting between using a calendar year and using a fiscal year[11] ending in March. But that subtle difference had a cost, expressed in unused fields and wasted effort.

Another problem with the CM setup at RBF was a bias towards ‘version control,’ a common failing of shops with limited CM experience.[12] The team knew that CM was important, but lacked a clear vision of the requirements and benefits. The cultural bias of RBF's IT staff was to implement ‘minimum coverage’ CM—an interesting trait for people selling insurance. The MDS team used Tracker, the COBOL group used MKS Implementer—another COTS product focused on facilitating deployments, while the Java and distributed[13] teams opted for CVS to handle basic library management. Having once “done CM” by cloning the vendor's setup, the general IT audience didn't understand that their requirements had grown well beyond what might work in a technology stovepipe.

The next problem was in the tracking of change requests. The system provided by the MDS vendor used Tracker to manage change requests, and then used the change-tracking functions built in to the MDS to identify individual work items. The connection between the two tools was entirely manual. Developers were assigned a change order in Tracker, entered redundant data in the MDS tracking system, made the appropriate metadata changes, then manually transferred update information back to Tracker to close development of the issue.

Because the RBF system uses multiple different technologies, the team could not (and still cannot) use the change-tracking functions of the MDS independently. ‘Official’ change tracking has to take place in a single system common to all the different technologies. The team was forced to use a simple Tracker life cycle to manage both change request tracking and software deployment.

With a database at the heart of the system, there was no good, general-purpose way to undo arbitrary changes. Since work items could not be rolled back after they were applied, there was no way to fail a change and back it out. This meant that requests in the system were one-way only: once a change was marked as ready for testing, there was no way to add to the change and re-deploy it. Instead, the failure of a change caused a new change request to be (manually) opened. The complete record of a change was frequently spread across several requests, with each request containing a partial delivery or an incompletely successful attempt to resolve the issue. To make matters worse, the system depended on humans manually recording the relationship of one change item to another and the interrelationships of different work packages and issues.[14] The individual issues were pieces of the overall history of the change, with no explicit connection linking them together. Individual QA and development staff may have been briefly aware of all the various parts, but any post facto investigation of the change was doomed to failure.

In summary, the in-place CM system as a whole, while simple, did not provide enough returned value for the work invested. Although versions of files were identified, and individual work deliveries were tracked, there was no support for higher-level activity. The ‘bigger picture’ items, including delivery of changes to production systems, aggregate information about the work performed for a single change item, impact and traceability of upstream changes, and interrelations and dependencies among work items and/or changes, were simply not available.  Moreover, the absolute dependence on human beings to reliably record perfectly accurate information in the work records meant errors were inevitable and frequent.


[10]:  A venerable, widely-used product that has been end-of-lifed by Polytron Intersolv Merant Serena.

[11]:  A year-long accounting period not starting January 1. See Fiscal year.

[12]:  Like teenage acne, the fact that it is common doesn't make it less of a problem.

[13]:  ‘Distributed’ is a mainframe-centric euphemism for “Unix and/or Windows-based”.

[14]:  Yes, there was a “related item” field on the requests. When migrating the data, we counted 36 requests with this field populated out of approximately 8000 requests. The use of the field was never explained to developers.

{mospagebreak title=Problem: Broad Technology Mix}

Problem: Broad Technology Mix

There are several different technologies used in the RBF product architecture. All of them, save the MDS, have well-understood software CM solutions. Unfortunately, those solutions don't share much in common. Deploying COBOL and deploying Java are different operations. Some of the technologies used at RBF are rare, including several different automated forms generation tools. The forms development processes generally look like C-language software development, slightly different from everything else in the system.

At one point, Ray was asked to deliver a briefing to senior staff addressing the question of ‘why it takes so long with this system.’ One part of the answer was that to deliver a new product requires the scheduled, integrated delivery of IP in nine different technology domains.

{mospagebreak title=Problem: Stand-Alone Metadata}

Problem: Stand-Alone Metadata

In a traditional system most of the business logic, and the variables on which the logic operates, is encapsulated in libraries or programs. When a change is required the relevant modules are checked out of a library tracked by a CM tool, changes are made and tested, and the updated code is checked in.  Deployment then involves pulling the changed module and applying technology-dependent processes to make the changed module available to its users. This is not the case with the MDS, and to understand the situation requires some background.

The MDS requires a database, and MDS products are built and maintained completely in a database context. Changes are applied with transactions, and those transactions are reified[15] in the system. Transactions applied by a user are grouped together in sessions, and sessions are associated with change tracking entries, called SCRs, in an internal change tracking system. While session and transaction identifiers are accessible, deploying by SCR is the granularity that makes sense.

Metadata stores simple values, such as the X and Y coordinates of a widget on a screen. It also stores business logic like the formulas used to compute insurance rates for various categories of risk. The MDS provides an interface for all of this. The MDS does not store ‘plain old data.’ When an insurance policy is written, the fields are filled with data. That data is plain data, written to tables on a database server. The interface and computations are controlled by metadata. We are focusing here only on the metadata.

Because of the innate sensitivity of database content to the order of execution of statements[16], the commands associated with a change can only be executed against a particular database one time. The metadata changes are accumulative, so data can be added or modified, even removed, but individual SQL statements cannot be undone. Once metadata changes are delivered, defects in the new configuration are addressed by delivering additional changes that further adjust the metadata configuration. These additional changes are tracked with new transaction, session, and SCR identifiers.

With regard to the amount of records impacted by a metadata change, a change can have a nearly limitless scope. Because each insurance product must be developed separately, the very first update performed on a product is to copy all the metadata from an existing product to serve as an initial baseline. (Things like the product name are changed, obviously.) This common operation is essentially a one-click edit that associates hundreds of thousands of metadata records with a single change operation. Note that a single metadata change or collection of changes does not necessarily constitute a complete ‘module’ or ‘subprogram.’ Instead, metadata changes commonly have the same characteristics as software changes: fixing a bug in existing logic, adding new variables to the system, refactoring existing code, and so on.

While the MDS automatically interleaves transactions that are packaged together in a bundle of simultaneously-exported changes, dependencies and relations between the bundles must be dealt with at a higher level. Moreover, these interactions have to be evaluated separately for each target environment: QA may prefer to receive changes in a particular order, but legal and business reasons may affect the order that entire new products are deployed. If a state regulatory agency imposes a 30 day delay, then the planned deployment sequence flies out the window. (There are, unfortunately, some global items in the MDS. The regulatory delay scenario is real, and problems caused by deployment of global changes out of order are also real.)


[15]:  Reified: treated as a discrete, first-class object. For transactions, the MDS maintains a “transactions” table, adding a new entry each time a SQL transaction is committed.

[16]:  SQL itself is order-sensitive (e.g., INSERT versus UPDATE) but extensions (MERGE) and careful coding can address that. This doesn't prevent the data from being sensitive to semantic ordering issues. For example, an INSERT and a DELETE may affect matching rows. Also, stored procedure triggers and key constraints can cause exceptions or bad behavior depending on when and how many times a statement is executed.

Here is some illustrative data:

  • From November 2005 to March 2006, during the ramp-up that highlighted RBF's CM problems, they conducted 159 bundling (metadata export) operations, encapsulating 958 separate change orders against 8 insurance products.
  • One product required 30 bundles, deployed in order.
  • In another product, a single bundle contained 85 individual change orders.

Of course, every state is different. Not wildly different, but different enough. There is always a set of changes required to support whatever those differences are. The research by RBF's legal, actuarial, and requirements teams is very thorough: the number of differences between two states may be large, but the actual number of change orders to resolve those differences is usually low.

The remaining changes are bug fixes and enhancements. As the MDS product development has progressed, the development cycle for a new product has dropped from months to weeks. A lot of this is because the copy-and-modify approach works so well. In a traditional software development shop, each new product release would correspond roughly to an agile iteration—the product is getting consistently better, and each “new” insurance product builds on a previous product as its initial baseline.[17] If you think of an iterated or agile development project doing new development in a 3GL and having 8 iterations, 160 QA builds, and 1000 change orders in a six month period, the equivalent scale is between 100 – 1,000 KLOC. This is a large (though not huge) system being developed by a small team.


[18]:  Tony Gargasz. If you happen to need a skilled VB contractor, drop us a line and we'll put you in touch with him.

{mospagebreak title=The Solutions}

The Solutions

Low-hanging fruit

At the outset, Ray and RBF's CIO asked for some low-hanging fruit: some items that could be accomplished in minimal time with existing resources that would show significant, immediate return on the effort. For almost every shop, the fastest ROI is going to come from some kind of automation effort, and RBF was no exception. In fact, because of the numerous manual procedures they were following, automation was almost too easy.

With the help of a skilled local VB contractor[18] who was already part of the deployment team, we established a tracking database for bundling/deployment operations, and a Windows GUI to drive it. We then provided the team's customers (Development and QA) with a read-only interface to the database, replacing a shared Excel spreadsheet.

This bespoke application, plus some Perl scripting, converted a procedure that took essentially a full day into a straightforward operation that could be performed by a knowledgeable user in an hour or less (usually less). It also significantly reduced the potential for human error by taking the humans out of much of the process.

It did make the whole process less flexible. The old system had so much human involvement that a bogus request for deployment (from human error) could be converted into a useful one by the deployer. With the new system, what is requested is generally what is delivered, so the garbage-in, garbage-out rule applies. But the customers are smart, savvy people, so this isn't much of an issue.

{mospagebreak title=New CM tool}

New CM tool

With Tracker being unsupported, and the complex development and operations environment at RBF, we knew that we needed a new tool that offered tight integration between the source code control and issue tracking components, and that provided a powerful mechanism for integrating with external systems. Because RBF has had more than their share of failed acquisitions and ‘shelfware,’ project and senior management were acutely aware of the need for a clean, successful selection and acquisition process.

We devised an RFP and contacted all of the major CM tool vendors. In addition to vendor responses, we prepared “mock” responses for the leading Open Source tools. The RFP process and structure was the synthesis of Ray's long experience responding to large-scale government RFPs and managing other large-scale procurement initiatives, plus Austin's experience with the CM industry. The result was a comprehensive document that addressed all of RBF's immediate and medium-term needs and permitted vendors to respond within the context of their own product paradigms (allowing, for example, both change-set– and version–based vendors to participate). The scoring, a modified market-based approach, provided both objective and subjective feedback, and prevented vendors from ‘ghosting’ the responses.

We were not as formal as a government procurement initiative—we actually finished our project—but we were thorough. One vendor technical consultant commented privately that while the RFP looked intimidating initially, he found it both comprehensive and very easy to answer.

Vendor self-assessments were merged with internal ratings and subjective analysis to provide an initial ranking. The RFP approach allowed us to swiftly separate out the wheat from the chaff, and objectively counter all “you should have chosen tool X” arguments.[19] Some of the requirements in the RFP were “hard,” meaning we would not consider a vendor that answered negatively. And some of the vendors were “inept,” meaning they would not respond, or failed to completely answer the RFP.[20]

We swiftly narrowed the field to seven vendors, then began follow-up calls to clarify technical questions and ensure that everybody on the acquisition team had a chance to comprehend each vendor's solution. Another round of scoring was performed, subjectively evaluating some of the vendor responses. The top two candidates were brought in-house for a proof-of-concept exercise. For this, we imported some source code and a month's worth of change requests, then re-ran a few recent development operations. Our eventual choice was MKS Integrity Suite 2006.

We knew that an enterprise CM solution was not going to be available out of the box. The majority of vendor representatives were good about arranging for technical contacts so that we could work out ways to implement enterprise CM in their systems. Most vendors provide some levels of support for geographically distributed development and complex organizations. Identifying support for the various technologies required balancing platforms and technologies directly supported against the need to build a scripted framework to integrate any unsupported bits.

Similarly, we knew that no vendors offered support for database CM. This is where having an experienced CM specialist at hand paid off. After understanding the problem and applying the Feynman problem-solving algorithm[21], Austin developed a new approach: Longacre Deployment Management.


[19]:  Ray has since used the RFP process on two more procurements at RBF: a corporate-wide archive system, and a document generation and printing system. The technique has been adopted by other large-scale procurements that are also sensitive to the “shelfware” issue. If this strategy interests you, Ray or Austin would be happy to consult.

[20]:  When you're filtering a list of candidates, there's nothing so satisfying as one that tries to be eliminated.

[21]:  The Feynman problem-solving algorithm, according to Murray Gell-Mann, is: (1) write down the problem; (2) think very hard; (3) write down the answer.

{mospagebreak title=New Process: LDM}

New process: Longacre Deployment Management

Our new CM tool was not enough to resolve the issues faced by the RBF development team. Since the majority of development was done in the MDS, we needed a workable solution to the database CM problem as well. After modeling the flows of different work products—Java, COBOL, and metadata—we separated the status of a change from the record of its installed location.

The eventual solution, named Longacre Deployment Management (LDM), derives from the need to keep track of the deployment of work products to different database instances, and from the fact that those changes, once deployed, cannot be reversed. All other aspects of CM are subordinated to this fact of life. LDM works by accepting the ‘forward only’ nature of deployment for individual updates, and adding a complete develop/test/rework flow using higher level objects.

The fact that RBF's software development incorporates many different technologies developed across several geographically separated offices forced LDM to use a high level of abstraction even for basic operations. Presently, LDM provides a single comprehensive technique for CM that supports almost every facet of complex enterprise development[22]. To keep this article from crossing the line from ‘long’ to ‘gargantuan,’ the technical details of LDM are discussed in a separate article. Curious CMers are invited to read “Technical Introduction to Longacre Deployment Management™,” also available on CM Crossroads.


[22]:  Except language: RBF's vendors, developers, and customers all share English as a common language.

{mospagebreak title=Conclusion}

Conclusion

Our solutions follow Ray's management style: assume that whatever must be done, can be done. Instead of focusing on “how to deploy Java changes” or “how to deploy SQL changes” or “how to deploy COBOL changes,” we assumed that those problems had been solved and went on to build the system at a higher level.

This is not to say that the challenges of managing and deploying the various technologies are trivial. Far from it. But those challenges have all been studied, and solutions exist for each of them. Our approach has been to permit those existing solutions to be used as much as possible, and to concentrate on building our solution based on existing, standard approaches. The value we have added comes from identifying similarities among commonplace activities and events, and abstracting those essentially-similar activities as the basis for a flexible system.

The elapsed time for the project was more than a year. In that time, Ray was able to organize the MDS adoption project into a functioning team, and Austin was able to establish consistent, repeatable procedures for software development. From zero to a stable, productive team delivering a new product every couple of weeks is a radical leap.

A big part of that leap derived from the metadata system itself. The MDS, when working as intended, gave a small team a lot of force. The MDS when properly managed—using sound CM principles—turned a lot of force into a lot of actual work. When all the different teams were in the traces together, pulling in harmony, their output was (and still is) impressive.

Consider this, first, a demonstration that it is possible to apply traditional CM principles, using existing, off-the-shelf CM tools, to enterprise systems—including databases.[23] LDM, described elsewhere, is a viable, functioning solution for integrating CM of database structure and content with CM of other, traditional software technologies. A high level of abstraction let us build a solution that deals nicely with radically different technologies, with different organizational cultures, and with a geographically distributed team.

To a lesser extent, this is an encouragement for current CM professionals and ‘R&D style’ software workers to investigate the ideas and products coming from the ITIL[24] market space. While some ITIL vendors are still focused on reporting which version of Windows is installed on every user's laptop, the existing CM vendors are making considerable strides into ITIL. Some of their implementation ideas are quite good.

The ‘enterprise’ philosophy of taking for granted well-understood development practices and incorporating them into a higher-level abstraction is compatible with and well suited for ‘IT style’ (as contrasted with ‘R&D style’) development, where a lot of technologies are contributing to a business operation. Our traceability implementation connects work items directly to the server(s) they are deployed on, and lets the users interpret the quality or acceptability of the changes on their own. But we believe that this approach is valid for all styles of development, and it represents a substantial step forward in CM for complex systems.

Automation and abstraction were the foundation of our new technique. A modern commercial tool enabled us to implement that technique quickly and effectively. The new technique itself came directly from looking at the development process as a system to be refactored. Each of these steps in turn provided a direct, tangible benefit. Together, they helped solve two big CM problems.


Footnotes

[1]:    ‘Metadata’ is data about data. A data dictionary or an XML schema, for example. A more basic example is a screen definition language, specifying the position and title of fields to be displayed, but leaving the field values themselves to be extracted from another data source.

[2]:    defined first as “a project or undertaking that is especially difficult, complicated, or risky.” Later comes “a business organization.” We intend the first sense of the word.

[3]:     “Technical Introduction to Location-Based CM,” Austin Hastings

[4]:     An insurance product is a type of policy in a single state. Because insurance is regulated by the states, U.S. insurers treat each different type of policy (Auto, Life, Home) as a different product in each state. With a few different types and 50 states to write them in, even a small insurer will have tens or hundreds of products.

[5]:     Service-Oriented Architecture, or SOA, is a system architecture that builds on independent ‘services,’ usually provided across a network, to support business users. See http://en.wikipedia.org/wiki/Service-oriented_architecture. SOA is frequently used to integrate ‘mainframe’ and ‘distributed’ components into a unified model.

[6]:     This was a side-effect of the technology transfer from the MDS vendor, not a requirement of the tool. While we did research the possibility of implementing a Private Workspace, it wasn't worth it.

[7]:     3rd-generation Programming Language. Contrast with 4GL.

[8]:     People who like sausage should never watch it made.

[9]:     Secure Shell, Remote Desktop Protocol, and Virtual Network Computing, respectively. All are ways to connect from one computer to another. SSH generally implies using a tty or command-line interface, but it can ‘tunnel’ the X windowing protocol. The other two are screen oriented, and so transport the entire desktop image.

[10]:   A venerable, widely-used product that has been end-of-lifed by Polytron Intersolv Merant Serena.

[11]:   A year-long accounting period not starting January 1. See http://en.wikipedia.org/wiki/Fiscal_year.

[12]:   Like teenage acne, the fact that it is common doesn't make it less of a problem.

[13]:   ‘Distributed’ is a mainframe-centric euphemism for “Unix and/or Windows-based”.

[14]:   Yes, there was a “related item” field on the requests. When migrating the data, we counted 36 requests with this field populated out of approximately 8000 requests. The use of the field was never explained to developers.

[15]:   Reified: treated as a discrete, first-class object. For transactions, the MDS maintains a “transactions” table, adding a new entry each time a SQL transaction is committed.

[16]:   SQL itself is order-sensitive (e.g., INSERT versus UPDATE) but extensions (MERGE) and careful coding can address that. This doesn't prevent the data from being sensitive to semantic ordering issues. For example, an INSERT and a DELETE may affect matching rows. Also, stored procedure triggers and key constraints can cause exceptions or bad behavior depending on when and how many times a statement is executed.

[17]:   This is not entirely a straight-line growth. “Previous” products are selected for legal compatibility rather than always using the most recently updated version.

[18]:   Tony Gargasz. If you happen to need a skilled VB contractor, drop us a line and we'll put you in touch with him.

[19]:   Ray has since used the RFP process on two more procurements at RBF: a corporate-wide archive system, and a document generation and printing system. The technique has been adopted by other large-scale procurements that are also sensitive to the “shelfware” issue. If this strategy interests you, Ray or Austin would be happy to consult.

[20]:   When you're filtering a list of candidates, there's nothing so satisfying as one that tries to be eliminated.

[21]:   The Feynman problem-solving algorithm, according to Murray Gell-Mann, is: (1) write down the problem; (2) think very hard; (3) write down the answer.

[22]:   Except language: RBF's vendors, developers, and customers all share English as a common language.

[23]:   Actually, consider this first an encouragement to hire Ray and Austin to help solve your problems.

[24]:   Information Technology Infrastructure Library.

Trackback(0)

Comments (2)add comment

Austin Hastings said:

Austin Hastings
...
Ann,

It's now up in the CMJournal for April: http://www.cmcrossroads.com/content/view/7910/259/

=Austin
 
April 21, 2007
Votes: +0

Ann Schelert said:

Ann Schelert
...
Hello,

I would like to read the article you refer "curious CMers" to - "Technical Introduction to Location-Based CM". However, I wasn't able to find this using the CMCrossroads search engine. Can you point me to where this resides?

Thanks,
Ann
 
April 04, 2007
Votes: +0

Write comment

You must be logged in to post a comment. Please register if you do not have an account yet.

busy
Last Updated on Thursday, 26 July 2007 17:45
 
buy celexa without prescription purchase zocor online no prescription furosemide online purchase proscar birth control online us order erection packs online no presctiption how to order requip tadacip purchase trandate noprescrition needed usa online pharmacy baclofen birth control online us revatio no prescription fedex ups buy levothroid tablets usa decadron without a prescription from us hytrin tablets online safe to buy generic evista from canada where can i get some plendil yasmin online without rx buy shuddha guggulu pills online zyprexa canada drug store tetracycline fast canada amantadine on line in the usa discount robaxin from usa ordering tenormin usa seroquel fda approved to buy without prescription purchase shuddha guggulu in us erection packs without prescription medication how to buy pariet buspar online without rx best site for zetia ordering buspar canada torsemide pills online in the usa buy metformin with paypal lisinopril purchase usa buy requip without prescription where to buy ditropan without a prescription augmentin over the counter buy aciclovir online canada over the counter drugs similar to abilify very cheap methotrexate order levitra super active online no presctiption xenical fda approved to buy without prescription purchase luvox in usa trimox pills buy voltaren from canada without rx cephalexin online from usa sumycin birth control online us us pharmacies online that sell pravachol buy isoniazid online no prescription buy clomid online overnight delivery calan online pharmacies with out prescription canada tretinoin tablets online xenical noprescrition needed canada online pharmacy moduretic where to buy in canada safe quetiapinum no precription indocin order online no prescription pharmacy buy drugs prednisolone diovan online usa oder mg tablets of cialis soft buy lamictal mg online discount proscar mg prednisone drug canadian pharmacy where can i buy prilosec tablets trental online without rx order isoniazid without rx buy zoloft online no prescription usa amantadine usa pharmacy buy glucophage xr without prescription singulair without prescrip female cialis cheap us pharmacy propranolol discount no prescription cardizem pills buy online order isoniazid on line usa cialis professional pills online in the canada order tretinoin online no prescription with a echeck sumycin canadian online overnight pharmacy buy roxithromycin online with out prescription paxil without a prescription from us buy ampicillin tablets canada best place to buy liposafe in canada buy amaryl canada inderal mg order biaxin without a perscription elocon with no subscription estrace online in usa buy singulair pills online alesse no rx discount diflucan from usa benicar online order lipothin to purchase without a prescription fucidin purchase glucotrol xl tablets buy ordering inderal on line us pharmacies online that sell plendil order prozac online without rx toprol xl drugstore com pricing cialis professional generic usa diovan buy online us buy yagara online in the united states without a prescription elimite buy online canada pill rx health order acivir pills products where to buy acticin order viagra sublingual on line usa safe lipitor no precription generic lithium usa acticin online without prescription vpxl birth control online us order trandate without prescription order fucidin without rx how to buy finpecia in canada levaquin online canadian bupropion birth control online canada best place to buy elavil without a prescription buy pravachol without a subscription a good web page to buy proventil with no script adalat buy no prescription canadian pharmacy online suprax sinequan on line in the usa buy medrol low cheap price purchase topamax online no prescription erythromycin online from usa diclofenac gel over the counter usa lipothin from usa remeron fast usa zyloprim without a perscription hyzaar without a prescription from us buy brand levitra canada purchase generic nizagara where can i get eurax from can i buy olistat in canada flonase lowest price canada buy alli without prescription citalopram canada drug store order female cialis online no prescription with a amex revatio with no rx ordering zenegra on line toprol xl fast canada cytotec in usa cialis soft order online accutane noprescrition needed usa online pharmacy risperdal canada companies only buy prozac online buy motilium online no prescription usa canada buy viagra super active without prescription skelaxin fast canada order sominex online no prescription with a visa safe to buy generic crestor from usa depakote online canadian canada buy albendazole without prescription buy vytorin online overnight delivery purchase periactin on line in canada buy bupron sr without a subscription order altace pills viagra soft online order where can i buy levaquin tablets order lantus online no prescription with a visa fucidin lowest price online buy flagyl online no prescription citalopram generic name how to purchase liposafe is there a shortage of allegra acticin order online no prescription purchase brand amoxil in canada colchicine online in usa pravachol no prescription needed yagara from china motilium online in usa buy cipro online from canada pill rx health grifulvin v products buy lipitor have no prescription kamagra online canada lantus trusted online drug stores in canada where can i get some actos where to buy nitrofurantoin online canada duetact online purchase actoplus met from canada without rx buy avalide online us no prescription buy grifulvin v online with no prescription cheap viagra professional mg duetact buy without ordering minocin usa best place to buy suprax without a prescription best site for xenical bupron sr buy without yagara canada over the counter medicine that acts as roxithromycin motrin without a script best place to buy celebrex in usa buy deltasone pills in the us furosemide without a prescription from us orlistat in usa femara birth control online canada medrol online order where to buy ventolin with mastercard buy zocor online canada where can i buy cialis professional tablets safe to buy generic anafranil from canada tamoxifen pricing cheapest viagra paypal buy levlen online safely where could i buy aciphex without prescription how to buy inderal flonase canada companies only cilest canada drug store where to buy flonase online canada clomid order online cost of mail nizagara adalat best online non prescription pharmacy brand levitra mg buy celebrex lowest price online canada and plavix levitra online from canada atarax shopping where to buy seroquel online without rx where to buy brand amoxil online canada purchasing voltaren online fluoxetine online from canada evista tablets buy altace without prescription pills levlen where to get plavix pills online in the canada purchase flagyl er in us generic combivent usa tenormin pills online in the usa buy allopurinol with paypal discount luvox from usa oder mg tablets of brand levitra buy sarafem no prescription flonase on line in the usa buy brand cialis pills online best place to buy singulair in usa order compazine online no prescription with a amex where to buy pyridium without a prescription brand amoxil generic usa buy cialis online no prescription canada clomid with no perscription hyzaar order online no prescription vytorin no prescription fedex ups canada buy terramycin without prescription canada pharmacies online that sell kamagra buy hyzaar mg online metoclopramide buy without buy frumil online without prescription purchase generic cleocin gel mail order buspar online buy ephedraxin no prescription celexa no script zyvox medication on line order zyloprim online no prescription with a visa can i buy arimidex in canada arimidex with no rx where can i buy cialis soft tablets buy combivent online overnight delivery buy avapro xr without prescription buy tinidazole online canada buy nolvadex tablets canada atarax cheapest rate order female cialis without prescription where to buy prilosec online usa cialis super active buy online us buy vytorin online from usa buy indocin without rx where can i get some tadacip risperdal tablets online quetiapinum online with out prescription purchase pariet on line in usa how to order biaxin online protonix drugstore com pricing zyprexa from usa over the counter medicine that acts as antivert isoniazid buy without cozaar order in the us zocor canada sale clozaril over the counter drugs cheap diovan mg cheap adalat mg best site for periactin augmentin cheap canada pharmacy order terramycin online no prescription with a mastercard buy phenergan tablets canada buy moduretic with paypal is tetracycline available on line in canada pharmacy buy drugs vasotec nizoral to buy in the canada without a prescription betnovate from china endep online from usa prilosec without prescription buy differin online no prescription canada tadacip lowest price order kamagra online no prescription with a visa erythromycin no prescription cost of mail tadacip digoxin medication on line where to buy fluoxetine online usa where to buy cafergot online without rx generic provera canada generic flagyl canada levitra plus medication on line buy plendil without prescription viagra sublingual usa no prescription clomid mg usa paroxetine to purchase without a prescription buy motrin without prescription canadian pharmacy online terramycin best site for mobic buy accutane online without a prescription buy grifulvin v online from canada aricept fda approved to buy without prescription remeron drug in usa pharmacy discount coumadin otc voltaren lowest price online order zoloft pills purchase altace in us safe zofran no prescription mobic to buy in the canada without a prescription erection packs online canadian skelaxin cheapest rate zocor online purchase trazodone without a prescription from canada order propranolol online doxycycline without a prescription how to buy arimidex glucotrol xl birth control online canada order grifulvin v online no prescription with a mastercard where to buy xenical without a prescription ortho tri cyclen on line in the canada arimidex canada sale canadian drug company requip buy zofran mg online for flonase canada drug store viagra super active without a prescription vpxl without a prescription from canada order lopressor online no prescription with a mastercard non prescription erythromycin bupropion canada valtrex non perscription countries where to buy silagra with amex aldactone buy without buy metoclopramide online safely pill rx health order levlen products buy bactroban tablets us terramycin buy canada hytrin on line in the canada exelon no script where to buy zyloprim online usa canada requip tablets online actos order online no prescription discount zovirax from usa safe fluconazol no precription online norvasc overnight delivery where do i cozaar in usa micardis without a prescription from us innopran xl drug in canada pharmacy orlistat order online how to buy depakote online order acticin online without rx grifulvin v pills buy buy trandate mg online for cardura no prescription overnight delivery prilosec no script safe exelon no precription betaval over counter metoclopramide over counter furosemide shopping toradol mg no prescription online grifulvin v with no prescription canada pharmacies online that sell lamisil ventolin over the counter canada where to buy coumadin without a prescription discount isoniazid otc cipro no prescription fedex ups vpxl to purchase without a prescription brand amoxil buy no prescription propecia lowest price online safe to buy generic naprosyn from usa actoplus met canadian online overnight pharmacy doxazosin online in usa generic xenical usa avodart over counter sominex online from canada over the counter buspar tretinoin over counter baclofen online order suprax us companies only best place to buy vermox in canada buy alli mg where to buy prednisolone the chepest cialis buy clopidogrelum online no prescription how to buy vpxl online actoplus met without prescrip tadacip non perscription countries levitra professional drug canadian pharmacy what is allegra mg used to treat buy betaval online canada no prescription purchasing ampicillin online phenergan mg order usa buy ventolin without prescription canadian robaxin order xenical from canada without prescription usa buy clozaril without prescription levitra professional medication on line canadian torsemide i want to pay some bactroban order tadacip online adalat online from usa combivent drug in canada pharmacy noroxin lowest price online buy generic zoloft online no prescription where to buy methotrexate with visa provera where can i buy mircette fast canada viagra professional online order minipress delivered to your home buy zocor xr without prescription arimidex noprescrition needed canada online pharmacy order female viagra on line usa innopran xl cheapest rate online pharmacy quetiapinum cheap wellbutrin sr mg innopran xl online from canada isoniazid mg canadian rx mircette without prescription canadian pharmacy online compazine buy inderal mg online for pill rx health order antivert products astelin no prescription fedex ups fluoxetine pct buy how to buy cabgolin online discount pravachol otc where do i combivent in canada desyrel without a prescription from us buy pravachol canada buy sertralina online from canada pariet drug in canada pharmacy discount requip mg nizagara pharmacy mail order safe to buy generic skelaxin from usa fluoxetine to buy in the usa without a prescription buy fluoxetine online overnight delivery order indocin online canada pyridium without a prescription from us zyban canada endep buy canada levitra canada no prescription depakote canada no prescription calan online advair diskus cheap us pharmacy pharmacy buy drugs astelin buy ranitidine mg online arimidex with no perscription trimox online in canada order differin online no prescription with a amex order calan from usa without prescription desyrel buy canada lamictal mg usa where do i lotensin in canada purchase levothroid online no prescription silagra pct buy purchase unisom online no prescription betaval usa pharmacy hytrin usa sale buy valtrex with paypal propecia over counter buy cymbalta canada buy motrin pills in the canada purchase neurontin in canada where can i get cymbalta from liposafe no prescription clonidine pills buy purchasing acticin online mail order levitra professional online where to buy betnovate with echeck order alesse online no prescription with a echeck cialis jelly online usa biaxin no prescription needed buy torsemide tablets canada sinequan buy canada buy buspar tablets usa paxil online in usa quetiapinum to buy in the canada without a prescription cialis professional purchase buy bactrim without prescription buy flomax online safely buy clopidogrelum without a subscription canadian drug company differin i want to pay some prilosec can i order levlen online cheapest place to buy acivir pills floxin discount no prescription us pharmacies online that sell norvasc is there a shortage of sarafem how to buy viagra super active in canada where to buy periactin drugs similar to liposafe zithromax over the counter usa i want to pay some allopurinol pharmacy buy drugs flonase purchase ceftin mg buy viagra professional online canada over the counter medicine propecia canadian drug company tretinoin buy avodart online no prescription usa xenical birth control online us trimox drug in usa pharmacy where can i get some hyzaar buy fucidin online us no prescription bentyl where to buy in canada purchase generic florinef viagra soft no script buy effexor xr xr without prescription purchasing viagra sublingual online can i buy brand amoxil in canada purchase abilify lowest price online metoclopramide with no prescription acticin discount no prescription liposafe tablets buy can i buy propecia in canada safe acivir pills no prescription mail order indocin online where to buy lantus with echeck vpxl fda approved to buy without prescription online pharmacy levitra professional actoplus met buy canada levitra no prescription tretinoin over the counter where to buy colchicine bupropion drug canadian pharmacy can i order valtrex online antabuse where to buy in canada order flagyl from usa without prescription buy female viagra online no prescription usa pill rx health order viagra products buy innopran xl online from canada thyroxine with no subscription protonix online usa can you buy benicar over the counter lexapro cheapest rate tinidazole online pharmacies with out prescription order synthroid online canada paroxetine lowest price online minocin canada companies only buy periactin online in the united states without a prescription risperdal online pharmacy shipped to canada is there a shortage of cipro order trimox online without rx buy cleocin gel tablets purchase alesse online no prescription order prozac online canada synthroid online purchase synthroid medication overnight delivery what is bupron sr mg used to treat buy generic remeron online no prescription safe to buy generic quetiapinum from canada accutane fda approved to buy without prescription where do i mircette in canada pharmacy buy drugs zetia a good web page to buy frumil with no script endep buy usa clonidine without prescription floxin pharmacy mail order protonix buy canada minipress no rx silagra to buy in the canada without a prescription buy effexor xr have no prescription purchase doxycycline lowest price trimox from china cytotec online from usa how to buy nizoral online purchase nexium lowest price buy toprol xl online without a prescription combivent to purchase without a prescription zydis fast usa order exelon online no presctiption biaxin online no prescription lantus without a perscription ordering cafergot canada canadian drug company flagyl er differin to purchase without a prescription purchase lamictal in canada female cialis drug in usa pharmacy where do i prozac in usa ordering desyrel canada very cheap prozac i want to pay some glucophage torsemide best online non prescription pharmacy where do i revatio in canada buy generic evista online with prescription how to buy proventil online mircette canada companies only inderal pricing order norvasc online no presctiption glucophage drug in canada pharmacy buy diovan online from canada where can i get kamagra from seroquel noprescrition needed canada online pharmacy over the counter medicine abilify buy grifulvin v online without a prescription over the counter drugs similar to alesse pill rx health order glucophage products how to purchase clopidogrelum a good web page to buy sinequan with no script lithium drug canadian pharmacy purchase endep online no prescription biaxin over the counter usa online vermox overnight delivery vasotec mg buy purchase cleocin gel in canada bactrim to buy where to buy cialis jelly online usa avapro purchase clozaril no script order revatio on line usa how to order diflucan online purchase reglan in canada non prescription zofran purchase digoxin lowest price accutane tablets online buy finpecia with no script no rx pharmacies buy levitra pills in the us bactroban no rx synthroid canadian online zydis online without rx buy cilest without prescription coumadin canadian medications without prescription no prescription micardis buy bupropion with paypal safe to buy generic olistat from usa ortho tri cyclen over the counter usa norvasc without a perscription norvasc buy online us buy levitra plus online with out prescription buy cozaar online with out prescription antabuse without a script discount cymbalta from canada micardis drug canadian pharmacy online elimite with no prescription discount valtrex mg buy zyprexa pills in the us ranitidine online usa brand cialis usa no prescription endep cheap us pharmacy cafergot pricing buy astelin online from usa buy clozaril online canada no prescription order lotrisone on line canada cheap voltaren inderal drugstore com pricing canada pharmacies online that sell augmentin buy aciclovir without a subscription viagra plus purchase neurontin over the counter usa purchase erection packs on line in usa revatio over the counter drugs cardura usa pharmacy buy tricor online us no prescription proscar without prescription buy xenical online us no prescription endep where can i buy buy evista online in the united states without a prescription fucidin pills online in the usa where can i buy endep propecia without prescription pills purchase generic furosemide buy vpxl no prescription buy viagra professional with a mastercard buy sinequan mg online pharmacy noroxin over the counter medicine dostinex cheap canadian erection packs no prescription propecia where to get buy skelaxin tablets usa digoxin buy canada lamictal without prescription medication pill rx health acticin products non prescription fucidin hyzaar without a script buy cymbalta pills online cafergot mg buy pill rx health order trandate products ordering female viagra on line online prevacid with no prescription order bupron sr online no prescription with a mastercard order seroquel online no prescription with a amex purchase yasmin in canada toradol online usa cardura canadian online purchasing cardizem online lisinopril order online no prescription buy lisinopril mg online for furosemide usa sale glucophage lowest price purchase acivir pills on line in usa doxazosin without subscription sertralina us companies only buy cymbalta online without prescription liposafe buy without altace generic usa where can i buy betaval buspar generic usa safe zyvox no prescription toradol with prescription buy generic mobic online with prescription suhagra to buy vpxl online from canada buy toradol pills online buy dostinex mg a good web page to buy amitriptyline with no script diclofenac gel online from usa buy generic levothroid online with prescription discount pravachol from canada usa buy anafranil without prescription best site for paroxetine is brand amoxil available on line in canada advair diskus without a prescription order cephalexin pills moduretic birth control online us no script aciphex mg zyvox mg canadian rx buy naprosyn with paypal buy female viagra pills online accutane trusted online drug stores in canada cheap coreg mg adalat canada companies only pharmacy buy drugs isoniazid zovirax shopping how to buy viagra soft in canada buy estrace pills in the canada anafranil online no prescription hytrin with no subscription buy lipitor without rx buy accutane online with no prescription online pharmacy abilify cardizem order online safe arimidex no precription ephedraxin online canadian over the counter medicine lamisil where do i hydrochlorothiazide in usa isoniazid on line in the usa revatio online canada purchase nizoral online no prescription brand viagra buy usa cheapest place to buy lipitor order allegra from canada without prescription flagyl online in canada buy synthroid mg online can you buy levaquin over the counter the chepest paxil coreg us companies only where to buy tetracycline online without rx deltasone mg usa where to buy ranitidine brand levitra drug in usa pharmacy premarin drug canadian pharmacy buy toradol xr without prescription can you buy allegra over the counter order hydrochlorothiazide from canada without prescription digoxin cheap us pharmacy buy suprax mg online oder mg tablets of vytorin minocycline buy no prescription florinef over the counter usa purchase generic effexor xr i want to pay some protonix amantadine online pharmacies with out prescription hyzaar birth control online canada florinef no prescription needed where to buy protonix online usa estrace without a prescription from canada arimidex cheap canada pharmacy buy vermox online us no prescription calan canada no prescription order paxil online no prescription with a visa canada bupron sr tablets online online avapro overnight delivery digoxin canada sale canada and advair diskus flonase mg canada colchicine on line in the canada synthroid online without prescription purchase innopran xl online no prescription tinidazole fda approved to buy without prescription buy albendazole online thru paypals shuddha guggulu canadian online revatio from canada with no prescription ordering compazine on line where to buy singulair with visa purchase augmentin on line in canada discount motilium of canada purchase avalide in us buy hytrin tablets us purchase generic deltasone purchase avapro in usa deltasone without a prescription from us buy benicar tablets usa usa buy zyban without prescription valtrex buy without purchase trental lowest price where to buy lamictal online without rx order zestril online canada differin where to buy in canada zenegra purchase buy mobic online without a prescription zyban buy usa safe toprol xl no precription best place to buy levlen without a prescription purchase motilium mg where can i buy valtrex buy sumycin tablets us order zyloprim rx where could i buy allegra without prescription discount viagra jelly mg femara over the counter can i buy aldactone in canada buy motilium mg viagra soft us companies only where to buy ortho tri cyclen mg order abilify on line canada trazodone generic canada requip over the counter avodart non perscription countries buy valtrex online from usa lipitor birth control online us buy hydrochlorothiazide online no prescription usa is dilantin available on line in canada periactin no prescription fedex ups discount glucotrol xl otc zoloft canada companies only order lipitor no rx canadian pharmacy discount furosemide otc what is amoxil mg used to treat clonidine with no rx mircette lowest price oder mg tablets of ortho tri cyclen buy motilium online us no prescription over the counter medicine astelin wellbutrin sr mg canada lotrisone buy without safe torsemide no precription zetia without a perscription protonix without subscription canadian terramycin florinef to purchase without a prescription where to buy stromectol mg buy exelon canada buy zyloprim have no prescription what is differin mg used to treat best place to buy aricept without a prescription trental pills buy online buy estrace with paypal buy propranolol online no prescription usa very cheap tamoxifen buy zovirax tablets us buy neurontin no prescription luvox with no rx very cheap atarax baclofen online from canada purchase effexor xr lowest price best place to buy micardis in canada order avalide pills provera mg canada can i order clonidine online is there a shortage of motilium safe amantadine no prescription naprosyn online in canada periactin medication on line buy orlistat online no prescription usa neurontin shopping decadron pills buy online where to buy vermox with visa discount indocin otc purchase clomid mg purchase generic pravachol toradol without a perscription flagyl er buy without no prescription albendazole erythromycin non perscription countries what is cytotec mg used to treat canada buy zyprexa without prescription allegra order in the us where to buy remeron mg where to buy medrol with amex usa buy ceftin without prescription how to buy cardizem in canada wellbutrin sr fda approved to buy without prescription lantus online pharmacies with out prescription wellbutrin sr best online non prescription pharmacy zenegra to buy in the canada without a prescription altace without a prescription from us celexa without prescription medication cialis super active tablets buy order crestor online no prescription with a echeck tenormin pricing order female viagra on line canada lisinopril generic canada zocor buy canada buy generic cialis online no prescription zithromax birth control online canada albendazole pills buy online order effexor xr on line usa proventil without subscription pharmacy buy drugs minocin voltaren mg canadian rx purchase voltaren in usa where to buy sarafem online usa cilest to buy in the canada without a prescription mail order plendil online very cheap combivent canadian reglan cost of mail nitroglycerin buy methotrexate mg online over the counter viagra super active what is augmentin mg used to treat ordering zovirax usa cytotec pills online in the canada where could i buy sarafem without prescription buy calan tablets us order cafergot without prescription where can i buy cialis super active tablets best place to buy clopidogrelum online tretinoin mg canadian rx where can i buy metoclopramide tablets can i buy motilium in canada purchase protonix lowest price where do i levitra plus in canada colchicine canadian medications without prescription over the counter drugs similar to sarafem purchase vasotec on line in usa duetact online from usa where can i get some cipro buy generic requip online with prescription order tricor without rx remeron with no subscription exelon order in the us evista to buy in the usa without a prescription amoxil buy without oder mg tablets of clonidine purchase furosemide in canada diovan birth control online canada order kamagra without prescription nitroglycerin cheap us pharmacy discount levaquin from usa cheap florinef methotrexate pharmacy mail order tinidazole birth control online canada nexium where can i buy terramycin drug in usa pharmacy lamictal online canadian diflucan on line in the usa propecia online no prescription cipro generic usa ortho tri cyclen no prescription order colchicine online no presctiption sumycin with prescription buy motrin mg online for i want to pay some diclofenac gel is there a shortage of acivir pills how to buy actoplus met in canada viagra drug canadian pharmacy purchase flagyl er on line in canada alli online order roxithromycin online safe to buy generic viagra jelly from usa buy norvasc online canada no prescription noroxin delivered to your home buy generic periactin online with prescription buy zyloprim tablets us online pharmacy minipress discount naprosyn from usa pariet buy online us buy tenormin online canada can you buy lipothin over the counter compazine without subscription buy celexa online with no prescription non prescription nexium brand cialis for purchase without a prescription order trimox from canada without prescription trimox without prescription medication yagara online in canada discount betnovate of canada glucophage buy usa over the counter nitroglycerin order flagyl rx zetia cheap us pharmacy oder mg tablets of suhagra levaquin without a prescription from canada a good web page to buy minocin with no script olistat usa sale where to buy cialis purchase levothroid in usa a good web page to buy clozaril with no script buy prilosec online no prescription usa brand levitra no script trazodone buy no prescription buy haldol online no prescription canada order yagara online flagyl non perscription countries discount zetia otc where can i get allegra from lotrisone birth control online canada lantus canadian online drugs similar to grifulvin v discount suhagra from canada noroxin canadian medications without prescription can i order noroxin online vasotec usa sale buy levitra super active no prescription canada hydrochlorothiazide tablets online levlen mg usa where to buy hytrin online without rx purchase naprosyn on line in usa acticin where to get order tenormin from usa without prescription order levothroid without rx lipothin with no rx buy tamoxifen without rx antabuse mg order purchase generic arimidex buy inderal online safely lipitor without a prescription from canada stromectol order online no prescription flomax online usa fluconazol with no rx purchase cleocin gel online no prescription zetia no script online medrol overnight delivery erythromycin to purchase without a prescription buy indocin with no script desyrel usa pharmacy norvasc best online non prescription pharmacy robaxin over the counter canada lithium mg usa usa buy motrin without prescription order finpecia online no prescription with a visa where to buy zenegra online without rx where can i buy deltasone mg indocin canada no prescription betaval without rx online naprosyn overnight delivery zetia usa sale mobic where to get digoxin from usa zanaflex delivered to your home buy elocon with paypal florinef from china zyban to buy in the canada without a prescription lotensin order in the us bupropion without rx zocor without a prescription zyloprim online canada levitra super active without a prescription from us buspar without a prescription female cialis medication on line buy clomid online from canada cafergot over the counter usa coumadin from canada without rx where can i get viagra plus from where can i get flagyl from purchase eurax on line in usa elavil canada no prescription order thyroxine online no prescription with a echeck noroxin online in usa bupropion to buy dilantin drugstore com pricing order pariet online canada canada buy amantadine without prescription amoxil without a prescription from us synthroid best online non prescription pharmacy erythromycin noprescrition needed canada online pharmacy buy cardura without rx buy aciclovir xr without prescription where do i zyban in usa online actos overnight delivery what is brand viagra mg used to treat shuddha guggulu without prescription pills ordering bupron sr on line where to buy cafergot with mastercard cheap bactrim mg i want to pay some lexapro prilosec non perscription countries isoniazid over the counter canada innopran xl pills online in the canada how to buy provera buy ventolin without a subscription oder mg tablets of wellbutrin sr safe to buy generic bentyl from usa best place to buy tadacip in canada order clonidine without rx aldactone without prescription buy moduretic mg where could i buy provera without prescription trandate usa pharmacy prednisone on line in the usa seroquel online canada provera to buy in the usa without a prescription voltaren online order bactroban where to get safe to buy generic seroquel from canada finpecia us companies only alesse where to get fluoxetine delivered to your home best site for pyridium lipothin us companies only erection packs purchase sumycin without prescrip moduretic medication overnight delivery where can i buy fluoxetine no script topamax mg cheapest proscar paypal safe to buy generic adalat from canada olistat online no prescription avapro medication overnight delivery where can i buy duetact mg a good web page to buy dostinex with no script can you buy pyridium over the counter aciphex over the counter canada noroxin usa pharmacy amantadine online order best place to buy levlen online oder mg tablets of moduretic no prescription isoniazid where can i get viagra jelly from buy generic nitroglycerin online with prescription cephalexin online pharmacies with out prescription where do i innopran xl in usa vermox generic usa sarafem canada purchase generic proventil buy bactroban tablets canada buy diflucan without prescription lopressor without prescription medication where to buy augmentin mg buy abilify pills in the us buy elocon mg phenergan canada companies only buy prilosec with paypal order amitriptyline online no prescription with a amex buy robaxin mg online for non prescription lipitor maxalt over counter how to buy citalopram coumadin order online no prescription purchase zofran on line in usa discount zyvox otc pharmacy buy drugs tenormin order cafergot online canada zovirax canadian online deltasone online in usa best place to buy celebrex in canada is there a shortage of zenegra cialis jelly noprescrition needed canada online pharmacy anafranil without subscription where to buy ditropan with mastercard safe methotrexate no precription alli non perscription countries indocin online without prescription glucophage tablets buy yagara without a perscription torsemide noprescrition needed canada online pharmacy best place to buy sarafem in usa order allopurinol online no prescription with a echeck combivent medication overnight delivery very cheap kamagra isoniazid order online no prescription aciclovir pharmacy mail order tretinoin with prescription over the counter drugs similar to zofran buy cephalexin online no prescription canada celebrex mg usa lipothin online no prescription usa buy plendil without prescription cleocin gel canada drug store requip no prescription needed canadian online pharmacy thyroxine canada pharmacy vpxl with no perscription tinidazole order in the us zoloft online without prescription female cialis canada companies only ordering levothroid on line best place to buy toradol in usa cardizem trusted online drug stores in canada over the counter medicine that acts as femara purchasing advair diskus online what is clozaril mg used to treat buy pariet online without a prescription where can i buy cilest mg prozac canadian online overnight pharmacy buy floxin no prescription amitriptyline to purchase without a prescription tadacip medication on line order fucidin online no presctiption no script zovirax mg floxin online order motrin fda approved to buy without prescription erythromycin birth control online us buy naprosyn pills in the canada prednisolone lowest price online torsemide usa pharmacy nexium buy online canada best site for haldol order provera without prescription buy topamax low cheap price provera noprescrition needed usa online pharmacy how to order lexapro where to buy celebrex mg tretinoin where to buy in canada over the counter cipro buy haldol pills in the canada order levlen rx buy levitra super active canada buy grifulvin v tablets order lisinopril online no prescription with a amex suprax online without prescription antabuse medication on line order premarin online no presctiption usa buy levlen without prescription bupron sr pricing trental lowest price clopidogrelum canada online no prescription digoxin to purchase without a prescription female cialis pharmacy mail order buy terramycin tablets us order maxalt online no presctiption silagra buy usa avapro without a script levitra plus without a prescription from us pharmacy buy drugs acivir pills naprosyn with no perscription buy antivert with paypal best place to buy acivir pills online over the counter revatio cheapest zithromax paypal cheapest anafranil paypal tricor fast canada paxil birth control online us levitra professional pct buy discount avapro of canada buy allegra tablets usa how to order tinidazole online where can i buy norvasc trazodone mg order phenergan online from usa glucotrol xl buy usa where can i buy revatio tablets where to buy zoloft with amex buy amitriptyline pills online purchasing ceftin online buy tetracycline online without a prescription safe frumil no precription no script brand cialis mg buy tetracycline with no script reglan buy without where can i buy stromectol mg synthroid without prescrip where to buy antivert with echeck singulair order in the us neurontin from canada flagyl no script betnovate online yasmin no prescription needed canadian online pharmacy order aciphex on line canada safe lipothin no precription buy levitra super active online without a prescription canadian lasix actoplus met over the counter discount cialis super active mg cipro canada no prescription endep over the counter usa ordering baclofen usa reglan in usa order lithium online no prescription with a mastercard maxalt usa sale evista pct buy remeron canada acticin without a prescription buy quetiapinum online without a prescription pill rx health coreg products bystolic canada pharmacy bystolic pills online in the canada order aciphex no rx canadian pharmacy digoxin online canada the chepest diclofenac avapro over the counter canada can you buy prozac over the counter toprol xl from usa cefixime medication overnight delivery grifulvin v on line in the canada order lasix online no prescription with a visa buy vasotec online without prescription flonase drug canadian pharmacy buy zocor with a mastercard levitra plus without a script safe crestor no precription cheap inderal crestor to purchase without a prescription ampicillin delivered to your home buy diclofenac gel mg online for bactroban purchase anafranil no prescription fedex ups xenical for purchase without a prescription buy combivent online without a prescription buy tinidazole tablets us tetracycline without a perscription generic avapro usa metoclopramide usa sale where do i cafergot in usa zanaflex usa no prescription buy nizagara online with no prescription order orlistat online no presctiption where to buy viagra professional online without rx order elocon without rx premarin online without rx where to buy micardis online without rx purchase liposafe online no prescription best place to buy phenergan without a prescription buy kamagra online in the united states without a prescription zovirax from usa buy naprosyn online overnight delivery celebrex canada sale buy celebrex tablets usa lipothin no prescription needed canadian online pharmacy hytrin canada online no prescription buy elimite online from usa brand cialis no prescription overnight delivery where can i buy remeron mg where to buy fluconazol online without rx very cheap floxin estrace drug in canada pharmacy cheap canadian bentyl no prescription order dilantin pills mircette no prescription needed where to buy valtrex with echeck ordering ephedraxin on line bactroban online in usa luvox no prescription overnight delivery sarafem non perscription countries zofran to buy in the canada without a prescription buy elocon online without prescription purchase viagra plus on line in usa purchase generic levitra plus very cheap adalat levitra plus for purchase without a prescription bentyl canadian online pharmacy buy drugs cephalexin buy aricept online is there a shortage of kamagra phenergan noprescrition needed usa online pharmacy medrol delivered to your home citalopram without a perscription buy bystolic online without prescription noroxin discount no prescription avapro pills buy synthroid over the counter drugs order synthroid pills zithromax online pharmacies with out prescription diclofenac in usa can i buy prednisone in canada diovan where to buy in canada zetia canadian online cheap canadian acticin no prescription pravachol canada online no prescription acivir pills us companies only buy augmentin pills in the us is coumadin available on line in canada buy cialis super active online without a prescription buy colchicine online us no prescription effexor xr buy canada purchase bystolic lowest price order celebrex online no prescription with a echeck lithium canadian medications without prescription actos online without prescription suprax pharmacy mail order discount doxycycline otc where to buy plendil online canada generic moduretic usa colchicine lowest price tamoxifen drug in usa pharmacy buy revatio mg online purchase trimox lowest price canada and exelon fucidin online in canada strattera trusted online drug stores in canada non prescription kamagra order valtrex without rx augmentin pricing where do i desyrel in usa buy elocon online canada where can i buy vermox tablets vasotec online pharmacies with out prescription suhagra canada where can i buy effexor xr tablets order provera online no prescription with a visa hyzaar mg usa purchase diclofenac on line in usa bupron sr where can i buy very cheap nexium zanaflex buy without accutane where can i buy buy zocor tablets cialis professional from canada without rx drugs similar to risperdal how to buy minocycline online cozaar from usa purchase coreg in canada luvox to buy in the usa without a prescription purchase citalopram in usa where to buy effexor xr with amex unisom from canada buy actoplus met online from usa minocin online without rx celexa pills buy ventolin canada drug store how to buy levothroid risperdal online canada pravachol discount no prescription buy female viagra tablets order nizagara rx where to buy flomax with echeck buy seroquel online no prescription usa how to order hydrochlorothiazide online strattera online purchase buy tretinoin pills in the canada order betnovate from usa without prescription mail order levitra super active online methotrexate online in usa buy celebrex online nexium mg canada cytotec cheap canada pharmacy cialis soft canada companies only duetact pricing pill rx health abilify products acivir pills online no prescription paxil with prescription where do i plendil in usa aciphex with prescription where to buy vasotec mg buy zenegra pills in the canada buy viagra sublingual mg online femara with no subscription safe to buy generic effexor xr from canada discount tricor from usa purchase elimite online no prescription order orlistat from canada without prescription depakote order online can i order cafergot online floxin canadian online overnight pharmacy depakote canada where can i buy sertralina online without a prescription zocor without a script lotrisone no prescription needed order viagra sublingual no rx canadian pharmacy where do i minipress in canada where to buy exelon online without rx buy plendil online without prescription purchasing celebrex online canada buy clozaril without prescription zyprexa over the counter usa where can i buy tenormin tablets order erythromycin online no prescription with a echeck non prescription cialis jelly brand amoxil buy online canada buy cialis soft online canada no prescription order crestor online no prescription with a amex clozaril buy canada amaryl canadian online cytotec no prescription fedex ups buy zovirax canada pill rx health benicar products zestril mg no prescription over the counter drugs similar to triamterene endep no prescription overnight delivery online pharmacy yagara isoniazid no script how to buy brand levitra online silagra noprescrition needed usa online pharmacy brand cialis canadian online best place to buy zoloft without a prescription mail order naprosyn online quetiapinum with prescription toprol xl generic name order revia on line canada where to buy lamisil with visa buy brand levitra online no prescription canada online acticin overnight delivery colchicine usa no prescription revia buy usa diclofenac pricing paroxetine on line in the usa sumycin generic canada i want to pay some bupropion purchase viagra online no prescription bupropion no prescription female viagra without a prescription from canada buy cymbalta mg buy metoclopramide online overnight delivery pravachol usa no prescription ordering motilium usa buy flonase pills in the canada where can i buy glucotrol xl buy generic colchicine online no prescription no prescription brand cialis differin buy without buy zydis without prescription tamoxifen discount no prescription order retin a online no prescription with a echeck colchicine delivered to your home levlen discount no prescription crestor no script flonase no prescription needed canadian online pharmacy alesse cheapest rate zocor over the counter metoclopramide buy online us buy viagra plus online from canada buy mobic no prescription levitra super active mg canada a good web page to buy lotensin with no script noroxin canada pharmacy order bupropion no rx canadian pharmacy over the counter lipothin purchasing viagra professional online purchase zanaflex on line in usa buy plavix without rx paroxetine without prescription pills viagra soft fast canada premarin best online non prescription pharmacy how to order cephalexin online abilify online norvasc medication on line order stromectol no rx canadian pharmacy vermox on line in the canada over the counter medicine that acts as tretinoin cilest no prescription overnight delivery pill rx health order zocor products prednisolone canada companies only nolvadex buy online us purchase nizoral on line in usa buy paxil online no prescription usa drugs similar to lithium canada and cardizem where to buy accutane online without rx buy brand levitra without a subscription pill rx health hytrin products buy cephalexin tablets usa doxazosin buy online canada canada buy glucotrol xl without prescription order seroquel online no prescription with a mastercard exelon over counter nitrofurantoin canada online no prescription safe zanaflex no prescription where can i buy albendazole online without a prescription how to buy erection packs methotrexate no prescription fedex ups coreg purchase cafergot mg canadian rx deltasone pills online in the canada non prescription erection packs purchase prednisone in usa buy remeron no prescription where can i get some levaquin purchase plendil in canada cost of mail floxin brand levitra order online avalide from canada with no prescription very cheap amantadine best place to buy erection packs in usa order tamoxifen on line usa oder mg tablets of lipothin order acivir pills on line usa buy antabuse low cheap price cheapest place to buy differin glucophage discount no prescription order accutane on line canada antivert online canadian plavix cheapest rate toradol cheap us pharmacy usa buy diflucan without prescription buy torsemide online canada cialis professional canada online no prescription lipothin where can i buy generic cozaar usa xenical without a perscription florinef online purchase doxazosin buy no prescription i want to pay some lithium zyban order online mircette online pharmacies with out prescription colchicine online usa valtrex shopping order tetracycline on line usa brand cialis canadian medications without prescription pyridium online no prescription biaxin noprescrition needed canada online pharmacy online celexa with no prescription hyzaar without a perscription fluconazol no prescription overnight delivery cheapest place to buy lotensin zoloft buy online canada female cialis mg order tricor lowest price sarafem online in usa florinef pills online in the usa skelaxin fda approved to buy without prescription lipitor canada pharmacy order protonix online no presctiption albendazole online pharmacy shipped to canada allopurinol no prescription needed canadian online pharmacy no prescription cialis jelly order lexapro online where to buy augmentin online usa buy levothroid with no script buy vytorin online from canada canadian pharmacy online arimidex cipro no prescription overnight delivery coreg medication on line requip online from canada how to purchase florinef female viagra where to buy in canada where to buy tretinoin online canada where to buy revia online usa accutane buy no prescription female cialis pills buy vytorin to buy in the canada without a prescription is sominex available on line in canada buy liposafe xr without prescription pariet without a prescription cialis soft birth control online canada discount cytotec from canada how to order bactrim online buy motrin pills in the us can you buy zocor over the counter cafergot tablets buy terramycin generic name buy ceftin tablets us innopran xl canadian medications without prescription order eurax on line canada canada buy diclofenac gel without prescription buy kamagra online safely levothroid over the counter tenormin tablets buy nizoral canada where can i get xenical from can you buy plavix over the counter roxithromycin online purchase where can i buy synthroid tablets buy paxil online without a prescription brand levitra us companies only benicar where to buy in canada buy baclofen tablets usa order clomid online no prescription with a mastercard where to buy flonase online without rx buy trandate online without a prescription digoxin pct buy oder mg tablets of requip buy haldol with a mastercard ordering betaval on line order actoplus met without prescription safe propecia no prescription order doxazosin online no prescription with a mastercard where to buy ceftin online without rx periactin without prescription pills order viagra sublingual online no prescription with a echeck buy zanaflex online with no prescription purchase florinef in us canada buy yasmin without prescription cheap zoloft mg buy cialis soft pills online cilest online pharmacies with out prescription revatio pills buy online ordering amaryl usa amitriptyline buy usa oder mg tablets of doxazosin canada pharmacies online that sell lisinopril decadron without a perscription endep canada drug store pariet without a perscription pravachol pharmacy mail order cymbalta over the counter canada inderal tablets buy lamisil without a prescription from us reglan usa no prescription inderal online without prescription best place to buy yagara in canada prevacid cheap us pharmacy kamagra to buy in the canada without a prescription order flagyl er online no presctiption buy generic minocin online with prescription buy singulair have no prescription nizagara mg no prescription brand levitra no prescription fedex ups where to buy bupron sr online canada order proscar on line usa cheap cymbalta flagyl er no prescription fedex ups lisinopril no prescription fedex ups canadian drug company robaxin safe to buy generic nizoral from canada buy generic citalopram online no prescription cheap bupron sr mg buy periactin pills online pill rx health allegra products topamax online canadian buy nitroglycerin online in the united states without a prescription the chepest arimidex ceftin online order buy crestor mg can you buy nitroglycerin over the counter order adalat without rx zithromax generic usa norvasc generic name cymbalta online without prescription lasix cheapest rate dostinex without prescription pills where to buy citalopram online usa