<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
    <title>Andy Orrock | Payment Systems</title>
    
    <link rel="hub" href="http://hubbub.api.typepad.com/" />
    <link rel="alternate" type="text/html" href="http://www.andyorrock.com/" />
    <id>tag:typepad.com,2003:weblog-324662</id>
    <updated>2009-11-08T12:51:45-06:00</updated>
    <subtitle>Observations and lessons learned from real-world implementations of payment systems</subtitle>
    <generator uri="http://www.typepad.com/">TypePad</generator>
    <link rel="self" href="http://feeds.feedburner.com/AndyOrrockPaymentSystems" type="application/atom+xml" /><feedburner:emailServiceId>AndyOrrockPaymentSystems</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
        <title>jPOS-CMF!</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AndyOrrockPaymentSystems/~3/Z_wurBX_hV8/jpos-cmf.html" />
        <link rel="replies" type="text/html" href="http://www.andyorrock.com/2009/11/jpos-cmf.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8341c507153ef0120a6632a16970b</id>
        <published>2009-11-08T12:51:45-06:00</published>
        <updated>2009-11-08T21:43:25-06:00</updated>
        <summary>Yesterday, I made my first contribution to the jPOS Common Message Format (‘CMF’) effort. Alejandro writes about this good endeavor here. I’m really dipping my toe in the water here, as I have a lot to learn about DocBook, ...</summary>
        <author>
            <name>Andy Orrock</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.andyorrock.com/">&lt;p&gt;Yesterday, I made my first contribution to the &lt;a href="http://jpos.org"&gt;jPOS&lt;/a&gt; Common Message Format (‘CMF’) effort.  Alejandro writes about this good endeavor &lt;a href="http://jpos.org/blog/2009/08/jpos-cmf/"&gt;here&lt;/a&gt;.  I’m really dipping my toe in the water here, as I have a lot to learn about &lt;a href="http://en.wikipedia.org/wiki/Docbook"&gt;DocBook&lt;/a&gt;, &lt;a href="http://www.oxygenxml.com/"&gt;&amp;lt;oXygen/&amp;gt;&lt;/a&gt; (the XML authoring tool I’m using per APR’s suggestion) and GitHub, where &lt;a href="http://github.com/ar/jPOS-CMF"&gt;the jPOS-CMF sources&lt;/a&gt; are located as a public repository.  I made some small changes based on my observation that fields like Function Code (ISO 8583:2003 DE 24) and Reason Code (DE 25) and a few others needed some further definition.  The result of my updates is v1.0.4 of the doc, which you can get &lt;a href="http://jpos.org/doc/jPOS-CMF.pdf"&gt;here&lt;/a&gt;.  &lt;/p&gt;  &lt;p&gt;This was an appropriate juncture for me to take a stab at jumping into the jPOS-CMF pool with Alejandro, &lt;a href="http://www.paymentsystemsblog.com"&gt;Dave&lt;/a&gt; and Mark.  &lt;a href="http://www.olsdallas.com"&gt;OLS&lt;/a&gt; has also &lt;a href="http://www.andyorrock.com/2009/06/adopting-the-iso-8583-12003-standard.html"&gt;based our IMF on the ISO 8583:2003 standard&lt;/a&gt; and with our recent focus on a &lt;a href="http://jpos.org/blog/2008/06/jcard-and-jpts/"&gt;jCard&lt;/a&gt;-related implementation, Dave, Allen and I have spent many hours over the past couple of weeks iterating over our ‘filter’ mechanics (i.e., how to ‘map’ into our CMF from a gateway or other interface) and, specifically, how to use Function Code and Reason Code values to differentiate transaction types for proper &lt;a href="http://www.andyorrock.com/2007/02/the_jpos_transa.html"&gt;TransactionManager&lt;/a&gt; identification, routing and participant flow.  &lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?a=Z_wurBX_hV8:7qgd96_JGTw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AndyOrrockPaymentSystems/~4/Z_wurBX_hV8" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.andyorrock.com/2009/11/jpos-cmf.html</feedburner:origLink></entry>
    <entry>
        <title>Thats a lot more candy</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AndyOrrockPaymentSystems/~3/V5x2nBGnz1s/thats-a-lot-more-candy.html" />
        <link rel="replies" type="text/html" href="http://www.andyorrock.com/2009/11/thats-a-lot-more-candy.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8341c507153ef0120a6490c36970b</id>
        <published>2009-11-01T21:26:38-06:00</published>
        <updated>2009-11-01T21:26:38-06:00</updated>
        <summary>With Halloween falling on a Saturday this year, I thought Friday might be the big day for shoppers to stock up on candy. As Maxwell Smart would say, “Missed it by that much.” Saturday, this nation’s proud procrastinator majority once...</summary>
        <author>
            <name>Andy Orrock</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Real Systems" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.andyorrock.com/">&lt;p&gt;&lt;a href="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a6490c20970b-pi"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 5px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="halloween_pumpkin" border="0" alt="halloween_pumpkin" align="left" src="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a6490c33970b-pi" width="143" height="127"&gt;&lt;/img&gt;&lt;/a&gt;With Halloween falling on a Saturday this year, I thought Friday might be the big day for shoppers to stock up on candy.  &lt;/p&gt;  &lt;p&gt;As Maxwell Smart would say, “Missed it by that much.”&lt;/p&gt;  &lt;p&gt;Saturday, this nation’s &lt;a href="http://www.andyorrock.com/2008/02/february-14th-.html"&gt;proud procrastinator majority&lt;/a&gt; once again rose up and demanded to be counted!  Saturday ended up slightly &lt;a href="http://www.andyorrock.com/2009/10/thats-a-lot-of-candy.html"&gt;outpacing Friday&lt;/a&gt;, 1,314,260 transactions to 1,294,736.  That’s slightly over 2.5 million payment transaction requests serviced over a two-day period at &lt;a href="http://www.olsdallas.com"&gt;OLS’&lt;/a&gt; flagship acquirer implementation.  &lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?a=V5x2nBGnz1s:M6WJy09N_sU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AndyOrrockPaymentSystems/~4/V5x2nBGnz1s" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.andyorrock.com/2009/11/thats-a-lot-more-candy.html</feedburner:origLink></entry>
    <entry>
        <title>OLS new offices</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AndyOrrockPaymentSystems/~3/myy8p_mXFy4/ols-new-offices.html" />
        <link rel="replies" type="text/html" href="http://www.andyorrock.com/2009/10/ols-new-offices.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8341c507153ef0120a69a5757970c</id>
        <published>2009-10-31T14:43:46-05:00</published>
        <updated>2009-10-31T14:45:43-05:00</updated>
        <summary>OLS is movin’ on up. To the 11th floor that is. Our hard-earned successes and recent growth spurt have led us to build out nice new offices at our 7920 Belt Line Road location in Dallas, Texas. For those of...</summary>
        <author>
            <name>Andy Orrock</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.andyorrock.com/">&lt;p&gt;&lt;a href="http://www.olsdallas.com"&gt;OLS&lt;/a&gt; is movin’ on up.  &lt;/p&gt;  &lt;p&gt;To the 11th floor that is.  Our hard-earned successes and recent growth spurt have led us to build out nice new offices at our 7920 Belt Line Road location in Dallas, Texas.  For those of you that are familiar with the North Dallas area, we’re at the southwest corner of Belt Line and Coit, equidistant from North Central Expressway, I-635 and the North Dallas Tollway.  We are, respectively, about two miles west, north and east of those major thoroughfares.  Check us out on &lt;a href="http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=on-line+strategies,+dallas&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=48.909425,114.169922&amp;amp;ie=UTF8&amp;amp;hq=on-line+strategies,&amp;amp;hnear=Dallas,+TX&amp;amp;ll=32.937522,-96.783371&amp;amp;spn=0.204002,0.445976&amp;amp;z=12&amp;amp;iwloc=A"&gt;Google Maps&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;And we’ve got a Starbuck’s within walking distance.  What’s not to love (even though they do keep it a sub-arctic 53 degrees or so inside the store)?&lt;/p&gt;  &lt;p&gt;Want to discuss your payment systems strategy and hear what we’ve done for others?  We look forward to hosting you at our offices.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?a=myy8p_mXFy4:uFgEcR0XrXI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AndyOrrockPaymentSystems/~4/myy8p_mXFy4" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.andyorrock.com/2009/10/ols-new-offices.html</feedburner:origLink></entry>
    <entry>
        <title>HP Greenbook: BASE24 upgrade options</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AndyOrrockPaymentSystems/~3/E04lEK-If2A/hp-greenbook-base24-upgrade-options.html" />
        <link rel="replies" type="text/html" href="http://www.andyorrock.com/2009/10/hp-greenbook-base24-upgrade-options.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8341c507153ef0120a644c809970b</id>
        <published>2009-10-31T13:51:48-05:00</published>
        <updated>2009-10-31T14:04:48-05:00</updated>
        <summary>Check out some great analysis by HP about the BASE24 displacement market. Money line: The Standish Group estimates that BASE24-eps migration coupled with a platform migration (IBM System Z9), both conducted within one year, would only be completely successful in...</summary>
        <author>
            <name>Andy Orrock</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Business" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.andyorrock.com/">&lt;p&gt;&lt;a href="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a69a384c970c-pi"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 5px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="green2" border="0" alt="green2" align="left" src="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a69a384f970c-pi" width="132" height="95"&gt;&lt;/img&gt;&lt;/a&gt; Check out &lt;a href="http://h20195.www2.hp.com/V2/GetPDF.aspx/4AA2-8602ENW.pdf"&gt;some great analysis by HP&lt;/a&gt; about the BASE24 displacement market.  &lt;/p&gt;  &lt;p&gt;Money line: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;The Standish Group estimates that BASE24-eps migration coupled with a platform migration (IBM System Z9), both conducted within one year, would only be completely successful in 18 percent of the cases.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;As my good friend Mitch Green of &lt;a href="http://www.distra.com/"&gt;Distra&lt;/a&gt; says:  ACI and IBM have given everyone in the payment systems industry a huge gift. &lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?a=E04lEK-If2A:ari2RsCzlTM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AndyOrrockPaymentSystems/~4/E04lEK-If2A" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.andyorrock.com/2009/10/hp-greenbook-base24-upgrade-options.html</feedburner:origLink></entry>
    <entry>
        <title>Thats a lot of candy</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AndyOrrockPaymentSystems/~3/OWDUrQTlM6I/thats-a-lot-of-candy.html" />
        <link rel="replies" type="text/html" href="http://www.andyorrock.com/2009/10/thats-a-lot-of-candy.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8341c507153ef0120a644b9a6970b</id>
        <published>2009-10-31T13:33:37-05:00</published>
        <updated>2009-10-31T13:35:10-05:00</updated>
        <summary>We processed 1,294,736 transactions at OLS’ flagship Acquirer-side payment systems implementation yesterday. Friday’s the peak day of the week there anyway, but the numbers got goosed by Halloween falling on a Saturday. Over a million of the transactions were to...</summary>
        <author>
            <name>Andy Orrock</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Real Systems" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.andyorrock.com/">&lt;p&gt;&lt;a href="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a644b9a2970b-pi"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="halloween" border="0" alt="halloween" align="left" src="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a69a2631970c-pi" width="170" height="127"&gt;&lt;/img&gt;&lt;/a&gt; We processed 1,294,736 transactions at &lt;a href="http://www.olsdallas.com"&gt;OLS’&lt;/a&gt; flagship Acquirer-side payment systems implementation yesterday.  Friday’s the peak day of the week there anyway, but the numbers got goosed by Halloween falling on a Saturday.  Over a million of the transactions were to service ‘core’ payment requests (Debit, Credit, EBT and Check). &lt;/p&gt;  &lt;p&gt;We’ll probably see another like-sized day today as retail customers across our client’s four US time zone presence stock up for Trick or Treat duties.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?a=OWDUrQTlM6I:zPoM-uAV5YU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AndyOrrockPaymentSystems/~4/OWDUrQTlM6I" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.andyorrock.com/2009/10/thats-a-lot-of-candy.html</feedburner:origLink></entry>
    <entry>
        <title>All you guys ever do is write documents</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AndyOrrockPaymentSystems/~3/MtV1HsQAfTc/all-you-guys-ever-do-is-write-documents.html" />
        <link rel="replies" type="text/html" href="http://www.andyorrock.com/2009/10/all-you-guys-ever-do-is-write-documents.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8341c507153ef0120a644b2d6970b</id>
        <published>2009-10-31T13:17:57-05:00</published>
        <updated>2009-10-31T13:20:14-05:00</updated>
        <summary>A few months back, a customer told me in a spurt of frustration “All you guys ever do is write documents.” This was early in our relationship. I could see how he could form that conclusion. We spend a good...</summary>
        <author>
            <name>Andy Orrock</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Business" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Specs" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.andyorrock.com/">&lt;p&gt;&lt;a href="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a644b2d0970b-pi"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 5px 5px 0px; display: inline; border-top: 0px; border-right: 0px" title="iStock_000004574010XSmall" border="0" alt="iStock_000004574010XSmall" align="left" src="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a69a1fb0970c-pi" width="181" height="240"&gt;&lt;/img&gt;&lt;/a&gt; A few months back, a customer told me in a spurt of frustration “All &lt;a href="http://www.olsdallas.com"&gt;you guys&lt;/a&gt; ever do is write documents.”  This was early in our relationship.  I could see how he could form that conclusion.  We spend a good portion of the early part of the project gathering business requirements and getting those on paper.  We don’t use any special approach or ‘school’ – we only seek to get the fine-grain details on paper in as ‘plain English’ as possible.  &lt;/p&gt;  &lt;p&gt;It is true that we can drive people a bit crazy with frequent revisions.  But we control that by using &lt;a href="http://basecamphq.com/"&gt;Basecamp&lt;/a&gt;, where it’s a cinch to corral and categorize documents and easily point to the latest revision of each one.  &lt;/p&gt;  &lt;p&gt;Of course, at a certain point in the project, we stand aside and let &lt;a href="http://www.paymentsystemsblog.com"&gt;Dave&lt;/a&gt; and his development team design and develop a solution based on what we’ve compiled.  That’s one thing we don’t do in the doc:  direct the developers to a certain design or approach.  If I’m telling Dave or Alejandro how to do something technical, we’re in trouble.  I accept that.  Like Harry Callahan always said: &lt;a href="http://www.imdb.com/title/tt0070355/quotes"&gt;Man’s got to know his limitations.&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Anyway – the proof is in the results: the success of our payment systems projects lies in the strength of these documents, which serve as a firm starting point.  This isn’t just me talking: &lt;a href="http://jpos.org/blog"&gt;Alejandro&lt;/a&gt; has told me the same thing – that when he does projects not related to OLS, he misses our documentation and attention to detail.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.prepaidenterprise.com"&gt;Randy&lt;/a&gt; tells me that when looking to demonstrate &lt;a href="http://www.olsdallas.com"&gt;OLS’&lt;/a&gt; capabilities to a sales prospect, he selects the most applicable documents from our growing repository, does the requisite redaction and presents those in lieu of any PowerPoint deck.  He says its an incredibly powerful tool.  &lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?a=MtV1HsQAfTc:PjczbXIS-vM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AndyOrrockPaymentSystems/~4/MtV1HsQAfTc" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.andyorrock.com/2009/10/all-you-guys-ever-do-is-write-documents.html</feedburner:origLink></entry>
    <entry>
        <title>Now, youre the switch</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AndyOrrockPaymentSystems/~3/MUbZCBN1K40/now-youre-the-switch.html" />
        <link rel="replies" type="text/html" href="http://www.andyorrock.com/2009/09/now-youre-the-switch.html" thr:count="3" thr:updated="2009-10-17T01:05:19-05:00" />
        <id>tag:typepad.com,2003:post-6a00d8341c507153ef0120a5f433af970c</id>
        <published>2009-09-26T13:48:01-05:00</published>
        <updated>2009-09-26T13:52:04-05:00</updated>
        <summary>Occasionally, along the OLS.Switch lifecycle – either at sales time, or during the initial installation, or somewhere down the road – we hear things like this from our customers and prospects: “Hand us the transaction because we can make a...</summary>
        <author>
            <name>Andy Orrock</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Real Systems" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.andyorrock.com/">&lt;p&gt;&lt;a href="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a5f435a4970c-pi"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 5px 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a5f435ac970c-pi" width="240" height="240"&gt;&lt;/img&gt;&lt;/a&gt; Occasionally, along the &lt;a href="http://www.olsdallas.com"&gt;OLS.Switch&lt;/a&gt; lifecycle – either at sales time, or during the initial installation, or somewhere down the road – we hear things like this from our customers and prospects:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;“Hand us the transaction because we can make a better decision on it.”&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;“We have a rules engine that is our ‘special sauce.’”&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;“We know more about the cardholder than you ever can.”&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;“Your proposed price is too high, so give us the transaction and we’ll implement the meat of it.”&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;“We just want you to act as a ‘pass-through’; we’ll do the real work.”&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;“The decision-making is where our IP is, so we want to do that.”&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;These are all very legitimate comments (well, expect the ‘pass-through’ comment – that grates on me…trust me, it’s never as easy as ‘just a pass-through’…grrrr).  We certainly don’t want or need to control all aspects of a transaction.  Nor do we want to stand in the way of the ability to make a better decision about a transaction request.  &lt;/p&gt;  &lt;p&gt;But here’s the thing: once we send the transaction to you, now &lt;strong&gt;&lt;em&gt;you’re&lt;/em&gt;&lt;/strong&gt; the switch.  What I mean by that is:  your application is now beholden to the same throughput, speed, efficiency, extensibility and 24x7x365 availability concerns that define our lives.  And while there have been many that have been up to the task, there have been countless other instances where that’s not been the case.  We’ve seen applications…&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;…toppling once past 1 TPS &lt;/li&gt;    &lt;li&gt;…needing to be recycled every Friday afternoon &lt;/li&gt;    &lt;li&gt;…not letting go of transactions threads &lt;/li&gt;    &lt;li&gt;…getting hopelessly confused and giving up responding to us &lt;/li&gt;    &lt;li&gt;…responding with crap system error messages &lt;/li&gt;    &lt;li&gt;…running out of resources &lt;/li&gt;    &lt;li&gt;…timing out 50% (or more) of all our requests &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If you go this route, just be careful what you ask for.  It’s about more than your application rules or that special thing you do: now, you’re the switch.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?a=MUbZCBN1K40:pOW13ti_FuM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AndyOrrockPaymentSystems/~4/MUbZCBN1K40" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.andyorrock.com/2009/09/now-youre-the-switch.html</feedburner:origLink></entry>
    <entry>
        <title>More TransactionManager Gymnastics</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AndyOrrockPaymentSystems/~3/S67Xn887y6w/more-transactionmanager-gymnastics.html" />
        <link rel="replies" type="text/html" href="http://www.andyorrock.com/2009/09/more-transactionmanager-gymnastics.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8341c507153ef0120a59ca8fa970b</id>
        <published>2009-09-26T09:52:30-05:00</published>
        <updated>2009-09-26T13:00:26-05:00</updated>
        <summary>Related Readings: Giving the TransactionManager a Workout The jPOS TransactionManager and Its Participants I was doing some more work today with jPOS TransactionManager (‘TM’) instances. We’re bringing a second FSA-enabled endpoint on-board at one of our Acquirer payment switch implementations....</summary>
        <author>
            <name>Andy Orrock</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Application Concepts" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Real Systems" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.andyorrock.com/">
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.andyorrock.com/2009/05/giving-the-transaction-manager-a-workout.html"&gt;&lt;/a&gt;&lt;a href="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a5f36674970c-pi"&gt;&lt;img style="border-right-width: 0px; margin: 0px 5px 5px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="left" src="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a59ca8f8970b-pi" width="135" height="135" /&gt;&lt;/a&gt;&lt;/a&gt;Related Readings:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.andyorrock.com/2009/05/giving-the-transaction-manager-a-workout.html"&gt;Giving the TransactionManager a Workout&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.andyorrock.com/2007/02/the_jpos_transa.html"&gt;The jPOS TransactionManager and Its Participants&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I was doing some more work today with &lt;a href="http://jpos.org"&gt;jPOS&lt;/a&gt; TransactionManager (‘TM’) instances.&amp;#160; We’re bringing a second &lt;a href="http://www.andyorrock.com/2008/07/flexible-spendi.html"&gt;FSA&lt;/a&gt;-enabled endpoint on-board at one of &lt;a href="http://www.olsdallas.com"&gt;our&lt;/a&gt; Acquirer payment switch implementations.&amp;#160; My favorite part of the on-boarding is always the juncture when I sit down to figure out how to best implement the required transaction participants in the TM.&amp;#160; When our clients and prospects ask to see “our authorization rules” or wonder “how do we implement new features and concepts,” we go directly to showing them some of our production TM implementations.&amp;#160; That’s always the “a-ha!” moment.&lt;/p&gt;  &lt;p&gt;The FSA implementation really brings a lot of best practices into play…especially in the part where I was diving in today:&amp;#160; Reversals.&amp;#160; Here’s a list of the things I had to consider while doing this:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;[NOTE:&amp;#160; The list below refers to the flow exhibited in &lt;/strong&gt;&lt;a href="http://www.andyorrock.com/Samples/tm_examples_for_fsa.xml"&gt;&lt;strong&gt;this example&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.]&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Identify the transaction type in play (in the example that I’ve attached here, I’ve isolated the FSA Reversal logic for reader review). &lt;/li&gt;    &lt;li&gt;Create the tranlog entry &lt;/li&gt;    &lt;li&gt;Figure out what endpoint to route to (see our ‘SelectEndPoint’ participant – and its variations).&amp;#160; We do this by examining a table we construct from card types and bin ranges (lookup the BIN range to determine the card type which – in turn – is related to an endpoint). &lt;/li&gt;    &lt;li&gt;For some of the endpoints (see ENDP2, ENDP3 and ENDP4 in my example – I did some masking here), simply handle the Reversal locally.&amp;#160; [What’s going on there is that we’re not supposed to get FSA transactions related to these card types…but my experience dictates:&amp;#160; you never know.&amp;#160; So, we play prevent defense.&amp;#160; Moreover, you can never flat-out reject a reversal of any kind because originators SAF them…see why &lt;a href="http://www.andyorrock.com/2009/08/nonapproval-approvals.html"&gt;here&lt;/a&gt;.] &lt;/li&gt;    &lt;li&gt;Try to find the original.&amp;#160; [We’ve got two routines in our toolkit: what I call “find original soft” and “find original hard.”&amp;#160; Early in the TM processing for reversals we need the ‘soft’ option because we need to get the PAN from the original if it exists (reversals typically don’t have PAN or track info); but even if we can’t find an original, we don’t want to abort the flow just yet, because we have other stuff to do).&amp;#160; Later in the flow, we want to abort if no original was found (where not found = never got an original – OR – the original was declined – OR – the original was already reversed – OR – the original was already settled or extracted), so we do the ‘hard’ option. &lt;/li&gt;    &lt;li&gt;For Endpoints 1 (ENDP1) and 5 (ENDP5), prepare to go remote…but first we need to check if the original was handled locally or remotely.&amp;#160; [In this implementation, there are circumstances in which an original request could have been handled at the point-of-sale as a ‘manager override’ which we handle locally (it’s not an auth – the sale &lt;strong&gt;&lt;em&gt;happened&lt;/em&gt;&lt;/strong&gt;, and the customer is long gone)…in those cases the endpoint doesn’t know about the original, so it makes zero sense to send them the reversal.] &lt;/li&gt;    &lt;li&gt;If the original was handled locally for cards associated with either ENDP1 or ENDP5, handle the reversal locally. &lt;/li&gt;    &lt;li&gt;If the original was handled remotely for cards associated with either ENDP1 or ENDP5, handle the reversal remotely. &lt;/li&gt;    &lt;li&gt;Create either an ENDP1 or ENDP5 outbound reversal request.&amp;#160; [As a point of interest, the ENDP1 here is pure ISO8583, while ENDP5 uses &lt;a href="http://jpos.org/blog"&gt;APR’s&lt;/a&gt; very useful &lt;a href="http://www.andyorrock.com/2007/07/as-may-you-know.html"&gt;FSDISO&lt;/a&gt; approach (this is our 6th usage!)] &lt;/li&gt;    &lt;li&gt;Drop the reversal into the SAF queue (we always SAF outbound reversals!) &lt;/li&gt;    &lt;li&gt;Do our FlagReversal thing (tags the original’s revInd = ‘T’ and cross-links the reversal and original with cross-referencing transaction IDs in their respective refId columns). &lt;/li&gt;    &lt;li&gt;Do a force approval to make sure we get a controlled result code if the process aborts.&amp;#160; [We use our &lt;a href="http://www.andyorrock.com/2007/10/result-codes-pa.html"&gt;internal result code&lt;/a&gt; = &lt;a href="http://www.andyorrock.com/2009/08/nonapproval-approvals.html"&gt;4000&lt;/a&gt;, which is what we call a Force Approval.&amp;#160; &lt;strong&gt;You never send a non-approval back on a reversal.&lt;/strong&gt;&amp;#160; This is a critically important concept.&amp;#160; You learn this the hard way.]&amp;#160;&amp;#160; &lt;/li&gt;    &lt;li&gt;Create a response back to the originator. &lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?a=S67Xn887y6w:lmqZfHvNdlk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AndyOrrockPaymentSystems/~4/S67Xn887y6w" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.andyorrock.com/2009/09/more-transactionmanager-gymnastics.html</feedburner:origLink></entry>
    <entry>
        <title>Analysis by Transaction Class at an Acquirer</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AndyOrrockPaymentSystems/~3/ZtZx9_VbI_w/analysis-by-transaction-class-at-an-acquirer.html" />
        <link rel="replies" type="text/html" href="http://www.andyorrock.com/2009/09/analysis-by-transaction-class-at-an-acquirer.html" thr:count="2" thr:updated="2009-09-19T13:00:25-05:00" />
        <id>tag:typepad.com,2003:post-6a00d8341c507153ef0120a582f89b970b</id>
        <published>2009-09-19T10:51:59-05:00</published>
        <updated>2009-09-19T12:45:42-05:00</updated>
        <summary>Here’s a summary of some transaction analysis I was performing this morning at one of our OLS.Switch acquirer implementations… I took all the transactions from yesterday at this customer location (1,077,556 at approx 5,000 locations across four US continental time...</summary>
        <author>
            <name>Andy Orrock</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Real Systems" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.andyorrock.com/">&lt;p&gt;&lt;a href="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a582f894970b-pi"&gt;&lt;img style="border-right-width: 0px; margin: 0px 5px 5px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="left" src="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a5d9768d970c-pi" width="300" height="160"&gt;&lt;/img&gt;&lt;/a&gt; Here’s a summary of some transaction analysis I was performing this morning at one of our &lt;a href="http://www.olsdallas.com"&gt;OLS.Switch&lt;/a&gt; acquirer implementations…&lt;/p&gt;  &lt;p&gt;I took all the transactions from yesterday at this customer location (1,077,556 at approx 5,000 locations across four US continental time zones), grouped them into transaction class (e.g., Debit/EBT, Credit, Stored Value, etc.) and card type (different credit card authorizers, various subclasses of internal transactions, etc.), gave the resulting categories meaningful names, arranged in ascending order by average duration of the transaction (&lt;strong&gt;&lt;em&gt;in milliseconds&lt;/em&gt;&lt;/strong&gt;) and provided the associated number of transactions for the class.&lt;/p&gt;  &lt;p&gt;Here’s what I came up with:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;Transaction Class   No. Txns   Avg Dur      &lt;br&gt;=================   ========   =======       &lt;br&gt;Discount Coupon       14,484        33       &lt;br&gt;Loyalty (1)               25        36       &lt;br&gt;Loyalty (2)              107        38       &lt;br&gt;Loyalty (3)               63        39       &lt;br&gt;Rewards                  440        42       &lt;br&gt;Employee Validation   60,674        44       &lt;br&gt;Loyalty (4)              180        51       &lt;br&gt;Loyalty (5)               35        53       &lt;br&gt;Check (Internal)      12,010        55       &lt;br&gt;&lt;/font&gt;&lt;/p&gt; &lt;font color="#ff0000" face="Courier New"&gt;--------------------------------------    &lt;br&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;Authorized Returns       652       140    &lt;br&gt;Stored Value (1)      17,941       255     &lt;br&gt;Stored Value (2)         897       269     &lt;br&gt;Stored Value (3)       8,367       606     &lt;br&gt;MethCheck             14,544       669     &lt;br&gt;FSA/HSA               10,584       742     &lt;br&gt;Credit/Offline Debit 389,038       747     &lt;br&gt;EBT Cash                3049       857     &lt;br&gt;Electronic Check      74,733       863     &lt;br&gt;Stored Value (4)      16,521       868     &lt;br&gt;Stored Value (5)      25,470       935     &lt;br&gt;Online Debit         399,286      1215     &lt;br&gt;Stored Value (6)         756      1313&lt;/font&gt;   &lt;p&gt;The presence of the red line is of interest:  for any of the transaction categories above the red line, our authorization path is completely internal, i.e., no QueryHost action inside our TransactionManager is required to get an authorization.  So, when staying internal, we get the work done in 1/20th of a second or less (on &amp;lt; $20k in combined, core application/DB server hardware).&lt;/p&gt;  &lt;p&gt;Below the red line, we have to query either an internal server somewhere else in the enterprise (where another application has better knowledge and can make a more informed decision than we can) or an external server, like for example routing a Credit/Offline Debit request to the FDR North payment gateway for forwarding to the appropriate card issuer or authorizing agent.&lt;/p&gt;  &lt;p&gt;I put these into graph format for reader review and further use.  Here’s &lt;a href="http://www.andyorrock.com/Statistics/2009-09-19_Transaction_Analysis.xlsx"&gt;the Excel 2007 (.xlsx) version&lt;/a&gt;; and here’s &lt;a href="http://www.andyorrock.com/Statistics/2009-09-19_Transaction_Analysis.xls"&gt;the Excel 2003 (.xls) version&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Two follow-up notes (added subsequent to my original post):&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;I’ve tallied and compared only the approved transactions for the day, so as to eliminate the skewing effect of timed-out transactions (i.e., because no response was received from the remote authorizer) on the smaller transaction classes.&lt;/li&gt;    &lt;li&gt;All durations are inclusive of time spent ‘off box,’ i.e., waiting for a response from a remote authorizer.&lt;/li&gt; &lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?a=ZtZx9_VbI_w:Ue1xGgJ-wxk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AndyOrrockPaymentSystems/~4/ZtZx9_VbI_w" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.andyorrock.com/2009/09/analysis-by-transaction-class-at-an-acquirer.html</feedburner:origLink></entry>
    <entry>
        <title>On-Line Strategies</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AndyOrrockPaymentSystems/~3/eTR4fz7zgSE/on-line-strategies.html" />
        <link rel="replies" type="text/html" href="http://www.andyorrock.com/2009/09/on-line-strategies.html" thr:count="1" thr:updated="2009-09-17T09:13:56-05:00" />
        <id>tag:typepad.com,2003:post-6a00d8341c507153ef0120a5be1d2d970c</id>
        <published>2009-09-12T09:28:31-05:00</published>
        <updated>2009-09-12T09:28:31-05:00</updated>
        <summary>Our firm, On-Line Strategies, is going through a growth spurt, the result of hard work, attention to detail, successful projects and happy customers. We’re moving into new, bigger offices next month. And, we’re on the lookout for new people to...</summary>
        <author>
            <name>Andy Orrock</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.andyorrock.com/">&lt;p&gt;Our firm, &lt;a href="http://www.olsdallas.com"&gt;On-Line Strategies&lt;/a&gt;, is going through a growth spurt, the result of hard work, attention to detail, successful projects and happy customers.  We’re moving into new, bigger offices next month.  And, we’re on the lookout for new people to join our team.  &lt;/p&gt;  &lt;p&gt;If you’re a regular reader of this blog, you know what we do.  If not, glance through some of my previous posts to get a feel for our business.&lt;/p&gt;  &lt;p&gt;We have three immediate needs:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;First&lt;/strong&gt;:  &lt;a href="http://www.youtube.com/watch?v=hadxBZWxNrs"&gt;Developers, Developers, Developers, Developers&lt;/a&gt;!  Take a look at &lt;a href="http://jobview.monster.com/Java-Developer-Job-Dallas-TX-US-82886326.aspx"&gt;our Monster job posting&lt;/a&gt;.  These positions report to Dave Bergert, OLS’ Technology and Development Director.  [See Dave’s blog &lt;a href="www.paymentsystemsblog.com"&gt;here&lt;/a&gt;.]  Submit your CV to the Monster posting or &lt;a href="http://www.paymentsystemsblog.com/contact/"&gt;reach out to Dave directly&lt;/a&gt; to present your qualifications.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Second&lt;/strong&gt;:  We’re scouting for Project Managers.  Our PMs are payment systems specialists who: interact with customers; gather and document business requirements; identify and create add-on business opportunities; present and explain development needs to Dave and his team; review unit tests; create test plans for customers; craft go-live plans; create internal documentation and release notes; manage customer expectations; interact with other PMs to find synergies and identify like solutions; expand and refine our on-boarding processes; participate in technical sales calls; assist in production support efforts; write blogs to expand our online presence; and…you get the idea.  &lt;/p&gt;  &lt;p&gt;Put another way, our PMs do everything in the customer lifecycle except sales (we leave that to &lt;a href="http://www.prepaidenterprise.com/prepaid_enterprise/"&gt;the expert&lt;/a&gt;) and design, development, technology choices and hard-core production support (Dave’s team).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://andyorrock.typepad.com/about.html"&gt;Send me an e-mail&lt;/a&gt; expressing your interest and qualifications.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Third&lt;/strong&gt;:  The backbone of OLS was founded on our production support capabilities.  As one important piece of our business, we provide specific support and development capabilities to the Stratus VOS community (more specifically, to users of the ON/2 payment processing platform).  If you have expertise in this arena, we have opportunities for you in either an FTE or consulting capacity.  If you’re interested, &lt;a href="http://andyorrock.typepad.com/about.html"&gt;contact me&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;We look forward to hearing from you!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?a=eTR4fz7zgSE:wgxcY3rYfu8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AndyOrrockPaymentSystems/~4/eTR4fz7zgSE" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.andyorrock.com/2009/09/on-line-strategies.html</feedburner:origLink></entry>
    <entry>
        <title>800,000,000 and counting</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AndyOrrockPaymentSystems/~3/XRbE3n8HX-s/800000000-and-counting.html" />
        <link rel="replies" type="text/html" href="http://www.andyorrock.com/2009/09/800000000-and-counting.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8341c507153ef0120a5a784cc970c</id>
        <published>2009-09-06T16:33:52-05:00</published>
        <updated>2009-09-06T16:33:52-05:00</updated>
        <summary>The tranlog odometer eased past the 800,000,000 Transactions Processed threshold earlier this week at our flagship acquirer payment switch implementation. ETA for one billion transactions: Early March 2010.</summary>
        <author>
            <name>Andy Orrock</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.andyorrock.com/">&lt;p&gt;&lt;a href="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a550ff68970b-pi"&gt;&lt;img style="border-right-width: 0px; margin: 0px 5px 5px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="800000000" border="0" alt="800000000" align="left" src="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a550ff6d970b-pi" width="350" height="66"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The tranlog odometer eased past the 800,000,000 Transactions Processed threshold earlier this week at &lt;a href="http://www.olsdallas.com"&gt;our&lt;/a&gt; flagship acquirer payment switch implementation.  &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;ETA for &lt;a href="http://en.wikipedia.org/wiki/Dr._Evil"&gt;one billion transactions&lt;/a&gt;&lt;/strong&gt;:  Early March 2010.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?a=XRbE3n8HX-s:ZZCNm72_-hk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AndyOrrockPaymentSystems/~4/XRbE3n8HX-s" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.andyorrock.com/2009/09/800000000-and-counting.html</feedburner:origLink></entry>
    <entry>
        <title>Service Status Totals</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AndyOrrockPaymentSystems/~3/as1VZCNRpZU/service-status-totals.html" />
        <link rel="replies" type="text/html" href="http://www.andyorrock.com/2009/08/service-status-totals.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8341c507153ef0120a5043018970b</id>
        <published>2009-08-19T08:14:13-05:00</published>
        <updated>2009-08-19T08:14:13-05:00</updated>
        <summary>As our production OLS.Switch implementations grow in scope and complexity, one challenge is how to reflect the current system status in an immediate and visceral way. For example, one of our acquirer-side clients has a production implementation that has grown...</summary>
        <author>
            <name>Andy Orrock</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.andyorrock.com/">&lt;p&gt;As our production &lt;a href="http://www.olsdallas.com"&gt;OLS.Switch&lt;/a&gt; implementations grow in scope and complexity, one challenge is how to reflect the current system status in an immediate and visceral way.  For example, one of our acquirer-side clients has a production implementation that has grown inexorably and steadily over the past five years to encompass 93 separate system components.  &lt;/p&gt;  &lt;p&gt;With enterprise-class operations, you’ve got to be realistic: the operations team there does not have the time nor the inclination to scroll through the three to four screens-full of information that comprise the current system status.  We asked this group what we could do to make there lives more easy.  They responded:  “We want one big-ass Green/Red button at the top of the screen depicting overall application status.”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a5043010970b-pi"&gt;&lt;img style="border-right-width: 0px; margin: 0px 5px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Service Status Totals" border="0" alt="Service Status Totals" align="left" src="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a5043015970b-pi" width="240" height="37"&gt;&lt;/img&gt;&lt;/a&gt; Using this descriptive requirement as a spur, my OLS colleague &lt;a href="http://www.paymentsystemsblog.com"&gt;Dave Bergert&lt;/a&gt; implemented something a bit more nuanced and informative, but no less helpful: the Service Status Totals concept (see image at left).  He tallies up green (OK), yellow (Warning), red (Error) and bouncing red (Critical) lights and plops that neat and tidy little summary on the top of &lt;a href="http://www.andyorrock.com/2007/03/solving_visibil.html"&gt;our UI page&lt;/a&gt;.  &lt;/p&gt;  &lt;p&gt;Now, no Ops scrolling unless any of those three right-hand figures go greater than zero.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?a=as1VZCNRpZU:3DYuiuPb9OY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AndyOrrockPaymentSystems/~4/as1VZCNRpZU" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.andyorrock.com/2009/08/service-status-totals.html</feedburner:origLink></entry>
    <entry>
        <title>Timeouts: Active vs. Passive</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AndyOrrockPaymentSystems/~3/TZ--3ucmVeE/timeouts-active-vs-passive.html" />
        <link rel="replies" type="text/html" href="http://www.andyorrock.com/2009/08/timeouts-active-vs-passive.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8341c507153ef0120a5041de6970b</id>
        <published>2009-08-19T07:46:36-05:00</published>
        <updated>2009-08-19T11:06:35-05:00</updated>
        <summary>Yesterday, an Acquirer switch client of ours called telling me that one of the production channel connections to their ECA provider had been down for the last 24 hours. He wondered why there was no history of the outage reflected...</summary>
        <author>
            <name>Andy Orrock</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.andyorrock.com/">&lt;p&gt;&lt;a style="float: left" href="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a50407bc970b-pi"&gt;&lt;img style="margin: 0px 5px 5px 0px" class="at-xid-6a00d8341c507153ef0120a50407bc970b " alt="Passive" src="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a50407bc970b-320wi"&gt;&lt;/img&gt;&lt;/a&gt; &lt;span style="font-family: trebuchet ms"&gt;Yesterday, an Acquirer switch client &lt;a href="http://www.olsdallas.com"&gt;of ours&lt;/a&gt; called telling me that one of the production channel connections to their &lt;/span&gt;&lt;a style="font-family: trebuchet ms" href="http://www.andyorrock.com/2009/07/live-with-eca.html"&gt;ECA&lt;/a&gt;&lt;span style="font-family: trebuchet ms"&gt; provider had been down for the last 24 hours.  He wondered why there was no history of the outage reflected in the application syslog.&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms"&gt;&lt;strong&gt;Answer&lt;/strong&gt;: they'd not finished configuring the channel.  See to the left our &lt;a href="http://jpos.org/blog/2007/10/jpos-ee-setup-howto/"&gt;jPOS-EE-fueled&lt;/a&gt; &lt;a href="http://www.andyorrock.com/2007/03/solving_visibil.html"&gt;UI screen&lt;/a&gt; depicting the channel configuration.  You've got to specify Timeout and On Timeout values in order for the system component to be moved to the proper error status; and you need to specify Max Events in order for the corresponding component status change history to be reflected in the syslog.&lt;/p&gt;  &lt;p style="font-family: trebuchet ms"&gt;I've shown the FDR channel above as an example.  I recommended the ECA channels get set up in a similar manner.  My client asked a really good question:  "60 seconds....isn't that a little tight for a channel timeout?"  Ah - this is a confusion between the active and passive timeout concepts.  Both are in play here.&lt;/p&gt;  &lt;p style="font-family: trebuchet ms"&gt;&lt;a style="float: left" href="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a50412ab970b-pi"&gt;&lt;img style="margin: 0px 5px 5px 0px" class="at-xid-6a00d8341c507153ef0120a50412ab970b " alt="Active" src="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a50412ab970b-320wi"&gt;&lt;/img&gt;&lt;/a&gt; He was thinking about what I call the '&lt;strong&gt;active timeout&lt;/strong&gt;.'  As described &lt;a href="http://www.andyorrock.com/2008/07/adding-timeout.html"&gt;here&lt;/a&gt;, this is a concept  implemented at the channel's socket level and is specified inside of the deploy file (see image at left - production host:port information is redacted).  As described in that earlier post:&lt;/p&gt;  &lt;p style="font-family: trebuchet ms"&gt;&lt;em&gt;&lt;a href="http://jpos.org/blog"&gt;Alejandro&lt;/a&gt; advised us to implement a property value that will set a socket-level timeout.  The ‘receive’ function in the multiplexer’s ‘Channel Adapter’ will fail (with log event ‘&amp;lt;io_timeout&amp;gt;’) if nothing is received within the specified timeout period.  The channel will disconnect and then attempt a reconnection. &lt;/em&gt;    &lt;br&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms"&gt;We've got FDR set up, as you see, to 800000 ms (13 mins, 20 secs).  FDR is a high-volume gateway.  If we've not received a response of any kind on it for that long a duration, we want to proactively rupture and cycle the connection.  This simple, easy-to-implement concept has greatly improved our up-time and reduced the volume of our support phone calls.&lt;/p&gt;  &lt;p style="font-family: trebuchet ms"&gt;The '&lt;strong&gt;passive timeout&lt;/strong&gt;' - implemented in these examples by the 60-second value depicted above - is something quite different but no less important.  As described &lt;a href="http://www.andyorrock.com/2007/04/adding_an_item_.html"&gt;here&lt;/a&gt;, in the jPOS-EE framework...&lt;/p&gt;  &lt;p style="font-family: trebuchet ms"&gt;&lt;em&gt;&lt;span style="line-height: 150%"&gt;...the status subsystem works in a passive way. Each status entry is 'touched' from the system component that controls it. Each component has an associated timeout. If a status entry has not been touched within the given timeout period, then somebody needs to move that entry from its current ‘OK’ status to the destination error condition (e.g., WARN, CRITICAL, OFF, etc.). When a jPOS-EE Web UI user hits the status page, we run that check on all entries; but if for some reason the users are not looking at that page, we need a way to check all statuses and move timed-out entries to the specified error condition. 02_status_heartbeat is in charge of that!&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms"&gt;&lt;span style="line-height: 150%"&gt;&lt;strong&gt;-- 2009-08-19 Update to Original Post  --&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms"&gt;&lt;span style="line-height: 150%"&gt;&lt;a href="http://fedegonzal.spaces.live.com/"&gt;&lt;strong&gt;Federico&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; asks&lt;/strong&gt;:  Seems kind of redundant to me to have an 'active timeout' and 800s at the same time. Am I missing something?&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms"&gt;&lt;span style="line-height: 150%"&gt;&lt;strong&gt;AAO&lt;/strong&gt;:  Very good comment.  The 800-series network messages aren’t foolproof.  They’re great at keeping the line active during your volume troughs so that the endpoint doesn’t disconnect and cycle your connection.  They’re &lt;strong&gt;&lt;em&gt;not&lt;/em&gt;&lt;/strong&gt; great at determining and resolving hung lines.  The ‘active’ timeout approach works to resolve the ‘half-baked’ channel connection, i.e., the situation where you think you’re connected, but you’re actually not.&lt;/span&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?a=TZ--3ucmVeE:wPRmcLyXirA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AndyOrrockPaymentSystems/~4/TZ--3ucmVeE" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.andyorrock.com/2009/08/timeouts-active-vs-passive.html</feedburner:origLink></entry>
    <entry>
        <title>Non-approval approvals</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AndyOrrockPaymentSystems/~3/gnbKN3dbu44/nonapproval-approvals.html" />
        <link rel="replies" type="text/html" href="http://www.andyorrock.com/2009/08/nonapproval-approvals.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8341c507153ef0120a5015def970b</id>
        <published>2009-08-18T11:53:43-05:00</published>
        <updated>2009-08-18T11:54:52-05:00</updated>
        <summary>In OLS' role as an Acquirer-side payment switch, we engage in a lot of practices that fall into the category of what I call 'Defending the Transaction Originator' (not to be confused with 'Defending Your SAF'...though the principles of protective...</summary>
        <author>
            <name>Andy Orrock</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.andyorrock.com/">&lt;p&gt;&lt;a href="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a501470a970b-pi" style="float: left;"&gt;&lt;img alt="Non-approval-approvals" class="at-xid-6a00d8341c507153ef0120a501470a970b " src="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a501470a970b-320wi" style="margin: 0px 5px 5px 0px;"&gt;&lt;/img&gt;&lt;/a&gt;&lt;span style="font-family: Trebuchet MS;"&gt;In &lt;/span&gt;&lt;a href="http://www.olsdallas.com" style="font-family: Trebuchet MS;"&gt;OLS'&lt;/a&gt;&lt;span style="font-family: Trebuchet MS;"&gt; role as an Acquirer-side payment switch, we engage in a lot of practices that fall into the category of what I call 'Defending the Transaction Originator' (not to be confused with '&lt;a href="http://www.andyorrock.com/2009/02/defending-your-saf-part-2.html"&gt;Defending Your SAF&lt;/a&gt;'...though the principles of protective measures are the same).  These practices have led to a group of &lt;a href="http://www.andyorrock.com/2007/07/result-codes-pa.html"&gt;Internal Result Codes&lt;/a&gt; that I refer to as the 'Non-Approval Approval' range (4xxx in the OLS.Switch framework).  We have:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;strong&gt;4000 (FORCE_APPROVAL)&lt;/strong&gt; - Whenever we get a message that comes from the originator's SAF queue, we're obligated to approve it.  But there are situations where we may encounter a legitimate error, most typically in timeout reversal processing where, more often than not, we can't find a corresponding original.  The originator's SAF queue doesn't care about your decision-making details.  It only wants to know: did you receive the transaction or not?  FORCE APPROVAL tells us internally of the error condition and then we map that as an APPROVAL going back to the originator so that we keep their SAF queue clean...lest you run into the dreaded endless transaction loop between originator and host.  Not pretty.&lt;br&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Trebuchet MS;"&gt;The Force Approval transaction participant looks like this:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;span style="font-family: Courier;"&gt;&amp;lt;participant class="org.jpos.ev.SetRC" logger="Q2" realm="force-rc"&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="abort-rc" value="4000" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;&amp;lt;/participant&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Trebuchet MS;"&gt;[See a general discussion of transaction participants &lt;a href="http://www.andyorrock.com/2007/02/the_jpos_transa.html"&gt;here&lt;/a&gt;, including a short discussion of the force approval.] &lt;br&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;strong&gt;4001 (DUPLICATE_APPROVAL)&lt;/strong&gt; - We always &lt;a href="http://www.andyorrock.com/2007/01/entirely_tmi_on.html"&gt;check for duplicates&lt;/a&gt;.  If we determine internally that the current transaction is a duplicate, we flag it internally with an IRC marker that denotes it as a known duplicate.  The originator doesn't have a clue about that (which is why it sent the same transaction in the first place).  We map this 4xxx series code to an APPROVAL going back to the originator.  Both sides of the transaction equation are happy.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;strong&gt;4002 (STANDIN_APPROVAL)&lt;/strong&gt; - Some of our customers want stand-in approvals to be denoted with a special result code.  So, we've implemented that here.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?a=gnbKN3dbu44:Geni30gIOMQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AndyOrrockPaymentSystems/~4/gnbKN3dbu44" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.andyorrock.com/2009/08/nonapproval-approvals.html</feedburner:origLink></entry>
    <entry>
        <title>jPOS config files with markup resolved at runtime</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AndyOrrockPaymentSystems/~3/qWGtR1w9POE/jpos-config-files-with-markup-resolved-at-runtime.html" />
        <link rel="replies" type="text/html" href="http://www.andyorrock.com/2009/08/jpos-config-files-with-markup-resolved-at-runtime.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8341c507153ef011571618364970c</id>
        <published>2009-08-03T08:39:05-05:00</published>
        <updated>2009-08-03T08:39:41-05:00</updated>
        <summary>jPOS User Group super-member Victor Salaman this weekend posted news of a very useful advancement: "string interpolation and macro support for jPOS config files." Translation: Config files that can contain markup which would be resolved at runtime. In the piece,...</summary>
        <author>
            <name>Andy Orrock</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Application Concepts" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Real Systems" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.andyorrock.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;span style="font-family: Trebuchet MS;"&gt;jPOS User Group super-member Victor Salaman this weekend posted news of a very useful advancement: "&lt;/span&gt;&lt;span id="thread_subject_site" style="font-family: Trebuchet MS;"&gt;&lt;a href="http://groups.google.com/group/jpos-users/browse_thread/thread/c23c0df65709f855" target="_blank" title="Victor's announcement"&gt;string interpolation and macro support for jPOS config files&lt;/a&gt;."  Translation: &lt;/span&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Config files that can contain markup which would be resolved at runtime.  &lt;br&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Trebuchet MS;"&gt;In the piece, Victor made things very relevant by using an example of a real-life TransactionManager transaction participant sequence that I've posted on my blog.  You can see the original piece &lt;a href="http://www.andyorrock.com/2007/01/entirely_tmi_on.html" target="_blank"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Trebuchet MS;"&gt;As noted by Victor. we currently use substitution values that are resolved during build time.  We have a properties file that looks like this (I've masked some of the details and thinned this out considerably for the blog post):&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: Courier;"&gt;nodename = APP01&lt;br&gt;status-id = heartbeat1&lt;br&gt;status-name = Heartbeat 01&lt;br&gt;thales-status_0 = HSM_A_0&lt;br&gt;thales-status_1 = HSM_A_1&lt;br&gt;&lt;br&gt;server-id = server1&lt;br&gt;logon-interval = 43200000&lt;br&gt;fdr0-delay = 60000&lt;br&gt;fdr1-delay = 5000&lt;br&gt;&lt;br&gt;fdr0-monitor = FDR1 FDR Hagerstown 01&lt;br&gt;fdr1-monitor = FDR3 FDR Melville 01&lt;br&gt;amex0-monitor = AMEX1 AMEX IPC 01&lt;br&gt;amex1-monitor = AMEX3 AMEX NROC 01&lt;br&gt;&lt;br&gt;saf-id = saf1 FDR SAF 01 Status&lt;br&gt;&lt;br&gt;thales_0 = 10.99.2.88:1500&lt;br&gt;thales_1 = 10.99.2.88:1500&lt;br&gt;&lt;br&gt;fdr0.host = 206.99.50.88&lt;br&gt;fdr0.port = 21999&lt;br&gt;fdr1.host = 206.99.50.88&lt;br&gt;fdr1.port = 21999&lt;br&gt;amex0.host = 148.99.39.77&lt;br&gt;amex0.port = 12777&lt;br&gt;amex1.host = 148.99.39.77&lt;br&gt;amex1.port = 12777&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;span style="font-family: Courier;"&gt;fdr.logon.space  = jdbm:fdrlogon:log/fdrlogon&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;amex.logon.space  = jdbm:amexlogon:log/amexlogon&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;lmk = cfg/test.lmk&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;bdk = cfg/test-bdk.cfg&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;debug = true&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;auditTrace = true&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;sessions.main=112&lt;/span&gt;&lt;br&gt;&lt;br&gt;Now, in Victor's concept these things can get moved to runtime substitution for more flexibility.  We have a 'main' TransactionManager that we currently start off like this in our SVN repository:&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: Courier;"&gt;&amp;lt;main-txnmgr class="org.jpos.transaction.TransactionManager" logger="Q2"&amp;gt;&lt;br&gt; &amp;lt;property name="sessions" value="@sessions.main@" /&amp;gt;&lt;br&gt; &amp;lt;property name="space" value="tspace:default" /&amp;gt;&lt;br&gt; &amp;lt;property name="queue" value="MAIN.TXN" /&amp;gt;&lt;br&gt; &amp;lt;property name="debug" value="@debug@" /&amp;gt;&lt;/p&gt;&lt;p style="font-family: Trebuchet MS;"&gt;In Victor's concept, you'd instead have a 'deploy-properties.ftl' like this:&lt;/p&gt;&lt;p style="font-family: Courier;"&gt;[#-- ********* Transaction Manager properties ********* --] &lt;br&gt; [#assign tmSessions = '112'] &lt;br&gt; [#assign tmDebug = 'true'] &lt;/p&gt;&lt;p&gt;...and then:&lt;/p&gt;&lt;p style="font-family: Courier;"&gt;&amp;lt;main-txnmgr class="org.jpos.transaction.TransactionManager" logger="Q2"&amp;gt;&lt;br&gt;&#xD;
 &amp;lt;property name="sessions" value="${tmSessions}" /&amp;gt;&lt;br&gt;&#xD;
 &amp;lt;property name="space" value="tspace:default" /&amp;gt;&lt;br&gt;&#xD;
 &amp;lt;property name="queue" value="MAIN.TXN" /&amp;gt;&lt;br&gt;&#xD;
 &amp;lt;property name="debug" value="${tmDebug}" /&amp;gt;&lt;br&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p style="font-family: Trebuchet MS;"&gt;I really the additional level of flexibility this approach provides us.  It gives structure to our customers' change requirements in the occasional circumstances where they outstrip the pace of our normal release cycles.&lt;/p&gt;&lt;p style="font-family: Trebuchet MS;"&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?a=qWGtR1w9POE:IgAnU-tAFL0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AndyOrrockPaymentSystems/~4/qWGtR1w9POE" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.andyorrock.com/2009/08/jpos-config-files-with-markup-resolved-at-runtime.html</feedburner:origLink></entry>
    <entry>
        <title>TPS Inflation</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AndyOrrockPaymentSystems/~3/YpEIcs6YzZI/tps-inflation.html" />
        <link rel="replies" type="text/html" href="http://www.andyorrock.com/2009/07/tps-inflation.html" thr:count="1" thr:updated="2009-07-28T23:08:42-05:00" />
        <id>tag:typepad.com,2003:post-6a00d8341c507153ef011572341926970b</id>
        <published>2009-07-25T10:42:27-05:00</published>
        <updated>2009-07-25T13:59:20-05:00</updated>
        <summary>Transaction Per Second ('TPS') estimates and requirements from potential OLS.Switch clients seem to be doing a reasonable impression of the Zimbabwean Dollar recently. Over the past year, we've gone from sober discussions of credible peak projections of 100, 250, 400...</summary>
        <author>
            <name>Andy Orrock</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Real Systems" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.andyorrock.com/">&lt;p&gt;&lt;span style="font-family: Trebuchet MS;"&gt;&lt;a href="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0115713f7979970c-pi" style="float: left;"&gt;&lt;img alt="Zimbabwe_$100_trillion_2009_Obverse" class="at-xid-6a00d8341c507153ef0115713f7979970c " src="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0115713f7979970c-320wi" style="margin: 0px 5px 5px 0px;"&gt;&lt;/img&gt;&lt;/a&gt; &lt;span style="font-family: Trebuchet MS;"&gt;Transaction Per Second ('TPS') estimates and requirements from potential &lt;/span&gt;&lt;a href="http://www.olsdallas.com" style="font-family: Trebuchet MS;"&gt;OLS.Switch&lt;/a&gt;&lt;span style="font-family: Trebuchet MS;"&gt; clients seem to be doing a reasonable impression of the &lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Zimbabwean_dollar" style="font-family: Trebuchet MS;"&gt;Zimbabwean Dollar&lt;/a&gt;&lt;span style="font-family: Trebuchet MS;"&gt; recently.  Over the past year, we've gone from sober discussions of credible peak projections of 100, 250, 400 TPS to increasingly chin-scratching numbers of 800, 1,000 and 5,000 TPS.  As &lt;a href="http://jpos.org" target="_blank"&gt;Alejandro&lt;/a&gt; joked to me:  Hell, if you're picking numbers, why not go for it?  How about 10,000?&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: Trebuchet MS;"&gt;I will grant you, Oh Mighty Payment Industry Cog (FDR, Fifth Third, AMEX, etc.), Oh Bentonville, Oh Tar-ZHAY your 1,000+ TPS.  But Mr. Big Plans Acquirer?  Hats off to your confidence, but I come possessing my doubts and glancing askance at your projections.  &lt;/p&gt;&lt;p style="font-family: Trebuchet MS;"&gt;&lt;a href="http://www.andyorrock.com/Charts/Volume_2008-12-24.swf" target="_blank"&gt;Perspective available here&lt;/a&gt; [OLS Acquirer Switch at Fortune 100 Retailer - Peak Days by Half Hour] &lt;/p&gt;&lt;p style="font-family: Trebuchet MS;"&gt;Fortune 100 Retailer.  5,000 stores.  25,000 points-of-sale.  Four US continental time zones.  21 separate applications supported.  ~USD30 billion in annual revenue.  Sustained (30-minute) peak on all-time highest day...not quite 60 TPS. &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Trebuchet MS;"&gt;Your mileage may vary.  But I'm just saying.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 11px; font-family: Trebuchet MS;"&gt;[Flash creation courtesy of the awesome Swiff Chart from &lt;/span&gt;&lt;a href="http://www.globfx.com" target="_blank"&gt;GlobFX&lt;/a&gt;&lt;span style="font-size: 11px; font-family: Trebuchet MS;"&gt;.]&lt;/span&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?a=YpEIcs6YzZI:_38qYRg7j9s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AndyOrrockPaymentSystems/~4/YpEIcs6YzZI" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.andyorrock.com/2009/07/tps-inflation.html</feedburner:origLink></entry>
    <entry>
        <title>The Return/Refund:  It Ain't a Reversal</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AndyOrrockPaymentSystems/~3/USB7waWns_c/the-returnrefund-it-aint-a-reversal.html" />
        <link rel="replies" type="text/html" href="http://www.andyorrock.com/2009/07/the-returnrefund-it-aint-a-reversal.html" thr:count="3" thr:updated="2009-10-15T01:03:08-05:00" />
        <id>tag:typepad.com,2003:post-6a00d8341c507153ef0115713f6fce970c</id>
        <published>2009-07-25T09:53:44-05:00</published>
        <updated>2009-07-25T09:53:44-05:00</updated>
        <summary>Here's a source of confusion that arises again and again in our payment systems discussions: the difference between a Return and a Reversal. [A 'Return' can also go by the names 'Merchandise Return' or 'Refund.'] What a Return/Refund is emphatically...</summary>
        <author>
            <name>Andy Orrock</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Application Concepts" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Terminology" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.andyorrock.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p style="font-family: Trebuchet MS;"&gt;&lt;img alt="" src="file:///C:/Users/aorrock/AppData/Local/Temp/moz-screenshot.png"&gt;&lt;/img&gt;&lt;img alt="" src="file:///C:/Users/aorrock/AppData/Local/Temp/moz-screenshot-1.png"&gt;&lt;/img&gt;&lt;a href="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0115713f5c61970c-pi" style="float: left;"&gt;&lt;img alt="Return_image" border="0" class="at-xid-6a00d8341c507153ef0115713f5c61970c " src="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0115713f5c61970c-800wi" style="margin: 0px 5px 5px 0px;" title="Return_image"&gt;&lt;/img&gt;&lt;/a&gt; &lt;span style="font-family: Trebuchet MS;"&gt;Here's a source of confusion that arises again and again in our payment systems &lt;/span&gt;discussions: the difference between a Return and a Reversal.&lt;span style="font-family: Trebuchet MS;"&gt;  [A 'Return' can also go by the names 'Merchandise Return' or 'Refund.']&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: Trebuchet MS;"&gt;What a Return/Refund is emphatically &lt;strong&gt;not&lt;/strong&gt;: a Reversal.&lt;/p&gt;&lt;p style="font-family: Trebuchet MS;"&gt;There are two types of reversals (I'm looking at this from the Acquirer perspective): a Terminal-based reversal; and a Host-based reversal.  Terminal-based reversals have a "close cousin" in the Void (also referred to a 'cancellation').&lt;/p&gt;&lt;p style="font-family: Trebuchet MS;"&gt;We hear things from our &lt;a href="http://www.olsdallas.com" target="_blank"&gt;OLS.Switch&lt;/a&gt; customers, prospects, partners and trial-drivers like:&lt;/p&gt;&lt;p style="font-family: Trebuchet MS;"&gt;&lt;strong&gt;&lt;em&gt;"Don't we need to keep 60 days of our tranlog online in case returns come in?"&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="font-family: Trebuchet MS;"&gt;No, you don't.  Returns are not tied to originals.  They are standalone transactions.&lt;/p&gt;&lt;p style="font-family: Trebuchet MS;"&gt;&lt;em&gt;&lt;strong&gt;"How often/reliably does an original invoice # get&#xD;
