<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1998697246004460183</id><updated>2011-11-16T06:27:09.131-05:00</updated><category term='nant'/><category term='trizetto'/><category term='sharing'/><category term='hosting'/><category term='build'/><category term='sdk'/><category term='hcr'/><category term='mac'/><category term='qnxt'/><title type='text'>Ed Suyer - Author of another useless weblog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://esuyer.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://esuyer.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ed</name><uri>http://www.blogger.com/profile/04013664161963025413</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_b1ES5_glZJQ/SlRpwSrQTcI/AAAAAAAAAC0/is3fgrDdr_o/S220/edwrites.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1998697246004460183.post-3495509185813762259</id><published>2011-11-11T08:21:00.000-05:00</published><updated>2011-11-11T08:21:50.893-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qnxt'/><category scheme='http://www.blogger.com/atom/ns#' term='sdk'/><title type='text'>QNXT eXtended Integration (QXI) Services</title><content type='html'>Available with &lt;a href="http://www.trizetto.com/hpsolutions/qnxt.asp"&gt;QNXT 4.81&lt;/a&gt; or later, is a new integration option called &lt;a href="http://trizettosolutions.com/WorkArea/DownloadAsset.aspx?id=789"&gt;QNXT eXtended Integration (QXI) services.&lt;/a&gt;&amp;nbsp; QXI services, built on the .NET WCF platform, are web services which allow for application&amp;nbsp;integration with &lt;a href="http://www.trizetto.com/hpsolutions/qnxt.asp"&gt;QNXT&lt;/a&gt;.&amp;nbsp; These are a big deal.&amp;nbsp; Up until this point, the most prevalent integration option was a &lt;a href="http://esuyer.blogspot.com/2009/07/qnxt-custom-database.html"&gt;direct database integration&lt;/a&gt; or using the &lt;a href="http://esuyer.blogspot.com/2009/11/creating-authorization-or-referral-with.html"&gt;QNXT SDK&lt;/a&gt;.&amp;nbsp; The former option was a very manual code intensive integration, and the latter option was not very robust and offered very limited functionality.&amp;nbsp; With &lt;a href="http://www.trizetto.com/hpsolutions/qnxt.asp"&gt;QNXT 4.81&lt;/a&gt;, QXI appears to be the preferred choice for integrating &lt;a href="http://www.trizetto.com/hpsolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; with 3rd party or proprietary (home grown) applications.&amp;nbsp; Out of the box, integration features are available for:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Financial A/R Systems&lt;/li&gt;&lt;li&gt;Provider Credentialing&lt;/li&gt;&lt;li&gt;Underwriting Solution&lt;/li&gt;&lt;li&gt;Homegrown Employer/Provider/Member Web Portals (PTS)&lt;/li&gt;&lt;li&gt;Web Enrollment for Membership and Employers&lt;/li&gt;&lt;li&gt;Scanning/ Document imaging retrieval&lt;/li&gt;&lt;li&gt;PBM&lt;/li&gt;&lt;li&gt;Third Party FSA vendors&lt;/li&gt;&lt;li&gt;HEDIS Reporting&lt;/li&gt;&lt;li&gt;IVR / Customer Service&lt;/li&gt;&lt;li&gt;External Case Management Solutions &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I am looking forward to kicking the tires on these services and posting a review&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="f kv"&gt;&lt;cite&gt;&lt;br /&gt;&lt;/cite&gt;&lt;/div&gt;&lt;div class="f kv"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1998697246004460183-3495509185813762259?l=esuyer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esuyer.blogspot.com/feeds/3495509185813762259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://esuyer.blogspot.com/2011/11/qnxt-extended-integration-qxi-services.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/3495509185813762259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/3495509185813762259'/><link rel='alternate' type='text/html' href='http://esuyer.blogspot.com/2011/11/qnxt-extended-integration-qxi-services.html' title='QNXT eXtended Integration (QXI) Services'/><author><name>Ed</name><uri>http://www.blogger.com/profile/04013664161963025413</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_b1ES5_glZJQ/SlRpwSrQTcI/AAAAAAAAAC0/is3fgrDdr_o/S220/edwrites.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1998697246004460183.post-5041934149417377472</id><published>2011-10-18T20:45:00.001-04:00</published><updated>2011-10-18T20:54:29.576-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hcr'/><title type='text'>The Future of Health Insurance</title><content type='html'>There are many opinions on this topic, below is an outline of mine.&amp;nbsp; I'm sure it will continue to evolve&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;In the next decade, the health care marketplace will be significantly different than it was in the last decade&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The role of health plans is therefore going to be significantly different&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Success in this new market is going to take bold leadership. Bold choices will need to be made. New ground broken&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If we’re able to put (national and local) politics aside, the focus of health care reform will be on &lt;/li&gt;&lt;ul&gt;&lt;li&gt;People taking responsibility for their own health&lt;/li&gt;&lt;li&gt;Working together to make communities healthier &lt;/li&gt;&lt;li&gt;Providing better/smarter choices to consumers enabling them to live a healthier life&lt;/li&gt;&lt;li&gt;Sharing the accountability, risk and cost associated with providing care&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;These initiatives are what will reduce cost and improve the quality of care. No one has figured out all the details of how best to do this yet, but one thing is clear:&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Information (data) is the most valuable asset companies have in this future&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Health plans will transform themselves from insurance companies into information companies. A central component of their business plan and strategy will be information and information management. The type of information health plans own, and the quality of that information, is what will differentiate them from their competitors. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Being able to manage information effectively today is crucial in making this transformation in the future&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Key (company) performance indicators in this future will be directly related to data and the quality of data. Every person within every department of an organization will be responsible and accountable for meeting performance goals which revolve around data&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1998697246004460183-5041934149417377472?l=esuyer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esuyer.blogspot.com/feeds/5041934149417377472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://esuyer.blogspot.com/2011/10/future-of-health-insurance.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/5041934149417377472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/5041934149417377472'/><link rel='alternate' type='text/html' href='http://esuyer.blogspot.com/2011/10/future-of-health-insurance.html' title='The Future of Health Insurance'/><author><name>Ed</name><uri>http://www.blogger.com/profile/04013664161963025413</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_b1ES5_glZJQ/SlRpwSrQTcI/AAAAAAAAAC0/is3fgrDdr_o/S220/edwrites.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1998697246004460183.post-5043069623336782961</id><published>2011-02-04T16:37:00.001-05:00</published><updated>2011-10-18T20:49:05.021-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qnxt'/><category scheme='http://www.blogger.com/atom/ns#' term='trizetto'/><category scheme='http://www.blogger.com/atom/ns#' term='hosting'/><title type='text'>Lessons Learned Retrospective from our TriZetto QNXT Implementation</title><content type='html'>This year we are upgrading to the next major version of &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt;. It is another large implementation effort. This week I prepared for a “lessons learned” session with the upgrade team. Here are my impressions on what we did right, and what we aspire to do better&lt;br /&gt;&lt;b&gt;Commit Resources&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;We allocated dedicated resources to the &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; implementation program which was important for a program of this size&lt;/li&gt;&lt;li&gt;The program manager took a hard line on not letting any resources go – which was great because an effort of this size requires a full commitment&lt;/li&gt;&lt;li&gt;What didn’t work - anything lower than a 100% allocation to the program. In our environment, everything is an urgent number one priority. So if you were an individual who was 50% allocated to the program, what that really meant is that you were 100% allocated to two number one priority efforts. The &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; upgrade program is of the size and complexity that focus and concentration by all parties involved is required&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Pay For Performance&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;We paid out a performance bonus for key milestones in the program: design freeze, entrance to model office, go live and stabilization. Meeting these milestones was hard. And in the 11th hour we still had work to do to make our targets for every milestone. &lt;/li&gt;&lt;li&gt;Everyone’s level of effort was a 10 of out 10. I think the performance bonus worked. It provided an added incentive to get the job done&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Get Feedback From the Business Users Early&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;We started the design phase on January 1, 2008. We started testing on July 1, 2008 and ran testing through January 31, 2009. What that means is in the worst case – the business defined their need in January of 2008, and we didn’t show them a solution until 12 months later to collect their feedback. Any by that time – their needs changed.&lt;/li&gt;&lt;li&gt;The way we need to operate from the beginning is exactly how the &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; implementation program ended. We should have short cycles 4 to 6 weeks, where we implement shorter more focused design, build and testing phases&lt;/li&gt;&lt;li&gt;At the start of the program we broke down the work and allocated teams by function: interfaces and extracts, enterprise data warehouse, web, reports migration, configuration. At the end of the program, when we were nearing go live, we reorganized by subject area: eligibility, premium billing, customer service, claims/finance – so we could focus on bringing one subject area live at a time. For the upgrade, we should break this work down by subject area from the beginning and save our selves the time of reorganizing later. Our functions (interfaces and extracts, configuration, etc,.) will still exist and they will cut across the subject area teams&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Sit Together&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;We put our entire web team (the only project track which finished on time) in one room&lt;/li&gt;&lt;li&gt;I don’t think we can put a price on the collaboration that will happen naturally when people sit together. We had business analysts working side by side with developers and testers. If we could have had the business subject matter experts there it would have been even better.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Three Rules About Testing&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Rule #1 Test with real data&lt;/li&gt;&lt;li&gt;Rule #2 if you can’t test with real data, see rule #1&lt;/li&gt;&lt;li&gt;Rule #3 automate your tests&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Automated testing will allow us to run more cycles faster and thereby yield a higher quality deliverable in a shorter amount of time&lt;br /&gt;&lt;br /&gt;In order to automate testing, we need to get to a more granular level of detail in our business process flow documentation.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Other Notables&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Track actual time on deliverables&lt;/li&gt;&lt;li&gt;Start knowledge transfer and ownership turnover early&lt;/li&gt;&lt;li&gt;Automate everything we can automate&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1998697246004460183-5043069623336782961?l=esuyer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esuyer.blogspot.com/feeds/5043069623336782961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://esuyer.blogspot.com/2011/02/lessons-learned-retrospective-from-our.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/5043069623336782961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/5043069623336782961'/><link rel='alternate' type='text/html' href='http://esuyer.blogspot.com/2011/02/lessons-learned-retrospective-from-our.html' title='Lessons Learned Retrospective from our TriZetto QNXT Implementation'/><author><name>Ed</name><uri>http://www.blogger.com/profile/04013664161963025413</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_b1ES5_glZJQ/SlRpwSrQTcI/AAAAAAAAAC0/is3fgrDdr_o/S220/edwrites.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1998697246004460183.post-1742044174197329980</id><published>2009-11-12T21:07:00.000-05:00</published><updated>2009-11-12T21:07:39.174-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qnxt'/><category scheme='http://www.blogger.com/atom/ns#' term='trizetto'/><category scheme='http://www.blogger.com/atom/ns#' term='hosting'/><title type='text'>TriZetto Hosted Batch Architecture</title><content type='html'>&lt;a href="http://www.trizetto.com/hpServices/hostingServices.asp"&gt;TriZetto Hosting&lt;/a&gt; has a framework in place for executing batch jobs – and that framework is called the Hosted Batch Architecture or HBA for short. So if you are a TriZetto Hosting customer, and are writing custom code to extend/enhance the core functionality of &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; or Facets, you will come to a cross roads where you will need a job created to execute this custom code. And this is where the HBA comes into play. You will have to make sure your job is HBA compatible.&lt;br /&gt;&lt;br /&gt;Before I get into what it means to be HBA compatible, I’d like to bring up the benefits the HBA provides us. The HBA provides a common look and feel for the execution and supportability of all jobs. This is a very important principle in custom development practice – keeping things consistent and the same. This means that all jobs will be kicked off the same way, they will use the same resources like I/O and database connections, and in the event that an error occurs, errors will be handled in the same manner. This is a very powerful benefit for TriZetto customers in my opinion. This reduces the burden and the cost of troubleshooting problems when they arise.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;The HBA in it of itself is a “black box.” So I can not really tell you what the HBA is. The TriZetto documentation refers to is a framework, so that is what I call it here. From a customer’s point of view, I can share with you that jobs can be configured using XML, and that you can use VB Script to extend the capabilities of the HBA if the need arises.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Creating jobs that are HBA compatible&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;i&gt;Note: this section is entirely QNXT specific, and speaks to version 4.51 of the HBA&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;In a &lt;a href="http://esuyer.blogspot.com/2009/07/qnxt-custom-database.html"&gt;previous post&lt;/a&gt;, I discussed customizing &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; using the Custom Database. Once you have a Custom Database setup, you will need custom code to take various read and write actions against that database. A common approach is to write this custom code into &lt;a href="http://msdn.microsoft.com/en-us/library/ms141026.aspx"&gt;SQL Server Integration Service&lt;/a&gt; (SSIS) Packages. SSIS allows you to extract, transform and load data in and out of SQL Server. &lt;br /&gt;&lt;br /&gt;&lt;div&gt;Within an SSIS Package you define Connection Managers for any type of resource that will be consumed or published by the SSIS Package. For example, you will need Connection Managers for database connections, file system locations (like an /input or /output folder for example), SMTP and any other resource that will be part of the workflow of the package. A common practice in SSIS development is to place the values of these resources into a configuration file called .dtsConfig, and bind these configurations in at runtime. This way, if you have varying configurations depending on which environment (development, test or production) the package runs in, you don’t have to change code in the package to deploy to these environments.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;In order to use a configuration file, you have to define Package Variables within your SSIS package. And use these Package Variables when creating Connection Managers so that resource names are never hard coded into the package. At run time, when the configuration file is bound in, the Package Variables are populated with the appropriate values for that environment, and the Connection Managers are ready to be consumed by and published to.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;With the HBA, you employ a similar practice. The key differences are that:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;(a) The configuration file is not a .dtsConfig. Instead it is a proprietary TriZetto file called Common System Properties. And if any local configurations are needed, there is a separate configuration file called the HBA Wrapper also referred to as the job XML&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;(b) The Package Variables must be placed within an HBA namespace&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://www.trizetto.com/"&gt;TriZetto&lt;/a&gt; provides an HBA Development Guide which details all of the particulars of how to build HBA compliant SSIS Packages, which includes, among other things the Package Variables you must use.&amp;nbsp; So becoming HBA compatible means employing these practices in your custom code.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Recommended Reading&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you are a TriZetto customer and are looking to familiarize yourself with the HBA, in addition to reading the HBA Development Guide, I recommend you also request information about:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Common System Properties - this should&amp;nbsp;will come in the form of a list of&amp;nbsp;variables and their meaning&lt;/li&gt;&lt;li&gt;HBA Wrapper Dev Guide - this has a list of commands you can execute inside of the HBA.&amp;nbsp; For example, there are command for file manipulation like fileDelete() and fileCompress().&lt;/li&gt;&lt;li&gt;Client Specific -&amp;nbsp;you can enhance the functionallity of the HBA with VB Script be creating a Client Specific VB file that&amp;nbsp;is&amp;nbsp;imported into the HBA&lt;/li&gt;&lt;li&gt;Auto Date Parameters -&amp;nbsp;there are a series of&amp;nbsp;data variables&amp;nbsp;that are&amp;nbsp;predefined and&amp;nbsp;available to you in the HBA.&amp;nbsp; For example, there is a date variable that always returns the&amp;nbsp;first date of the current quarter, or the last day of the&amp;nbsp;month&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Stay Tuned ...&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In&amp;nbsp;a future post, I&amp;nbsp;will discuss&amp;nbsp;a unique challenge that you have to solve with respect to HBA.&amp;nbsp; Since the HBA is only available in your hosted environments, you need a mechanism to unit test your code to make sure that you are consistently creating HBA compatible custom code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1998697246004460183-1742044174197329980?l=esuyer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esuyer.blogspot.com/feeds/1742044174197329980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://esuyer.blogspot.com/2009/11/trizetto-hosted-batch-architecture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/1742044174197329980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/1742044174197329980'/><link rel='alternate' type='text/html' href='http://esuyer.blogspot.com/2009/11/trizetto-hosted-batch-architecture.html' title='TriZetto Hosted Batch Architecture'/><author><name>Ed</name><uri>http://www.blogger.com/profile/04013664161963025413</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_b1ES5_glZJQ/SlRpwSrQTcI/AAAAAAAAAC0/is3fgrDdr_o/S220/edwrites.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1998697246004460183.post-5971364774522143120</id><published>2009-11-11T20:30:00.005-05:00</published><updated>2009-11-12T09:56:29.938-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qnxt'/><category scheme='http://www.blogger.com/atom/ns#' term='trizetto'/><category scheme='http://www.blogger.com/atom/ns#' term='sdk'/><category scheme='http://www.blogger.com/atom/ns#' term='hosting'/><title type='text'>Creating an Authorization or Referral with QNXT 3.4 SDK</title><content type='html'>When you install a &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; EU (Execution Unit), you also get the &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; SDK. The &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; SDK is really just a Microsoft Word document that you will find in the \Program Files directory after the install is finished. You do not have to select anything special as part of the install process, the SDK is installed by default.&lt;br /&gt;&lt;br /&gt;This Word document lists a series of assemblies that can be used to harness some of the functionality of the Execution Unit. This document does not go into great detail as to how to use these assemblies. Also, no code samples are provided. So you are left more or less to your own devices to figure out how to get what you need out of the SDK.&lt;br /&gt;&lt;br /&gt;This blog post describes how we used the SDK to create authorizations/referrals using the &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; 3.4 SDK. Near as I can tell what I am describing here is not documented anywhere else, including the &lt;a href="http://www.trizetto.com/"&gt;TriZetto&lt;/a&gt; Customer Exchange Website. This is unsupported custom code, but it has passed Trizetto code review, which may not mean much to you unless you are a &lt;a href="http://www.trizetto.com/"&gt;TriZetto&lt;/a&gt; Hosting customer. If you are Hosting customer, then passing code review means that &lt;a href="http://www.trizetto.com/"&gt;TriZetto&lt;/a&gt; will deploy this code to your production environment.&lt;br /&gt;&lt;br /&gt;There are two pre-requisites to get the sample code provided in this blog post to run:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Install the &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; 3.4 EU locally&lt;/li&gt;&lt;li&gt;Create a &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; User with (a) the appropriate QEnvironment added i.e. Integrated Dev and (b) with the “Authorization Assignment” role added/granted&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Next, you will need to bind in the following reference assemblies to compile this code&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;QCSI Globals.dll&lt;/li&gt;&lt;li&gt;QCSI Internal Proxy.dll&lt;/li&gt;&lt;li&gt;QCSI Messages Authorization.dll&lt;/li&gt;&lt;li&gt;QCSI Messages CommonTypes.dll&lt;/li&gt;&lt;li&gt;QCSI Proxy Authoriztion.dll&lt;/li&gt;&lt;li&gt;QFrame Common Messages.dll&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;All of the above are installed into the GAC on the EU. If you are using Visual Studio to build your project, you will need to xcopy these out of the GAC first so that they will show up in your Add References wizard.&lt;br /&gt;&lt;br /&gt;Without any further ado - here is a working unit test to create an authorization/referral using the SDK&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border-bottom: rgb(153,153,153) 1px dashed; border-left: rgb(153,153,153) 1px dashed; border-right: rgb(153,153,153) 1px dashed; border-top: rgb(153,153,153) 1px dashed; color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; width: 100%;"&gt;&lt;code&gt;using System;&lt;br /&gt;using Q.QFrame.Messages;&lt;br /&gt;using Q.Proxy;&lt;br /&gt;using Q.Global;&lt;br /&gt;using MbUnit.Framework;&lt;br /&gt;&lt;br /&gt;namespace AuthPosting.Tests&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;[TestFixture]&lt;br /&gt;public class AuthPostingTests&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;[Test]&lt;br /&gt;public void CreateReferralTest()&lt;br /&gt;{&lt;br /&gt;QNXTProxy _proxy = new QNXTProxy();&lt;br /&gt;if (!_proxy.InitQNXT("user", "password", "environment", "plandataAlias")) Assert.Fail();&lt;br /&gt;&lt;br /&gt;AuthCreateUpdateRequestMessageType _request = new AuthCreateUpdateRequestMessageType();&lt;br /&gt;_request.Referral = new ReferralMessageType();&lt;br /&gt;_request.Referral.EnrollId = "";      // QNXT Enrollment ID&lt;br /&gt;_request.Referral.MemId = "";       // QNXT Member ID&lt;br /&gt;_request.Referral.ServiceCode = ""; // QNXT Template ID&lt;br /&gt;_request.Referral.Cob = 0;&lt;br /&gt;_request.Referral.ReferTo =""; // QNXT ReferTo Provider Id&lt;br /&gt;_request.Referral.EffDate = DateTime.Today.ToString();&lt;br /&gt;_request.Referral.ReferFrom = ""; // QNXT ReferFrom Provider Id&lt;br /&gt;_request.Referral.Emergency = 0;&lt;br /&gt;_request.Referral.ReferralDate = DateTime.Today.ToString();&lt;br /&gt;_request.Referral.TransferInOut = 0;&lt;br /&gt;_request.Referral.AdmitDate = DateTime.Today.ToString();&lt;br /&gt;_request.Referral.IssueInitial = "webusr";&lt;br /&gt;_request.Referral.DischargeDate = DateTime.Parse("2078-12-31").ToString();&lt;br /&gt;_request.Referral.TermDate = DateTime.Parse("2078-12-31").ToString();&lt;br /&gt;_request.Referral.PayToAffiliationId = ""; // QNXT PayTo Affiliation ID&lt;br /&gt;_request.Referral.AttProvid = ""; // QNXT Attending Provider Id&lt;br /&gt;_request.Referral.AppealDate = DateTime.Parse("2078-12-31").ToString();&lt;br /&gt;_request.Referral.AccChg = Convert.ToDecimal(0.00);&lt;br /&gt;_request.Referral.Acuity =  "Urgent";&lt;br /&gt;_request.Referral.Admit = 1;&lt;br /&gt;_request.Referral.AdmitDate = DateTime.Today.ToString();&lt;br /&gt;_request.Referral.AdmitPhys = "";&lt;br /&gt;_request.Referral.AdmtProvid = ""; // QNXT Admitting Provider Id&lt;br /&gt;_request.Referral.AuthStatus = AuthStatusType.MEDREVIEW;&lt;br /&gt;_request.Referral.Diagnosis = "";&lt;br /&gt;_request.Referral.DisDiagnosis = "";&lt;br /&gt;_request.Referral.Dispositionid = "";&lt;br /&gt;_request.Referral.ProcessLogId = "";&lt;br /&gt;_request.Referral.ReceiptDate = DateTime.Parse("2078-12-31").ToString();;&lt;br /&gt;_request.Referral.ReferToLocation = "";&lt;br /&gt;_request.Referral.ReferToPar = YesNoType.N;&lt;br /&gt;_request.Referral.ReferToProvType = "";&lt;br /&gt;_request.Referral.Source = ReferralMessageTypeSource.Q;&lt;br /&gt;_request.Referral.DecrementType = ReferralMessageTypeDecrementType.SVC;&lt;br /&gt;_request.Referral.Status = AuthStatusType.INPROCESS;&lt;br /&gt;&lt;br /&gt;_request.Referral.ReferralText = new ReferralTextMessageType();&lt;br /&gt;_request.Referral.ReferralText.Reason = _referral.Reason;&lt;br /&gt;&lt;br /&gt;switch("Auto")&lt;br /&gt;{&lt;br /&gt;case "Auto":&lt;br /&gt;_request.Referral.AccidentCause = ReferralMessageTypeAccidentCause.A;&lt;br /&gt;break;&lt;br /&gt;case "Employment":&lt;br /&gt;_request.Referral.AccidentCause = ReferralMessageTypeAccidentCause.E;&lt;br /&gt;break;&lt;br /&gt;case "Others":&lt;br /&gt;_request.Referral.AccidentCause = ReferralMessageTypeAccidentCause.O;&lt;br /&gt;break;&lt;br /&gt;case "No":&lt;br /&gt;default:&lt;br /&gt;_request.Referral.AccidentCause = ReferralMessageTypeAccidentCause.Item;&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;_request.Referral.AuthDiags = new AuthDiagMessageType[1];&lt;br /&gt;_request.Referral.AuthDiags[0] = new AuthDiagMessageType();&lt;br /&gt;_request.Referral.AuthDiags[0].DiagCode = "100.0";&lt;br /&gt;_request.Referral.AuthDiags[0].Sequence = "1";&lt;br /&gt;_request.Referral.AuthDiags[0].DiagQualifier = AuthDiagMessageTypeDiagQualifier.PRINCIPAL;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;AuthCreateUpdateProxy _authProxy = new AuthCreateUpdateProxy(_proxy.Session);&lt;br /&gt;&lt;br /&gt;AuthCreateUpdateResponseMessageType _response = authProxy.ProcessMessage(_request);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Note that AuthCreateUpdateProxy() method does not perform any data validation. So if this is important to you, you will have to perform this outside of the SDK. Also, the SDK does not support:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Adding data to custom attributes&lt;/li&gt;&lt;li&gt;Creating an authorization service&lt;/li&gt;&lt;li&gt;Creating an authorization alert/memo&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;These operations will also need to be performed outside of the SDK.&lt;br /&gt;&lt;br /&gt;Here are is a list of some other tests we found to be useful in insuring the quality of the SDK interface:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Add authorization with wrong or missing Member Id &lt;/li&gt;&lt;li&gt;Add authorization with wrong or missing Enrollment Id&lt;/li&gt;&lt;li&gt;Add authorization with wrong or missing Auth Template Id&lt;/li&gt;&lt;li&gt;Add authorization with wrong or missing Refer From Provider Id&lt;/li&gt;&lt;li&gt;Add authorization with wrong or missing Refer To Provider Id&lt;/li&gt;&lt;li&gt;Add authorization with wrong or missing Affiliation Id&lt;/li&gt;&lt;li&gt;Add authorization with wrong or missing Admitting Provider Id&lt;/li&gt;&lt;li&gt;Add authorization with wrong or missing Admitting Provider Id&lt;/li&gt;&lt;li&gt;Add authorization with wrong or missing Diagnosis Code&lt;/li&gt;&lt;li&gt;Add duplicate authorization&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1998697246004460183-5971364774522143120?l=esuyer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esuyer.blogspot.com/feeds/5971364774522143120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://esuyer.blogspot.com/2009/11/creating-authorization-or-referral-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/5971364774522143120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/5971364774522143120'/><link rel='alternate' type='text/html' href='http://esuyer.blogspot.com/2009/11/creating-authorization-or-referral-with.html' title='Creating an Authorization or Referral with QNXT 3.4 SDK'/><author><name>Ed</name><uri>http://www.blogger.com/profile/04013664161963025413</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_b1ES5_glZJQ/SlRpwSrQTcI/AAAAAAAAAC0/is3fgrDdr_o/S220/edwrites.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1998697246004460183.post-9013177762371737669</id><published>2009-07-30T07:22:00.006-04:00</published><updated>2009-08-02T14:32:23.078-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='build'/><category scheme='http://www.blogger.com/atom/ns#' term='nant'/><title type='text'>Custom NAnt ILMerge Task.  No Assembly Required</title><content type='html'>ILMerge is a Microsoft utility that enables you to incorporate referenced .NET assemblies into a combined assembly, removing the need to distribute external assemblies. If you are using ILMerge, and you have an automated build process using NAnt, you have several options for integrating ILMerge into your build:&lt;br /&gt;&lt;br /&gt;1. You can you use the &amp;lt;exec&amp;gt; task and build your command line arguments as a string.&lt;br /&gt;&lt;br /&gt;2. You can use a 3rd party (or write your own) custom tasks library like this one: &lt;a href="http://code.google.com/p/ilmerge-tasks/wiki/HowToUse"&gt;http://code.google.com/p/ilmerge-tasks/wiki/HowToUse&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Or you can write a inline custom task using the &amp;lt;script&amp;gt; tag in your NAnt script&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I started with option #1. I quickly realized that without &amp;lt;fileSet&amp;gt; support, this could become a difficult option to maintain.&lt;br /&gt;&lt;br /&gt;I then moved to option #2. This library didn’t work for me. I suspect it’s because my \tools folder, which contains ILMerge.exe and the ILMergeTask.dll are both on an R:\. And I suspect this is troublesome for the .net reference search. I get back an error that ILMerge was not found.&lt;br /&gt;&lt;br /&gt;Which left me with option #3. NAnt presents a &amp;lt;script&amp;gt; tag which allows you to write extensions to core functionality. So I wrote my own ILMergeTask. The thing to note here is that I could have compiled this into a task library as well. The real difference verse option #2 is the ILMergeTask I wrote extends ExternalProgram (as opposed to Task). Which allows me to pass in the path of ILMerge.exe.&lt;br /&gt;&lt;br /&gt;Usage is pretty familiar:&lt;br /&gt;&lt;br /&gt;&lt;pre style="BORDER-RIGHT: rgb(153,153,153) 1px dashed; PADDING-RIGHT: 5px; BORDER-TOP: rgb(153,153,153) 1px dashed; PADDING-LEFT: 5px; FONT-SIZE: 12px; PADDING-BOTTOM: 5px; OVERFLOW: auto; BORDER-LEFT: rgb(153,153,153) 1px dashed; WIDTH: 100%; COLOR: rgb(0,0,0); LINE-HEIGHT: 14px; PADDING-TOP: 5px; BORDER-BOTTOM: rgb(153,153,153) 1px dashed; FONT-FAMILY: Andale Mono,Lucida Console,Monaco,fixed,monospace; BACKGROUND-COLOR: rgb(238,238,238)"&gt;&lt;code&gt;&amp;lt;ilmerge outputfile="Combined.Assembly.exe"&lt;br /&gt;  program=”R:\tools\ilmerge\ilmerge.exe”&lt;br /&gt;  primary=”Primary.Assembly.exe”&lt;br /&gt;  log=”${log.dir}\ilmerge.log”&amp;gt;&lt;br /&gt;  &amp;lt;assemblies&amp;gt;&lt;br /&gt;      &amp;lt;include name="*.dll" /&amp;gt;&lt;br /&gt;  &amp;lt;/assemblies&amp;gt;&lt;br /&gt;&amp;lt;/ilmerge&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And here is the code for the custom task:&lt;br /&gt;&lt;pre style="BORDER-RIGHT: #999999 1px dashed; PADDING-RIGHT: 5px; BORDER-TOP: #999999 1px dashed; PADDING-LEFT: 5px; FONT-SIZE: 12px; PADDING-BOTTOM: 5px; OVERFLOW: auto; BORDER-LEFT: #999999 1px dashed; WIDTH: 100%; COLOR: #000000; LINE-HEIGHT: 14px; PADDING-TOP: 5px; BORDER-BOTTOM: #999999 1px dashed; FONT-FAMILY: Andale Mono, Lucida Console, Monaco, fixed, monospace; BACKGROUND-COLOR: #eee"&gt;&lt;code&gt;  &amp;lt;script language="C#" prefix="custom" &amp;gt;&lt;br /&gt;    &amp;lt;references&amp;gt;&lt;br /&gt;      &amp;lt;include name="System.dll" /&amp;gt;&lt;br /&gt;      &amp;lt;include name="NAnt.Core.dll" /&amp;gt;&lt;br /&gt;    &amp;lt;/references&amp;gt;&lt;br /&gt;    &amp;lt;imports&amp;gt;&lt;br /&gt;      &amp;lt;import namespace="System" /&amp;gt;&lt;br /&gt;      &amp;lt;import namespace="System.Collections" /&amp;gt;&lt;br /&gt;      &amp;lt;import namespace="System.Collections.Specialized" /&amp;gt;&lt;br /&gt;      &amp;lt;import namespace="NAnt.Core.Types" /&amp;gt;&lt;br /&gt;      &amp;lt;import namespace="NAnt.Core.Util" /&amp;gt;&lt;br /&gt;      &amp;lt;import namespace="NAnt.Core.Tasks" /&amp;gt;&lt;br /&gt;    &amp;lt;/imports&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;code&amp;gt;&lt;br /&gt;      &amp;lt;![CDATA[&lt;br /&gt;                [TaskName("ilmerge")]&lt;br /&gt;                public class ILMergeTask : ExternalProgramBase {&lt;br /&gt;&lt;br /&gt;                  private FileSet m_assemblies;&lt;br /&gt;                  private string m_logFile;&lt;br /&gt;                  private string m_outputFile;&lt;br /&gt;                  private string m_primaryFile;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                  [TaskAttribute("program", Required = true)]&lt;br /&gt;                  [StringValidator(AllowEmpty = false)]&lt;br /&gt;                  public override string ExeName&lt;br /&gt;                  {&lt;br /&gt;                      get { return base.ExeName; }&lt;br /&gt;                      set { base.ExeName = value; }&lt;br /&gt;                  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                  public override string ProgramArguments&lt;br /&gt;                  {&lt;br /&gt;                      get { return string.Empty; }&lt;br /&gt;                  }&lt;br /&gt;&lt;br /&gt;                  [BuildElement("assemblies", Required=true)]&lt;br /&gt;                  public virtual FileSet InputAssemblies&lt;br /&gt;                  {&lt;br /&gt;                        get&lt;br /&gt;                        {&lt;br /&gt;                            return this.m_assemblies;&lt;br /&gt;                        }&lt;br /&gt;                        set&lt;br /&gt;                        {&lt;br /&gt;                            this.m_assemblies = value;&lt;br /&gt;                        }&lt;br /&gt;                  }&lt;br /&gt;                 &lt;br /&gt;                  [TaskAttribute("logfile")]&lt;br /&gt;                  public virtual string LogFile&lt;br /&gt;                  {&lt;br /&gt;                        get&lt;br /&gt;                        {&lt;br /&gt;                            if (this.m_logFile == null)&lt;br /&gt;                            {&lt;br /&gt;                                return null;&lt;br /&gt;                            }&lt;br /&gt;                            return this.Project.GetFullPath(this.m_logFile);&lt;br /&gt;                        }&lt;br /&gt;                        set&lt;br /&gt;                        {&lt;br /&gt;                            this.m_logFile = StringUtils.ConvertEmptyToNull(value);&lt;br /&gt;                        }&lt;br /&gt;                  }     &lt;br /&gt;&lt;br /&gt;                  [TaskAttribute("primary", Required=true), StringValidator(AllowEmpty=false)]&lt;br /&gt;                  public virtual string PrimaryFile&lt;br /&gt;                  {&lt;br /&gt;                      get&lt;br /&gt;                      {&lt;br /&gt;                          if (this.m_primaryFile == null)&lt;br /&gt;                          {&lt;br /&gt;                              return null;&lt;br /&gt;                          }&lt;br /&gt;                          return this.Project.GetFullPath(this.m_primaryFile);&lt;br /&gt;                      }&lt;br /&gt;                      set&lt;br /&gt;                      {&lt;br /&gt;                          this.m_primaryFile = StringUtils.ConvertEmptyToNull(value);&lt;br /&gt;                      }&lt;br /&gt;                  }                 &lt;br /&gt;&lt;br /&gt;                  [TaskAttribute("outputfile", Required=true), StringValidator(AllowEmpty=false)]&lt;br /&gt;                  public virtual string OutputFile&lt;br /&gt;                  {&lt;br /&gt;                      get&lt;br /&gt;                      {&lt;br /&gt;                          if (this.m_outputFile == null)&lt;br /&gt;                          {&lt;br /&gt;                              return null;&lt;br /&gt;                          }&lt;br /&gt;                          return this.Project.GetFullPath(this.m_outputFile);&lt;br /&gt;                      }&lt;br /&gt;                      set&lt;br /&gt;                      {&lt;br /&gt;                          this.m_outputFile = StringUtils.ConvertEmptyToNull(value);&lt;br /&gt;                      }&lt;br /&gt;                  }                 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                  protected override void ExecuteTask()&lt;br /&gt;                  {&lt;br /&gt;                      try&lt;br /&gt;                      {&lt;br /&gt;                          Log(Level.Info, "Executing ILMerge.exe");&lt;br /&gt;                          Log(Level.Info, string.Format("/out:\"{0}\"", m_outputFile));&lt;br /&gt;                          Log(Level.Info, string.Format("/log:\"{0}\"", m_logFile));&lt;br /&gt;                          Arguments.Add(new Argument(string.Format("/out:\"{0}\"", m_outputFile)));&lt;br /&gt;&lt;br /&gt;                          Log(Level.Info, string.Format("assembly[{0}]: {1}", "primary", m_primaryFile));&lt;br /&gt;                          Arguments.Add(new Argument(string.Format("\"{0}\"", m_primaryFile)));&lt;br /&gt;&lt;br /&gt;                          for (int i = 0; i &amp;lt; m_assemblies.FileNames.Count; i++)&lt;br /&gt;                          {&lt;br /&gt;                              Log(Level.Info, string.Format("assembly[{0}]: {1}", i, m_assemblies.FileNames[i]));&lt;br /&gt;                              Arguments.Add(new Argument(string.Format("\"{0}\"", m_assemblies.FileNames[i])));&lt;br /&gt;                          }&lt;br /&gt;&lt;br /&gt;                          Arguments.Add(new Argument(string.Format("/log:\"{0}\"", m_logFile)));&lt;br /&gt;&lt;br /&gt;                          base.FailOnError = false;&lt;br /&gt;                          base.ExecuteTask();&lt;br /&gt;                      }&lt;br /&gt;                      catch (Exception ex)&lt;br /&gt;                      {&lt;br /&gt;                          throw new BuildException(string.Format("Error executing ILMerge {0}", "test"), Location, ex);&lt;br /&gt;                      }&lt;br /&gt;                  }&lt;br /&gt;                }&lt;br /&gt;              ]]&amp;gt;&lt;br /&gt;    &amp;lt;/code&amp;gt;&lt;br /&gt;  &amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Big kudos to the guy on google code and the guy that wrote reflector ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1998697246004460183-9013177762371737669?l=esuyer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esuyer.blogspot.com/feeds/9013177762371737669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://esuyer.blogspot.com/2009/07/custom-nant-ilmerge-task-no-assembly.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/9013177762371737669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/9013177762371737669'/><link rel='alternate' type='text/html' href='http://esuyer.blogspot.com/2009/07/custom-nant-ilmerge-task-no-assembly.html' title='Custom NAnt ILMerge Task.  No Assembly Required'/><author><name>Ed</name><uri>http://www.blogger.com/profile/04013664161963025413</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_b1ES5_glZJQ/SlRpwSrQTcI/AAAAAAAAAC0/is3fgrDdr_o/S220/edwrites.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1998697246004460183.post-4686112821948396260</id><published>2009-07-17T21:39:00.003-04:00</published><updated>2009-07-17T21:48:58.251-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharing'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>How to harden your iMac Apache Web Server</title><content type='html'>&lt;span style="font-style: italic;"&gt;Note: I am running Leopard 10.5.6 and Apache 2.2.  Other versions of OS X and/or Apache may work differently.  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A few months ago &lt;a href="http://esuyer.blogspot.com/2009/05/starting-apache-22-web-server-on-mac.html"&gt;I started Apache Web Server on my iMac&lt;/a&gt; and today I’m going to apply the “minimum necessary” configuration to Apache, so it is more secure.  In a future posts, I plan to write about putting your Apache Web Server "in Jail," and enabling DDNS ... so that your hardened iMac will be a web host on the Internet.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Prerequisite&lt;/span&gt;&lt;br /&gt;When I first bought my iMac, I secured it using &lt;a href="http://images.apple.com/server/macosx/docs/Leopard_Security_Config_20080530.pdf"&gt;Apple’s Security Configuration&lt;/a&gt; as a guide.  If you buy your iMac at Best Buy, you can also pay Geek Squad $40 to do this for you.  If you’re looking for an abridged version, this guide is also good - &lt;a href="http://www.macshadows.com/kb/index.php?title=Hardening_Mac_OS_X"&gt;http://www.macshadows.com/kb/index.php?title=Hardening_Mac_OS_X&lt;/a&gt;.  Also, Apple puts out an audit tool with lots of other security tips - &lt;a href="http://support.apple.com/downloads/Common_Criteria_Tools_for_10_4"&gt;http://support.apple.com/downloads/Common_Criteria_Tools_for_10_4&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The first thing to do before securing your Apache Web Server is to decide on the functionality you want from Apache.  I decided on some very basic items:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Only static HTML pages will be served.&lt;/li&gt;&lt;li&gt;Ok, I’m adding SSI (&lt;a href="http://httpd.apache.org/docs/2.2/howto/ssi.html"&gt;http://httpd.apache.org/docs/2.2/howto/ssi.html&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;The server must support the virtual hosting mechanism.&lt;/li&gt;&lt;li&gt;The server must log all web requests (including information about web browsers).&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Configure Apache&lt;/span&gt;&lt;br /&gt;To apply these configurations, you have to edit the web server configuration file&lt;br /&gt;&lt;br /&gt;Open a terminal: Finder-&gt;Applications-&gt;Utilities-&gt;Terminal&lt;br /&gt;Edit the configuration file: sudo bbedit /private/etc/apache2/httpd.conf&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;bbedit is a text editor that I bought.  You can use any text editor here, even TextEdit which came pre-installed on my iMac.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You do not need to enable root password for this.  If you are logged in as an Administrator User you can sudo and execute this command.   My finished configuration is as follows (in the interest of space, I removed comments normally found in&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-weight: bold;"&gt;&lt;span style="font-size:85%;"&gt;ServerRoot "..."&lt;br /&gt;Listen 80&lt;br /&gt;LoadModule authz_host_module libexec/apache2/mod_authz_host.so&lt;br /&gt;LoadModule include_module libexec/apache2/mod_include.so&lt;br /&gt;LoadModule log_config_module libexec/apache2/mod_log_config.so&lt;br /&gt;LoadModule expires_module libexec/apache2/mod_expires.so&lt;br /&gt;LoadModule mime_module libexec/apache2/mod_mime.so&lt;br /&gt;LoadModule dir_module libexec/apache2/mod_dir.so&lt;br /&gt;&lt;br /&gt;&lt;ifmodule&gt;&lt;br /&gt;&lt;ifmodule&gt;&lt;br /&gt;User www&lt;br /&gt;Group www&lt;br /&gt;&lt;/ifmodule&gt;&lt;br /&gt;&lt;/ifmodule&gt;&lt;br /&gt;&lt;br /&gt;ServerAdmin esuyer at gmail dot com&lt;br /&gt;UseCanonicalName Off&lt;br /&gt;ServerSignature Off&lt;br /&gt;HostnameLookups Off&lt;br /&gt;ServerTokens Prod&lt;br /&gt;DocumentRoot ".../www"&lt;br /&gt;Timeout 300&lt;br /&gt;KeepAlive On&lt;br /&gt;MaxKeepAliveRequests 100&lt;br /&gt;KeepAliveTimeout 15&lt;br /&gt;&lt;ifmodule&gt;&lt;br /&gt;    MinSpareServers 5&lt;br /&gt;    MaxSpareServers 10&lt;br /&gt;    StartServers 5&lt;br /&gt;    MaxClients 150&lt;br /&gt;    MaxRequestsPerChild 0&lt;br /&gt;&lt;/ifmodule&gt;&lt;br /&gt;&lt;directory&gt;&lt;br /&gt;    Options None&lt;br /&gt;    AllowOverride None&lt;br /&gt;    Order deny,allow&lt;br /&gt;    Deny from all&lt;br /&gt;&lt;/directory&gt;&lt;br /&gt;&lt;directory&gt;&lt;br /&gt;    Options +Includes&lt;br /&gt;    Order allow,deny&lt;br /&gt;    Allow from all&lt;br /&gt;&lt;/directory&gt;&lt;br /&gt;&lt;ifmodule&gt;&lt;br /&gt;    DirectoryIndex index.htm&lt;br /&gt;&lt;/ifmodule&gt;&lt;br /&gt;&lt;filesmatch&gt;&lt;br /&gt;    Order allow,deny&lt;br /&gt;    Deny from all&lt;br /&gt;    Satisfy All&lt;br /&gt;&lt;/filesmatch&gt;&lt;br /&gt;&lt;files&gt;&lt;br /&gt;    Order allow,deny&lt;br /&gt;    Deny from all&lt;br /&gt;    Satisfy All&lt;br /&gt;&lt;/files&gt;&lt;br /&gt;&lt;directorymatch&gt;&lt;br /&gt;    Order allow,deny&lt;br /&gt;    Deny from all&lt;br /&gt;    Satisfy All&lt;br /&gt;&lt;/directorymatch&gt;&lt;br /&gt;ErrorLog "/private/var/log/apache2/error_log"&lt;br /&gt;LogLevel warn&lt;br /&gt;&lt;ifmodule&gt;&lt;br /&gt;    LogFormat "%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined&lt;br /&gt;    LogFormat "%h %l %u %t \"%r\" %&gt;s %b" common&lt;br /&gt;&lt;br /&gt;    &lt;ifmodule&gt;&lt;br /&gt;          LogFormat "%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio&lt;br /&gt;    &lt;/ifmodule&gt;&lt;br /&gt;&lt;br /&gt;    CustomLog "/private/var/log/apache2/access_log" common&lt;br /&gt;&lt;/ifmodule&gt;&lt;br /&gt;&lt;br /&gt;&lt;ifmodule&gt;&lt;br /&gt;    ScriptAliasMatch ^/cgi-bin/((?!(?i:webobjects)).*$) "/Library/WebServer/CGI-Executables/$1"&lt;br /&gt;&lt;/ifmodule&gt;&lt;br /&gt;&lt;br /&gt;DefaultType text/plain&lt;br /&gt;&lt;br /&gt;&lt;ifmodule&gt;&lt;br /&gt;    TypesConfig /private/etc/apache2/mime.types&lt;br /&gt;    AddType application/x-compress .Z&lt;br /&gt;    AddType application/x-gzip .gz .tgz&lt;br /&gt;    AddType text/html .shtml&lt;br /&gt;    AddOutputFilter INCLUDES .shtml&lt;br /&gt;&lt;/ifmodule&gt;&lt;br /&gt;&lt;br /&gt;Include /private/etc/apache2/extra/httpd-vhosts.conf&lt;br /&gt;&lt;ifmodule&gt;&lt;br /&gt;SSLRandomSeed startup builtin&lt;br /&gt;SSLRandomSeed connect builtin&lt;br /&gt;&lt;/ifmodule&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Compared to the default configuration file, the following important changes have been made:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The number of enabled modules has been reduced to minimum.&lt;/li&gt;&lt;li&gt;Apache's processes (except for the root process) are set to be executed with unique regular user/group privileges.&lt;/li&gt;&lt;li&gt;Apache discloses the least information about itself as possible.&lt;/li&gt;&lt;li&gt;Access rights to the website's content are set to be more restrictive.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1998697246004460183-4686112821948396260?l=esuyer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esuyer.blogspot.com/feeds/4686112821948396260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://esuyer.blogspot.com/2009/07/how-to-harden-your-imac-apache-web.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/4686112821948396260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/4686112821948396260'/><link rel='alternate' type='text/html' href='http://esuyer.blogspot.com/2009/07/how-to-harden-your-imac-apache-web.html' title='How to harden your iMac Apache Web Server'/><author><name>Ed</name><uri>http://www.blogger.com/profile/04013664161963025413</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_b1ES5_glZJQ/SlRpwSrQTcI/AAAAAAAAAC0/is3fgrDdr_o/S220/edwrites.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1998697246004460183.post-2895958985670818319</id><published>2009-07-15T20:21:00.006-04:00</published><updated>2009-11-12T09:57:02.333-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qnxt'/><title type='text'>QNXT Integration Specialist Job Description</title><content type='html'>If you are planning to customize &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; with functionality that is specific to your business, you have several options. All of these options revolve around application integration; under the &lt;a href="http://www.trizetto.com/"&gt;TriZetto&lt;/a&gt; license, you do not have the rights to customize the &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; application itself. You will need to fill several roles in your organization to make this happen. One of these roles is an Integration Specialist. Here is a job description for this role.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Position Description&lt;/span&gt;&lt;br /&gt;The Integration Specialist is responsible for designing, developing and implementing software solutions based on requirements from the business, with an emphasis on enterprise solution development utilizing Microsoft BizTalk Server 2006, SQL Server 2005 and .NET. We need a cooperative team player who can work closely with a manager and team members as well as alone. Ability to function well in fast-paced work environment and the ability to work on multiple time-sensitive projects concurrently are necessary. Excellent written and verbal communication skills, as well as detailed-oriented organizational skills are also required. Software development experience should include extensive object-oriented design experience.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Required Skills:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Minimum of 7 years in-depth hands-on development experience with Object Oriented Analysis, Design and Development of custom .net applications and application integrations.&lt;/li&gt;&lt;li&gt;Minimum of 5 years development experience with C# .NET&lt;/li&gt;&lt;li&gt;Minimum of 4 years development experience with SQL Server, and T-SQL&lt;/li&gt;&lt;li&gt;One of the following:&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;Minimum of 2 years development experience with BizTalk 2006&lt;/li&gt;&lt;li&gt;Minimum of 2 years development experience with SSIS 2005&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;Strong verbal/written communication skills&lt;/li&gt;&lt;li&gt;Demonstrated ability to be productive independently and/or as a team member&lt;/li&gt;&lt;li&gt;Strong organizational, interpersonal and analytical skills&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;You’ll notice I did not include &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; experience … &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; experience would be ideal. QNXT Hosting experience would be nirvana. I had no luck finding people with any &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; experience in Worcester, MA. And I’m reasonably certain we were well above the average salary range for this position. At the time of writing this, there are exactly 3 &lt;a href="http://www.trizetto.com/hpServices/hostingServices.asp"&gt;QNXT Hosting&lt;/a&gt; customers. I’m not sure that &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; has the market penetration to warrant an effective match on this skill set. In place of &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; experience, I recommend all Integration Specialists go through this first 90 day plan&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;First 90 days&lt;/span&gt;&lt;br /&gt;Look for more posts on each item below (coming soon on this blog). If you are at the beginning of your implementation project, you may find yourself with some down time while planning is happening. Use this window to allow this 90 day plan to occur. This research/education is invaluable in my opinion.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Certified Product Professional – Technical System Integration training. This is a &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; certification&lt;/li&gt;&lt;li&gt;Install &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; and the &lt;a href="http://esuyer.blogspot.com/2009/11/creating-authorization-or-referral-with.html"&gt;QNXT SDK&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Write a simple .net console app that uses the &lt;a href="http://esuyer.blogspot.com/2009/11/creating-authorization-or-referral-with.html"&gt;QNXT SDK&lt;/a&gt; i.e. create an authorization&lt;/li&gt;&lt;li&gt;If you are a hosting customer,&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;Write an SSIS package that is HBA Compliant and that adheres to the Self Service deployment structure&lt;/li&gt;&lt;li&gt;Deploy and Execute to hosting using the Self Service facilities&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;Create build/make scripts for your deployment artifacts i.e. using nant or other .net scripting tools&lt;/li&gt;&lt;li&gt;Create unit tests for your deployment artifacts i.e. using nunit, fit or other automated testing tools&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1998697246004460183-2895958985670818319?l=esuyer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esuyer.blogspot.com/feeds/2895958985670818319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://esuyer.blogspot.com/2009/07/qnxt-integration-specialist-job.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/2895958985670818319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/2895958985670818319'/><link rel='alternate' type='text/html' href='http://esuyer.blogspot.com/2009/07/qnxt-integration-specialist-job.html' title='QNXT Integration Specialist Job Description'/><author><name>Ed</name><uri>http://www.blogger.com/profile/04013664161963025413</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_b1ES5_glZJQ/SlRpwSrQTcI/AAAAAAAAAC0/is3fgrDdr_o/S220/edwrites.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1998697246004460183.post-2754984614490616789</id><published>2009-07-14T05:35:00.007-04:00</published><updated>2009-11-12T09:57:53.256-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qnxt'/><category scheme='http://www.blogger.com/atom/ns#' term='trizetto'/><category scheme='http://www.blogger.com/atom/ns#' term='hosting'/><title type='text'>QNXT Custom Database</title><content type='html'>&lt;span style="font-style: italic;"&gt;Warning: this post is not for the faint of heart. I will be discussing the customization of &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are two types of customization that you can do with &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt;: configuration and custom coding. Configuration is a business process. You configure &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt;, by defining your business rules using the configuration functionality built in to &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt;. Some common configurations health plans apply in &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; are the business rules around adjudicating claims, member eligibility verification, and authorizations. There are many business processes that you can configure using the native, or out of the box, functionality provided by &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Custom coding is a development process. There are two types of custom code development: supported and unsupported. I’m going to cover the differences between supported and unsupported code in another post. Supported and unsupported code are both deployed to the &lt;span style="font-weight: bold;"&gt;QNXT Custom Database&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Custom coding is &lt;span style="font-weight: bold;"&gt;not&lt;/span&gt; used to enhance the QNXT application itself. Put another way, the QNXT application is not something that can be modified under the QNXT license and support agreement. Custom coding is used to extend QNXT, or to allow for integration with QNXT. These customizations are applied outside of QNXT itself. Some common examples of custom code are extracts and interfaces to other line of business applications like Finance/Accounting, CRM and Case Management.&lt;br /&gt;&lt;br /&gt;QNXT allows for several points of integration. The ones we use are: the QNXT SDK (which I will cover in a separate post), and the QNXT Custom Database. The purpose of the QNXT Custom Database is to provide a layer of abstraction over the out of the box QNXT database called Plan Data. Changes that ordinarily could be applied to Plan Data, by way of new stored procedures, views, and other database objects, are applied to this Custom database instead. This way the Plan Data database remains unchanged. And all customer customizations are one place, the Custom database.&lt;br /&gt;&lt;br /&gt;The QNXT Custom Database hosts all custom database code, as well as any data that supports these customizations. There is also a QNXT Stage Database. This database is also used for customization. The difference is the Stage database is permanent in structure, but temporary in storage. It is a temp database. If you have an extract for example, that requires some pre-processing or post-processing, you can temporarily host your interim-state data in Stage.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TriZetto Hosting&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What I’ve described so far is true of all QNXT installations. These next few paragraphs speak to the specifics of the QNXT Custom Database if you are a &lt;a href="http://www.trizetto.com/hpServices/hostingServices.asp"&gt;hosting customer&lt;/a&gt;. Each QNXT environment hosts a QNXT Custom and Stage database. If you have regions that have several environments this likely means that a single SQL Server instance at TriZetto hosts several Custom and Stage databases. So for example, in a single database instance, you may have development, unit test, training and configuration version of the Custom and Stage database. So eight databases in total. This creates an interesting custom code promotion problem. I think a typical scenario that most of us are used to when promoting a change from development, to unit test, to model office and production, you expect the database names in each of these environments to be the same. With the QNXT Custom Database at &lt;a href="http://www.trizetto.com/hpServices/hostingServices.asp"&gt;TriZetto Hosting&lt;/a&gt; this is not the case. You promote from Custom_Dev, to Custom_UT, to Custom_PPMO, and Custom_Prod.&lt;br /&gt;&lt;br /&gt;There are a couple of solutions to this problem. Trizetto supports a ticket-based promotion process that will support these name changes as you promote up. So in this example, a customer may choose to setup a promotion process where they deliver custom code to the Custom_Dev database, and Trizetto manages the promotion of these changes going forward. This promotion process is custom tailored to customer needs. In our case, we chose our first promotion group to be PPMO. This means we manage the delivery of code to Custom_Dev, Custom_UT and Custom_PPMO, which puts more of this burden on us. We chose to do this because we realized a time savings during our implementation effort by opening fewer tickets. Instead of putting in a ticket (which may have a 24 to 48 hour turnaround depending on the change) to promote to Custom_Dev, we delivered the code there ourselves, an didn’t engage the ticketing system until we needed to deploy to Custom_PPMO. By this time, the custom code had gone through development, quality assurance and user acceptance testing.&lt;br /&gt;&lt;br /&gt;If you are a hosting customer, you’ll likely be executing code in the QNXT Custom Database using a job scheduler and the TriZetto Hosted Batch Architecture (also known as the HBA, more on this in another post) which has Common System Properties that allow you to connect to the QNXT Custom Database.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1998697246004460183-2754984614490616789?l=esuyer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esuyer.blogspot.com/feeds/2754984614490616789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://esuyer.blogspot.com/2009/07/qnxt-custom-database.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/2754984614490616789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/2754984614490616789'/><link rel='alternate' type='text/html' href='http://esuyer.blogspot.com/2009/07/qnxt-custom-database.html' title='QNXT Custom Database'/><author><name>Ed</name><uri>http://www.blogger.com/profile/04013664161963025413</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_b1ES5_glZJQ/SlRpwSrQTcI/AAAAAAAAAC0/is3fgrDdr_o/S220/edwrites.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1998697246004460183.post-3221386103853540359</id><published>2009-07-14T05:33:00.002-04:00</published><updated>2009-11-12T09:58:32.924-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qnxt'/><category scheme='http://www.blogger.com/atom/ns#' term='trizetto'/><category scheme='http://www.blogger.com/atom/ns#' term='hosting'/><title type='text'>Full Disclosure re QNXT</title><content type='html'>I hope to be writing a lot about &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; and &lt;a href="http://www.trizetto.com/hpServices/hostingServices.asp"&gt;TriZetto Hosting&lt;/a&gt; on this blog, so I wanted to make this clear to everyone reading this: I do not work for Trizetto, nor am I a partner of TriZetto’s. I work for a health plan that is a TriZetto customer. Everything I am writing here is about my experience and my point of view. My company went through a&amp;nbsp;three year implementation effort with &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; and &lt;a href="http://www.trizetto.com/hpServices/hostingServices.asp"&gt;TriZetto Hosting&lt;/a&gt;, ending in 2010. We were TriZetto’s very first hosting customer. A large part of the reason I started this blog is I am interested in collaborating with the QNXT community. I encourage you to ask a question, leave a comment, tell me about your experience, and/or challenge my views.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1998697246004460183-3221386103853540359?l=esuyer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esuyer.blogspot.com/feeds/3221386103853540359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://esuyer.blogspot.com/2009/07/full-disclosure-re-qnxt.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/3221386103853540359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/3221386103853540359'/><link rel='alternate' type='text/html' href='http://esuyer.blogspot.com/2009/07/full-disclosure-re-qnxt.html' title='Full Disclosure re QNXT'/><author><name>Ed</name><uri>http://www.blogger.com/profile/04013664161963025413</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_b1ES5_glZJQ/SlRpwSrQTcI/AAAAAAAAAC0/is3fgrDdr_o/S220/edwrites.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1998697246004460183.post-4508392087102415016</id><published>2009-07-02T14:35:00.005-04:00</published><updated>2009-11-12T09:49:06.024-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharing'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>How to connect your Apple TimeCapsule to an existing network</title><content type='html'>1. Unpack your Apple TimeCapsule&lt;br /&gt;&lt;br /&gt;2. Plug in a network cable into a LAN port on your TimeCapsule, and a LAN port on your existing network/router. Then plug in the TimeCapsule power cable to a power outlet. When the TimeCapsule comes on and configures itself, a blinking amber light will be on. This signifies a network connection problem. The next few steps will fix this problem. &lt;br /&gt;&lt;br /&gt;3. On your MAC, Airport Utility should pop up after a few minutes. This comes out of the box with Leopard, but it also comes on the install CD that accompanies the TimeCapsule&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_b1ES5_glZJQ/Skz-j65qFQI/AAAAAAAAACk/HzNUP-WJk1E/s1600-h/Picture+1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5353933950096643330" src="http://4.bp.blogspot.com/_b1ES5_glZJQ/Skz-j65qFQI/AAAAAAAAACk/HzNUP-WJk1E/s400/Picture+1.png" style="cursor: pointer; display: block; height: 262px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;4. Click the Manual Setup button&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_b1ES5_glZJQ/Skz-9XUQdqI/AAAAAAAAACs/mGrzbPHr4nY/s1600-h/Picture+2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5353934387221132962" src="http://4.bp.blogspot.com/_b1ES5_glZJQ/Skz-9XUQdqI/AAAAAAAAACs/mGrzbPHr4nY/s400/Picture+2.png" style="cursor: pointer; display: block; height: 289px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;5. Click Internet in top navigation. Then under Connection Sharing, select "Off (Bridge Mode)". Then click the Update button. The TimeCapsule will reboot, and will come back up with a solid green status light, signifying it is ready to use.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you don't need it, recommend you also turn the Wireless Network off.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1998697246004460183-4508392087102415016?l=esuyer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esuyer.blogspot.com/feeds/4508392087102415016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://esuyer.blogspot.com/2009/07/how-to-connect-your-apple-timecapsule.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/4508392087102415016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/4508392087102415016'/><link rel='alternate' type='text/html' href='http://esuyer.blogspot.com/2009/07/how-to-connect-your-apple-timecapsule.html' title='How to connect your Apple TimeCapsule to an existing network'/><author><name>Ed</name><uri>http://www.blogger.com/profile/04013664161963025413</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_b1ES5_glZJQ/SlRpwSrQTcI/AAAAAAAAAC0/is3fgrDdr_o/S220/edwrites.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_b1ES5_glZJQ/Skz-j65qFQI/AAAAAAAAACk/HzNUP-WJk1E/s72-c/Picture+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1998697246004460183.post-1149580468758437929</id><published>2009-06-08T20:58:00.004-04:00</published><updated>2009-11-12T09:58:56.295-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qnxt'/><category scheme='http://www.blogger.com/atom/ns#' term='trizetto'/><category scheme='http://www.blogger.com/atom/ns#' term='hosting'/><title type='text'>TriZetto QNXT Hosting and Time Zone</title><content type='html'>&lt;a href="http://www.trizetto.com/hpServices/hostingServices.asp"&gt;TriZetto Hosting's&lt;/a&gt; answer to the &lt;a href="http://esuyer.blogspot.com/2009/05/setting-time-zone-in-your-net.html"&gt;Time Zone Globalization problem&lt;/a&gt; is to set the Server Time on the Operating System to Time Zone of their customers. This way, without having to make any coding changes to the &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;QNXT&lt;/a&gt; application, they can store datetime data in their customer's Time Zone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1998697246004460183-1149580468758437929?l=esuyer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esuyer.blogspot.com/feeds/1149580468758437929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://esuyer.blogspot.com/2009/06/trizetto-qnxt-hosting-and-time-zone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/1149580468758437929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/1149580468758437929'/><link rel='alternate' type='text/html' href='http://esuyer.blogspot.com/2009/06/trizetto-qnxt-hosting-and-time-zone.html' title='TriZetto QNXT Hosting and Time Zone'/><author><name>Ed</name><uri>http://www.blogger.com/profile/04013664161963025413</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_b1ES5_glZJQ/SlRpwSrQTcI/AAAAAAAAAC0/is3fgrDdr_o/S220/edwrites.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1998697246004460183.post-7597455697708590016</id><published>2009-05-17T21:45:00.002-04:00</published><updated>2009-05-17T21:55:32.815-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hosting'/><title type='text'>Setting a Time Zone in your .NET application</title><content type='html'>&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;One important consideration when designing software systems is &lt;b&gt;globalization&lt;/b&gt;.  This is nothing new - we have had software for many years that must transcend various cultures and languages.  But there is an aspect of globalization that has become more mainstream in the last two years - Time Zone globalization.  The evidence I offer you to substantiate this opinion is that in the last two years M$ has released major version of two product lines - SQL Server 2008 and the .NET Framework 3.5, which have features that specifically target the Time Zone globalization problem (The TimeZoneInfo and DateTimeOffset classes in .NET 3.5, and the DateTimeOffset Data Type in SQL Server 2008)&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;The Time Zone globalization problem is not new.  On Google, I found articles about solving this problem that date back to 2000 and beyond.  I think what makes this problem more relevant today is that software systems are more distributed; managed software (aka hosted software), software as a service, and software in the cloud are more mainstream today than ever before.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;b&gt;What is the Time Zone globalization problem?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;I’m going to attempt to describe this problem in the form of an example.  You are  a software company.  10 years ago you built a web application that you sell and license to your customers.  Your product is very good and has exploded in popularity.  Last year you decided to expand your product line by offering this product as a managed service.  Now, instead of owning a license to your product, you host the product, and your customers pay for the privilege of using it on a subscription basis.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;When your customers license and own your product - there is no Time Zone problem.  Your customers install your product on their servers where they have complete control of the Time Zones.  If your customer is a Massachusetts company, but their data center is in Colorado - it makes no difference.  The customer is in control of the data center; if they want to set all of their Colorado servers to Eastern Time because that is what makes sense to their business, that is their prerogative.  &lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;When your customers subscribe to your managed service - there is a potential Time Zone problem.  You, as the managed service provider, are in control of the software and the servers, and thereby in control of the Time Zone on those servers.  Your hosting data center is in Colorado, so therefore you set the Time Zone to Mountain Time.  This presents the first side effect of the Time Zone globalization problem:&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;i&gt;Your customer’s data is now in your local Time Zone, not theirs.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;This may lead to various usability problems.  You’re customers employees, who are users of your product, will have to convert back and fourth between their local Time Zone and Mountain Time.  For example, lets say the hosted application is a Customer Service Call Center.  If a Customer Service Rep wants to set a call back reminder for 2pm Eastern Time, they’ll have to remember to set the reminder to 4pm (because the server Time Zone is Mountain Time which is offset by 2 hours from Eastern Time).&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;Lets take this example a bit further.  For various system integration reasons, you exchange data on a regular basis with your customers.   You’re customer sends you data in one Time Zone, you send data back in another.  This presents the next side effect of the Time Zone globalization problem: &lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;i&gt;&lt;blockquote&gt;Your customer’s data is no longer in one Time Zone.&lt;/blockquote&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;This may lead to various business rule problems.  For example, lets say the hosted application is a claims processing application, and the customer hosts their financial accounting application in-house in a different Time Zone.  To reconcile claims against payments you exchange data on a nightly basis.  Every so often, the job runs past 2:00am Mountain Time, which increments to the next day on the server, and pickups the next day of claims.  This is an unexpected condition and the job fails.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;b&gt;Possible Solutions&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;There are several ways to solve this problem.  One possible solution is to set the server, or operating system time, to the Time Zone of your customer.  This way we are back to one Time Zone and this problem ceases to exist.  This solution is not always possible.  If you are a managed service provider, you likely have customer across various Time Zones.  So setting server time to Eastern Time may help one customer, and ale another.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;Another possibility is to fix this problem at the database level.  With SQL Server 2005, the datetime data type is stored as two 4-byte integers.  The first 4 bytes store the number of days before or after 1/1/1900.  The second four bytes store the time of day represented as the number of 1/300-second units after midnight.  This data type is not Time Zone aware.  So SQL Server 2005 is not Time Zone aware.  If you are storing the datetime “5/17/2009 20:00”, SQL Server has no way to distinguish if you mean Eastern Time, Mountain Time, or another Time Zone.  With SQL Server 2005, you can write some programming code that uses the CONVERT function to convert between Time Zones either when the data is stored or queried.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;With SQL Server 2008, there is a new data type: DateTimeOffset which is Time Zone aware:&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color:#000099;"&gt;&lt;span style="text-decoration: underline ; letter-spacing: 0.0px"&gt;&lt;a href="http://blogs.msdn.com/manisblog/archive/2007/08/28/sql-server-2008-enhancements-in-date-and-time-data-types.aspx"&gt;http://blogs.msdn.com/manisblog/archive/2007/08/28/sql-server-2008-enhancements-in-date-and-time-data-types.aspx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;Using this data type, the Time Zone can be stored along with the date/time.  This does not solve the usability problem described above, as you will still need to convert to display the datetime in a different Time Zone.  But it does help you in solving the systems problem when exchanging data.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;The third possibility is to solve this problem in the application itself.  When this issue came up for me at work this week, I set out looking for the magic &lt;a href="http://web.config/"&gt;&lt;span style="text-decoration: underline ; letter-spacing: 0.0px color:#000099;"&gt;web.config&lt;/span&gt;&lt;/a&gt; setting that would enable us to set the Time Zone to Eastern Time.  Unfortunately, this setting does not exist out of the box.  The setting I was thinking of was &lt;a href="http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.aspx"&gt;CultureInfo&lt;/a&gt; which lets you set how date/time information is formatted for display (i.e. 05/17/2009 or 05-May-2009, etc.,).  But there is no setting for Time Zone.  &lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;However, writing your own setting is relatively straight forward.  The first thing you’ll need to decide is your reference Time Zone.  GMT/UTC is the real-life model of the reference Time Zone.   So my recommendation is to reference all of your date/time properties and fields using the built-in UTC directives in .NET and SQL Server.  This is optional.  But it will make the rest of what I’m about to suggest easier on you.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;To reference data in UTC, stop using server time, and start using UTC time.  Put another way, stop using DateTime.Now in .NET and GETDATE() in SQL Server, and start using DateTime.UtcNow and GETUTCDATE().  Here is a good article by Scott Mitchell that shows some code examples&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color:#000099;"&gt;&lt;span style="text-decoration: underline ; letter-spacing: 0.0px"&gt;&lt;a href="http://aspnet.4guysfromrolla.com/articles/081507-1.aspx"&gt;http://aspnet.4guysfromrolla.com/articles/081507-1.aspx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;br /&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;Next, at some point, either before storing or before displaying your data you will need to convert from your reference Time Zone to your local Time Zone.  This is where the TimeZoneInfo class (new with .NET 3.5) comes in to play:&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color:#000099;"&gt;&lt;span style="text-decoration: underline ; letter-spacing: 0.0px"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.timezoneinfo.aspx"&gt;http://msdn.microsoft.com/en-us/library/system.timezoneinfo.aspx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;Here is a quick code example which will convert your local time to Hawaiian Standard Time:&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 16.0px; font: 11.0px Courier New"&gt;&lt;span style="letter-spacing: 0.0px"&gt;DateTime nowDateTime = DateTime.UtcNow;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 16.0px; font: 11.0px Courier New"&gt;&lt;span style="letter-spacing: 0.0px"&gt;DateTime newDateTime = TimeZoneInfo.ConvertTime(&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 16.0px; font: 11.0px Courier New"&gt;&lt;span style="letter-spacing: 0.0px"&gt;    nowDateTime,&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 16.0px; font: 11.0px Courier New"&gt;&lt;span style="letter-spacing: 0.0px"&gt;    TimeZoneInfo.FindSystemTimeZoneById(&lt;/span&gt;&lt;span style="letter-spacing: 0.0px ;color:#006181;"&gt;"Hawaiian Standard Time"&lt;/span&gt;&lt;span style="letter-spacing: 0.0px"&gt;));&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 16.0px; font: 11.0px Courier New"&gt;&lt;span style="letter-spacing: 0.0px"&gt;Console.WriteLine(&lt;/span&gt;&lt;span style="letter-spacing: 0.0px ;color:#006181;"&gt;"Now: {0}"&lt;/span&gt;&lt;span style="letter-spacing: 0.0px"&gt;, nowDateTime);&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 16.0px; font: 11.0px Courier New"&gt;&lt;span style="letter-spacing: 0.0px"&gt;Console.WriteLine(&lt;/span&gt;&lt;span style="letter-spacing: 0.0px ;color:#006181;"&gt;"Now in Hawaii: {0}"&lt;/span&gt;&lt;span style="letter-spacing: 0.0px"&gt;, newDateTime);&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;That’s it.  Not as easy as built-in &lt;a href="http://web.config/"&gt;&lt;span style="text-decoration: underline ; letter-spacing: 0.0px color:#000099;"&gt;web.config&lt;/span&gt;&lt;/a&gt; setting.  But this gives you the tools you need to build your own setting.   &lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span style="letter-spacing: 0.0px"&gt;If you have applied good separation of concerns, and application layering object oriented principals in your design, then applying this conversion right before you persist application data should be pretty straight forward.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1998697246004460183-7597455697708590016?l=esuyer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esuyer.blogspot.com/feeds/7597455697708590016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://esuyer.blogspot.com/2009/05/setting-time-zone-in-your-net.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/7597455697708590016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/7597455697708590016'/><link rel='alternate' type='text/html' href='http://esuyer.blogspot.com/2009/05/setting-time-zone-in-your-net.html' title='Setting a Time Zone in your .NET application'/><author><name>Ed</name><uri>http://www.blogger.com/profile/04013664161963025413</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_b1ES5_glZJQ/SlRpwSrQTcI/AAAAAAAAAC0/is3fgrDdr_o/S220/edwrites.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1998697246004460183.post-1879771196057062019</id><published>2009-05-15T20:09:00.007-04:00</published><updated>2009-05-15T20:42:36.909-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharing'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>Starting Apache 2.2 Web Server on Mac Leopard 10.5.6</title><content type='html'>I bought my iMac with Leopard OS pre-installed.  To start Apache, choose System Preferences from the dock.  Next choose Sharing&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 220px;" src="http://2.bp.blogspot.com/_b1ES5_glZJQ/Sg4FOuPLmuI/AAAAAAAAACU/HWCsAild-QU/s320/Picture+2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5336208358968629986" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And select Web Sharing.  &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_b1ES5_glZJQ/Sg4FiaWUKLI/AAAAAAAAACc/m3ldmMAd0g8/s1600-h/Picture+1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 260px;" src="http://2.bp.blogspot.com/_b1ES5_glZJQ/Sg4FiaWUKLI/AAAAAAAAACc/m3ldmMAd0g8/s320/Picture+1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5336208697227225266" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's it!  Apache Web Server is now running.  Click here to view your home page&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;http://127.0.0.1/&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Coming soon:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;How to harden your iMac Apache Web Server&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Enabling DDNS&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1998697246004460183-1879771196057062019?l=esuyer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esuyer.blogspot.com/feeds/1879771196057062019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://esuyer.blogspot.com/2009/05/starting-apache-22-web-server-on-mac.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/1879771196057062019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/1879771196057062019'/><link rel='alternate' type='text/html' href='http://esuyer.blogspot.com/2009/05/starting-apache-22-web-server-on-mac.html' title='Starting Apache 2.2 Web Server on Mac Leopard 10.5.6'/><author><name>Ed</name><uri>http://www.blogger.com/profile/04013664161963025413</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_b1ES5_glZJQ/SlRpwSrQTcI/AAAAAAAAAC0/is3fgrDdr_o/S220/edwrites.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_b1ES5_glZJQ/Sg4FOuPLmuI/AAAAAAAAACU/HWCsAild-QU/s72-c/Picture+2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1998697246004460183.post-4312654487754430352</id><published>2009-05-14T20:48:00.004-04:00</published><updated>2009-11-12T09:59:46.763-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qnxt'/><category scheme='http://www.blogger.com/atom/ns#' term='trizetto'/><category scheme='http://www.blogger.com/atom/ns#' term='hosting'/><title type='text'>TriZetto QNXT Hosting</title><content type='html'>&lt;div style="font: 12px Helvetica; margin: 0px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;About 18 months ago, my company decided to embark on a core system replacement project.&amp;nbsp; We sell health insurance, so our core system is used for processing claims, plan and benefit administration, and procuring new members and providers.&amp;nbsp; There were several reasons why we felt replacing our core system was a good idea.&amp;nbsp; Our old core system, GE IDX, was not designed for health plan administration.&amp;nbsp; And GE was about to end-of-life their support for this part of their product line.&amp;nbsp; Also the landscape of health insurance has been changing in Massachusetts for some time.&amp;nbsp; And we needed a core system that would help is be more agile when introducing changes, and helping us to stay ahead of an increasingly demanding list of customer needs.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 12px Helvetica; margin: 0px; min-height: 14px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 12px Helvetica; margin: 0px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;After evaluating a handful of leading vendors in this space, we settled with &lt;a href="http://www.trizetto.com/hpSolutions/qnxt.asp"&gt;TriZetto QNXT&lt;/a&gt; as our new core system.&amp;nbsp; We also decided to be the very first Trizetto Hosting customer (If you would like to hear more about how I feel about being “first” see my profile).&amp;nbsp; It’s for this reason that I decided that writing about QNXT and &lt;a href="http://www.trizetto.com/hpServices/hostingServices.asp"&gt;TriZetto Hosting&lt;/a&gt; would be one of the first topics I would cover in this blog.&amp;nbsp; I intend to write about&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 12px Helvetica; margin: 0px; min-height: 14px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li style="font: 12px Helvetica; margin: 0px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;The good, bad, and ugly of our implementation effort&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="font: 12px Helvetica; margin: 0px; min-height: 14px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li style="font: 12px Helvetica; margin: 0px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;The TriZetto Hosting environment&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="font: 12px Helvetica; margin: 0px; min-height: 14px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li style="font: 12px Helvetica; margin: 0px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;The QNXT SDK&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="font: 12px Helvetica; margin: 0px; min-height: 14px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li style="font: 12px Helvetica; margin: 0px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;How we built our own QNXT Web Portal&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="font: 12px Helvetica; margin: 0px; min-height: 14px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li style="font: 12px Helvetica; margin: 0px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;And last, but certainly not least: custom code delivery, promotion and deployment&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="font: 12px Helvetica; margin: 0px; min-height: 14px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 12px Helvetica; margin: 0px;"&gt;&lt;span style="letter-spacing: 0px;"&gt;If you are a &lt;a href="http://www.trizetto.com/"&gt;TriZetto&lt;/a&gt; customer like me, I hope you can relate to all or some of these topics, and that the things I have to write, will move you to leave a comment&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1998697246004460183-4312654487754430352?l=esuyer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esuyer.blogspot.com/feeds/4312654487754430352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://esuyer.blogspot.com/2009/05/trizetto-qnxt-hosting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/4312654487754430352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1998697246004460183/posts/default/4312654487754430352'/><link rel='alternate' type='text/html' href='http://esuyer.blogspot.com/2009/05/trizetto-qnxt-hosting.html' title='TriZetto QNXT Hosting'/><author><name>Ed</name><uri>http://www.blogger.com/profile/04013664161963025413</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_b1ES5_glZJQ/SlRpwSrQTcI/AAAAAAAAAC0/is3fgrDdr_o/S220/edwrites.jpg'/></author><thr:total>0</thr:total></entry></feed>