passed back in a message for a return?"&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p style="font-family: Trebuchet MS;"&gt;Exactly 0% of the time.  Returns are not tied to originals.  They are standalone transactions.&lt;/p&gt;&lt;p style="font-family: Trebuchet MS;"&gt;&lt;em&gt;&lt;strong&gt;"What are our key match-up fields for returns?"&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p style="font-family: Trebuchet MS;"&gt;There are none.  Returns are not tied to originals.  They are standalone transactions.&lt;/p&gt;&lt;p style="font-family: Trebuchet MS;"&gt;&lt;em&gt;&lt;strong&gt;"Why didn't the issuer reject that return?"&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p style="font-family: Trebuchet MS;"&gt;Because most times they don't even see the auth request (I'll show you this further on in the post).  Returns are not tied to originals.  They are standalone transactions.&lt;/p&gt;&lt;p style="font-family: Trebuchet MS;"&gt;In each case, the questioner has conflated the concepts of the Return and the Reversal.  &lt;/p&gt;&lt;p style="font-family: Trebuchet MS;"&gt;But enough words, the best thing I can do is to show you how these concepts get implemented so you can see the differences in &lt;a href="http://www.andyorrock.com" target="_blank" title="Circular reference!"&gt;Real Payment Systems&lt;/a&gt;.&lt;/p&gt;&lt;p style="font-family: Trebuchet MS;"&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p style="font-family: Trebuchet MS;"&gt;Here's a group from a TransactionManager that does Return transaction processing for a large acquirer:&lt;/p&gt;&lt;span style="background-color: #e6ebd5; font-family: Courier;"&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt; &amp;lt;group name="CreditReturn"&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt;  &amp;lt;participant class="org.jpos.ev.PopulateCreditTranLog" &lt;/span&gt;&lt;br&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt;     logger="Q2" realm="populate-credit-tranlog"&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt;   &amp;lt;property name="itc" value="03000" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt;   &amp;lt;property name="cardType" value="CR" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt;   &amp;lt;property name="checkpoint" value="populate-credit-tranlog" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt;  &amp;lt;/participant&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt;  &amp;amp;validate_terminal;&lt;/span&gt;&lt;br&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt;  &amp;lt;participant class="org.jpos.ev.FindDuplicate"&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt;   &amp;lt;property name="itc" value="03000" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt;   &amp;lt;property name="dupe-check-window" value="2700" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt;   &amp;lt;property name="checkpoint" value="find-duplicate" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt;  &amp;lt;/participant&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt;  &amp;lt;participant class="org.jpos.ev.SelectEndPoint"&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt;   &amp;lt;property name="EP1"  value="CreditReturnResponse LogAndReply" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt;   &amp;lt;property name="EP2" value="CreditReturnResponse LogAndReply" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt;   &amp;lt;property name="EP3"  value="CreditReturnResponse LogAndReply" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt;   &amp;lt;property name="EP4"  value="&lt;span style="background-color: #ffff80; font-family: Trebuchet MS;"&gt;QueryEP4Return&lt;/span&gt; LogAndReply" /&amp;gt;  &lt;/span&gt;&lt;br&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt;   &amp;lt;property name="DUPLICATE" value="DupCreditReturnResponse LogAndReply" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt;   &amp;lt;property name="MANAGER_OVERRIDE" value="DummyCreditResponse LogAndReply" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt;   &amp;lt;property name="UNKNOWN" value="DeclinedCreditResponse LogAndReply" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt;  &amp;lt;/participant&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="background-color: #ffffff; font-family: Courier;"&gt; &amp;lt;/group&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;p style="font-family: Trebuchet MS;"&gt;There's some masking there of the actual endpoints in play but rest assured, these are major players in the payment systems industry that we're talking to.  Take note of two things:&lt;/p&gt;&#xD;
&#xD;
&lt;ol&gt;&#xD;
&lt;li&gt;There's no attempt to match to an original.  [You can read about 'FindDuplicate' - an entirely different concept - &lt;a href="http://www.andyorrock.com/2007/01/entirely_tmi_on.html" target="_blank"&gt;here&lt;/a&gt;.]&lt;/li&gt;&#xD;
&lt;li&gt;Only in one of four cases does the issuer actually want to authorize the Return online.  It's the smallest of the four authorizing bodies.  In each of the three other cases (Endpoints 1 through 3), the first the issuer learns of the return is in the extract file sent later that evening.&lt;/li&gt;&#xD;
&lt;/ol&gt;&#xD;
&lt;p&gt;Now, let's compare that to the implementation of a Terminal Reversal group of participants:&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;span style="font-family: Courier;"&gt; &amp;lt;group name="FSASaleReversal"&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;  &amp;lt;participant class="org.jpos.ev.PopulateFSACreditTranLog" &lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;     logger="Q2" realm="populate-fsa-credit-tranlog"&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="itc" value="05301" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="cardType" value="FS" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="checkpoint" value="populate-fsa-credit-tranlog" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;  &amp;lt;/participant&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;  &amp;amp;validate_terminal;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;  &lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;  &amp;lt;!-- We need this special 'select' that doesn't put Dup or Override in play --&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;  &amp;lt;participant class="org.jpos.ev.SelectEndPointForReversal"&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="EP1"  value="&lt;span style="background-color: #ffff80; font-family: Courier;"&gt;FSASaleReversal_Continue&lt;/span&gt; LogAndReply" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="EP2"  value="FSASaleReversalLocal LogAndReply" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="EP3"  value="FSASaleReversalLocal LogAndReply" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="EP4"  value="FSASaleReversalLocal LogAndReply" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="UNKNOWN" value="DummyFSAResponse LogAndReply" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;  &amp;lt;/participant&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt; &amp;lt;/group&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt; &lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt; &amp;lt;group name="&lt;span style="background-color: #ffff80; font-family: Courier;"&gt;FSASaleReversal_Continue&lt;/span&gt;"&amp;gt;  &lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;  &amp;amp;&lt;span style="background-color: #ffff80; font-family: Courier;"&gt;find_original_purchase&lt;/span&gt;;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;  &lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;  &amp;lt;!-- If we made it this far without aborting, it means we found an original &lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;       and we now need to decide if we SAF its reversal or void.  We need to be &lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;       careful here:  only SAF if the orginal was remotely authorized.  Use APR's &lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;       IsManagerOverride model to create WasRemoteAuthorized (use of 'was' meaning &lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;       we refer to the original, not the transaction in flight  --&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;  &amp;lt;participant class="org.jpos.ev.WasRemoteAuthorized"&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="yes" value="FSASaleReversalSAF" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="no" value="FSASaleReversalLocal" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;  &amp;lt;/participant&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt; &amp;lt;/group&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt; &lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt; &amp;lt;!-- If SAF-ing the FSA reversal, do this group --&amp;gt;  &lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt; &amp;lt;group name="FSASaleReversalSAF"&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;  &amp;lt;participant class="org.jpos.ev.CreateEP1Request" &lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;     logger="Q2" realm="create-ep1-request"&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="mti"        value="0400" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="pcode"      value="000000" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="template"   value="cfg/ep1-credit-template.xml" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="space"      value="jdbm:ep1-stan" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="checkpoint" value="create-ep1-request" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;  &amp;lt;/participant&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;  &amp;amp;&lt;span style="background-color: #ffff80; font-family: Courier;"&gt;store_and_forward&lt;/span&gt;;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;  &amp;lt;participant class="org.jpos.ev.&lt;span style="background-color: #ffff80; font-family: Trebuchet MS;"&gt;FlagReversal&lt;/span&gt;"&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="reversal-class" value="&lt;span style="background-color: #ffff80; font-family: Courier;"&gt;T&lt;/span&gt;" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;  &amp;lt;/participant&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;  &amp;amp;&lt;span style="background-color: #ffff80; font-family: Courier;"&gt;force_approval&lt;/span&gt;;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;  &amp;amp;fsa_response;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt; &amp;lt;/group&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: Trebuchet MS;"&gt;Lots of concepts are thrown together in there.  I don't want to touch them all here, but - in general - you can see that the reversal treatment is more complex than the return.  I chose to show the FSA group here instead of straight credit because &lt;a href="http://www.andyorrock.com/2008/07/flexible-spendi.html" target="_blank"&gt;the bar is higher&lt;/a&gt; in terms of real-time notification of the endpoint.  The highlights:&lt;/p&gt;&#xD;
&#xD;
&lt;ol&gt;&#xD;
&lt;li&gt;For Endpoint 1 ('EP1'), we go through a group that is going to notify the issuer via Store and Forward (near real-time) that a reversal got done.&lt;/li&gt;&#xD;
&lt;li&gt;Note that we try to find the original purchase!&lt;/li&gt;&#xD;
&lt;li&gt;We &lt;em&gt;&lt;strong&gt;always&lt;/strong&gt;&lt;/em&gt; use SAF to send reversals.&lt;/li&gt;&#xD;
&lt;li&gt;We use FlagReversal to &lt;a href="http://www.andyorrock.com/2007/01/entirely_tmi_on.html" target="_blank"&gt;tag the original&lt;/a&gt; as being reversed (revInd = 'T').&lt;/li&gt;&#xD;
&lt;li&gt;Protect the Originator (!) by ensuring Reversals and Voids always get an Approval ('force_approval').&lt;/li&gt;&#xD;
&lt;/ol&gt;&#xD;
&lt;p&gt;Note that Voids get routed through the same group.  At the point-of-sale, voids differ from reversals in that Voids require an overt clerk or administrator action - e.g., canceling the transaction - whereas reversals are system-generated (e.g., when no response is received to certain transaction class - Debit, EBT, for example - within a proscribed transaction timeout period).&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Also note that Host-based Timeouts are intrinsically different than the Terminal-based Timeouts described above.  The 'H' varieties are handled via the 'query host' participant of the original.  Here's a real-time example:&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;span style="font-family: Courier;"&gt;  &amp;lt;participant class="org.jpos.ep1.QueryEP1Host" &lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;     logger="Q2" realm="query-remote-host"&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="mux"     value="ep1-mux" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="saf"     value="saf" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &lt;span style="background-color: #ffff80; font-family: Courier;"&gt;&amp;lt;property name="timeout" value="25000"   /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="threshold" value="12000"   /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="checkpoint" value="query-host-or-reverse" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="reverse-on-timeout" value="true" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;  &amp;lt;/participant&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;  &amp;lt;participant class="org.jpos.ev.&lt;span style="background-color: #ffff80; font-family: Courier;"&gt;FlagReversal&lt;/span&gt;"&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;   &amp;lt;property name="reversal-class" value="&lt;span style="background-color: #ffff80; font-family: Courier;"&gt;H&lt;/span&gt;" /&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-family: Courier;"&gt;  &amp;lt;/participant&amp;gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;span style="font-family: Trebuchet MS;"&gt;There, we're giving the endpoint 25 seconds to respond to &lt;/span&gt;the Mux.  If we don't see a response in that time, we flag the original as being host-reversed (revInd = 'H') and place a corresponding 0420 (reversal) in the endpoint's SAF queue.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;One important conceptual difference between terminal-based and host-based reversal scenarios is this: in terminal-based scenario, you end up with two cross-linked records on the tranlog (the original and the reversal); in the host-based scenario, there's only one transaction (the original). &lt;/p&gt;&lt;p style="font-family: Trebuchet MS;"&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?a=USB7waWns_c:LVJ_yKAY8w8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AndyOrrockPaymentSystems/~4/USB7waWns_c" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.andyorrock.com/2009/07/the-returnrefund-it-aint-a-reversal.html</feedburner:origLink></entry>
    <entry>
        <title>750,000,000</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AndyOrrockPaymentSystems/~3/YZQYxXaTMAw/750000000.html" />
        <link rel="replies" type="text/html" href="http://www.andyorrock.com/2009/07/750000000.html" thr:count="1" thr:updated="2009-07-22T00:06:35-05:00" />
        <id>tag:typepad.com,2003:post-6a00d8341c507153ef0115710825c1970c</id>
        <published>2009-07-13T08:25:42-05:00</published>
        <updated>2009-07-13T08:25:42-05:00</updated>
        <summary>We passed the three-quarters -of-a-billion mark this past week at our flagship OLS.Switch acquirer location. The winning ticket was an AMEX credit card transaction for $12.00. You can see in my little screenshot image that we got it authorized remotely...</summary>
        <author>
            <name>Andy Orrock</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.andyorrock.com/">&lt;p&gt;&lt;a href="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0115710825b0970c-pi"&gt;&lt;img style="border-right-width: 0px; margin: 0px 5px 5px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="left" src="http://andyorrock.typepad.com/.a/6a00d8341c507153ef011571fce48b970b-pi" width="280" height="130"&gt;&lt;/img&gt;&lt;/a&gt; We passed the three-quarters -of-a-billion mark this past week at our flagship &lt;a href="http://www.olsdallas.com"&gt;OLS.Switch&lt;/a&gt; acquirer location.  The winning ticket was an AMEX credit card transaction for $12.00.  You can see in my little screenshot image that we got it authorized remotely by AMEX in a total 750 milliseconds.   &lt;/p&gt;  &lt;p&gt;That’s apropos for a spotlight transaction – it’s in line with traditional payment processing and the duration is reflective of what we see for remotely authorized credit and offline debit.  This transaction category is at the bedrock of what we do.  These are fundamental things that any OLTP payment host has to do almost straight out of the box.  We’ve got well-honed, repeatable processes in place to “on-board” these types of interfaces in as routine a fashion as possible.  [In fact, I admire AMEX’s well-documented, standards-based approach to such a degree that I made it the focus of &lt;a href="http://www.andyorrock.com/Specs_and_Docs/OLS.SwitchOn-Boarding_v1.1.pdf"&gt;my on-boarding guide&lt;/a&gt;.]&lt;/p&gt;  &lt;p&gt;What’s very interesting in examining the transaction make-up is how much our newer, non-traditional initiatives are starting to lift the overall daily transaction counts.  The most prominent and notable is the impact of &lt;a href="http://www.appriss.com/MethCheckRx.html"&gt;MethCheck&lt;/a&gt;…something we’ve on-boarded quite readily into our payments processing platform as a way to help our clients address the pseudoephedrine compliance challenge.  We’re now fielding over 10,000 of these transactions (on average) per day.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?a=YZQYxXaTMAw:eUEdgLdVuuU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AndyOrrockPaymentSystems/~4/YZQYxXaTMAw" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.andyorrock.com/2009/07/750000000.html</feedburner:origLink></entry>
    <entry>
        <title>Put request, response tranlog columns in new table</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AndyOrrockPaymentSystems/~3/4nz6Xh09NNs/put-request-response-tranlog-columns-in-new-table.html" />
        <link rel="replies" type="text/html" href="http://www.andyorrock.com/2009/07/put-request-response-tranlog-columns-in-new-table.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8341c507153ef011570b942af970c</id>
        <published>2009-07-03T10:32:41-05:00</published>
        <updated>2009-07-06T14:33:24-05:00</updated>
        <summary>Here’s a Release Note I wrote about a new feature we implemented this week into our production environments (some redacting performed – see items in brackets): ------------------------------------------------- Put ‘request’, ‘response’ tranlog columns in new table: In the test system implementation,...</summary>
        <author>
            <name>Andy Orrock</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.andyorrock.com/">&lt;p&gt;&lt;em&gt;&lt;strong&gt;Here’s a Release Note I wrote about a new feature we implemented this week into our production environments (some redacting performed – see items in brackets):&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;-------------------------------------------------&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Put ‘request’, ‘response’ tranlog columns in new table:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;In the test system implementation, the defined terminals mostly reference terminal profiles in which the ‘Audit’ flag is turned on (i.e., set to ‘Y’).  Doing so provides [the &lt;a href="http://www.olsdallas.com"&gt;OLS.Switch&lt;/a&gt; customer] with visibility to the raw, hexadecimal Store System request and response images in the transaction UI display. This level of detail is often vital while reviewing testing efforts. Behind the scenes, the OLS application stores this raw transactional data in the request and response columns of the tranlog as ‘varbinary’ objects.&lt;/p&gt;  &lt;p&gt;In production, the Audit flags for the “in use” terminal profiles are by default set to ‘N’. However, there may be situations in which [an OLS.Switch implementer] is asked (for troubleshooting, fraud detection, etc. reasons) to temporarily track the raw request and response sequences from one or more targeted, production transaction origination points. This raises some ‘handling’ concerns:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;For financial transactions, the raw store system request may reveal the card number in the clear &lt;a href="http://www.andyorrock.com/2008/07/the-p-in-tpk.html"&gt;(if it is sent unencrypted)&lt;/a&gt;. Taken alone, this isn’t a concern if undertaken inside a well-fortified PCI Zone with corresponding good practices. However… &lt;/li&gt;    &lt;li&gt;Once the exercise is concluded, to subsequently remove evidence of the raw request and response requires direct SQL-level action on the tranlog – either to delete specific rows (not recommended as we want the tranlog to be a faithful record of all attempted transactional activity) or to set the request and response columns to NULL. In general, manipulation of the production tranlog along these lines is a practice that should be avoided. &lt;/li&gt;    &lt;li&gt;Should the Audit exercise continue for more than one day, items are copied to the [historical repository] of the tranlog. Raw message information from the production system should not be perpetuated in the repository. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;For these reasons, in this release we are moving the ‘request’ and ‘response’ columns out of the tranlog and into a new raw_message table. The structure of the table is as follows (this is the MS SQL Server version of the schema commands):&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;create table raw_message (      &lt;br&gt;id numeric(19,0) identity not null,       &lt;br&gt;txnid numeric(19,0) null,       &lt;br&gt;type varchar(3) null,       &lt;br&gt;messageData varbinary(MAX),       &lt;br&gt;PRIMARY KEY (id)       &lt;br&gt;);&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Where:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;id&lt;/b&gt; is the auto-incrementing identity column &lt;/li&gt;    &lt;li&gt;&lt;b&gt;txnid&lt;/b&gt; is a reference to the corresponding identity column in the tranlog &lt;/li&gt;    &lt;li&gt;&lt;b&gt;type&lt;/b&gt; indicates whether the item is a raw request message (‘REQ’) or raw response message (‘RSP’) &lt;/li&gt;    &lt;li&gt;&lt;b&gt;messageData&lt;/b&gt; is the binary representation of the raw message as received from (in the case of ‘REQ’) or delivered to (in the case of ‘RSP’) the transaction origination point &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Additionally, OLS has introduced a new property (‘auditTrace’). This value must be set to ‘true’ in the &lt;a href="http://www.andyorrock.com/2009/05/giving-the-transaction-manager-a-workout.html"&gt;TransactionManager&lt;/a&gt; in order for raw message logging to take place. [The value is actually engaged in ‘log_and_reply.inc’, a file that is referenced by all TransactionManager instances.]&lt;/p&gt;  &lt;p&gt;After the implementation of this change, a production post-audit clean-up becomes a simpler, unencumbered exercise: raw data is not moved to [the historical repository]; and information logged to ‘raw_message’ table can be cleaned up via SQL without engaging the tranlog.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;-------------------------------------------------&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;One follow-up to this Release Note:  I asked &lt;a href="http://www.paymentsystemsblog.com/"&gt;Dave&lt;/a&gt; how we should set ‘auditTrace’ in production – my thought was to set it to ‘true,’ thinking we’d be at the ready to turn on tracing without a service re-cycle.  Dave strongly disagreed and stated: OLS.Switch ought to be “Secure by Default” in production.  I really liked that.  Here’s how I memorialized it in our SVN logs: &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font face="Courier New"&gt;Set new auditTrace flag to 'false' in production so that we are "Secure By Default" (c) 2009, Dave Bergert&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;[See Dave’s follow-up to my piece &lt;/em&gt;&lt;/strong&gt;&lt;a href="http://www.paymentsystemsblog.com/2009/07/06/put-%E2%80%98request%E2%80%99-%E2%80%98response%E2%80%99-tranlog-columns-in-new-table/"&gt;&lt;strong&gt;&lt;em&gt;here&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;em&gt;.]&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?a=4nz6Xh09NNs:2sssSkiGXas:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AndyOrrockPaymentSystems/~4/4nz6Xh09NNs" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.andyorrock.com/2009/07/put-request-response-tranlog-columns-in-new-table.html</feedburner:origLink></entry>
    <entry>
        <title>Add node and channelName columns to tranlog</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AndyOrrockPaymentSystems/~3/7ZtmNMs8eWk/add-node-and-channelname-columns-to-tranlog.html" />
        <link rel="replies" type="text/html" href="http://www.andyorrock.com/2009/07/add-node-and-channelname-columns-to-tranlog.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8341c507153ef011570b9357d970c</id>
        <published>2009-07-03T10:08:02-05:00</published>
        <updated>2009-07-03T10:15:18-05:00</updated>
        <summary>Related Readings: The Q2 Log: Nice Package! jPOS and SQL Server: A Compilation of Best Practices Love Your DBA Here’s a Release Note I wrote about a new feature we implemented this week into our production environments (some redacting performed...</summary>
        <author>
            <name>Andy Orrock</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.andyorrock.com/">&lt;p&gt;&lt;strong&gt;Related Readings:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.andyorrock.com/2007/12/the-q2-log-nice.html"&gt;The Q2 Log:  Nice Package!&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.andyorrock.com/2008/04/jpos-sql-server.html"&gt;jPOS and SQL Server: A Compilation of Best Practices&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.andyorrock.com/2008/04/love-your-dba.html"&gt;Love Your DBA&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;Here’s a Release Note I wrote about a new feature we implemented this week into our production environments (some redacting performed – see items in brackets):&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;-------------------------------------------------&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Add ‘node’ and ‘channelName’ columns to tranlog&lt;/b&gt;:  &lt;/p&gt;  &lt;p&gt;When troubleshooting issues in the &lt;a href="http://www.olsdallas.com"&gt;OLS.Switch&lt;/a&gt; operating environment, it would be of great assistance to know the node (i.e., APP01 or APP02) and – if external authorization is attempted – channel (e.g., for an FDR transaction, Hagerstown or Chandler) affiliated with a specific transaction. This information allows the investigator to choose the right node for &lt;a href="http://www.andyorrock.com/2007/12/the-q2-log-nice.html"&gt;q2 log selection&lt;/a&gt;, make well-formed questions to remote partners, formulate SQL queries tallying node- or channel-specific activity, etc.&lt;/p&gt;  &lt;p&gt;The node information is populated from the OS-level server name. For example, the server name for APP01 is app01.nn.yyyyyyy.us. [This is not set inside the OLS application; it is OS-level information configured by the System Administrator.] The first portion of the name – ‘app01’ in this example – is placed into the ‘node’ column. By default, the ‘node’ column is populated for every transaction that traversed the OLS application.&lt;/p&gt;  &lt;p&gt;The channel information is populated from the ‘channel-adapter’ name in the channel-related XML deploy files. For example, in the FDR set-up, the 10_fdr_channel.xml file has a ‘channel-adapter’ name of ‘fdr’:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;channel-adaptor name='fdr' &lt;/font&gt;&lt;font face="Courier New"&gt;class="org.jpos.q2.iso.ChannelAdaptor" logger="Q2"&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;…and the 10_fdr_channel_1.xml file has a ‘channel-adapter’ name of ‘fdr1’:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;channel-adaptor name='fdr1' &lt;/font&gt;&lt;font face="Courier New"&gt;class="org.jpos.q2.iso.ChannelAdaptor" logger="Q2"&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;As a general rule, for dual-channel muxes the 10_nnn_channel.xml file has the ‘channel-adapter’ name of ‘nnn’ and the 10_nnn_channel_1.xml file has the ‘channel-adapter’ name of ‘nnn1.’ These names are the same across nodes, i.e., in the FDR example described above ‘fdr’ and ‘fdr1’ are the channel-adapter names on the APP01 and APP02 nodes. When taken together, the node and channelName columns provide sufficient information to determine the external authorization path for a transaction.&lt;/p&gt;  &lt;p&gt;The ‘channelName’ column is only populated when:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The transaction class is externally authorized – so, for example, the column is not populated for local application authorization transactions like employee validation and discount coupons. &lt;/li&gt;    &lt;li&gt;The transaction attempted an external authorization – so, for example, the column is not populated for a Credit transaction in which the card-id-source = ‘M’ (i.e., a Manager Override – a locally authorized variation of Credit). &lt;/li&gt;    &lt;li&gt;The transaction model governing the external interface is ISO8583 (the ‘Channel Info Filter’ – see next bullet – currently does not extend to non-ISO8583 interfaces) – so, for example, the column is not populated on [National Department Store], [Electronic Check Acceptance Provider] and Verizon transactions. &lt;/li&gt;    &lt;li&gt;The ‘Channel Info Filter’ is added to the channel’s XML definition file: &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;filter class="org.jpos.iso.filter.ChannelInfoFilter" direction="outgoing"&amp;gt;        &lt;br&gt;&amp;lt;property name="channel-name" value="1000" /&amp;gt;         &lt;br&gt;&amp;lt;/filter&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The filter &lt;b&gt;&lt;i&gt;is added&lt;/i&gt;&lt;/b&gt; to the following ISO8583 interfaces: AMEX; [Private Label Provider]; FDR; Green Dot; Incomm; and SVS&lt;/p&gt;  &lt;p&gt;The filter &lt;b&gt;&lt;i&gt;is not added&lt;/i&gt;&lt;/b&gt; to the following non-ISO8583 interfaces: [National Department Store Interface]; &lt;a href="http://www.andyorrock.com/2009/07/live-with-eca.html"&gt;[Electronic Check Acceptance provider]&lt;/a&gt;; and Verizon&lt;/p&gt;  &lt;p&gt;The filter &lt;b&gt;&lt;i&gt;is not added&lt;/i&gt;&lt;/b&gt; to the following &lt;a href="http://www.andyorrock.com/2009/05/implementing-the-oneshotchanneladaptor.html"&gt;‘one-shot channel’&lt;/a&gt;, non-ISO8583 interfaces: Authorized Returns; Drivers License Decode; and &lt;a href="http://www.andyorrock.com/2008/05/implementing-me.html"&gt;MethCheck&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?a=7ZtmNMs8eWk:6Q8hSkS4NuQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AndyOrrockPaymentSystems?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AndyOrrockPaymentSystems/~4/7ZtmNMs8eWk" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.andyorrock.com/2009/07/add-node-and-channelname-columns-to-tranlog.html</feedburner:origLink></entry>
 
</feed><!-- ph=1 --><!-- nhm:dynamic-ssi -->
