Field 63 sub element issue for Iso87B Packager

1,582 views
Skip to first unread message

kapilashantha rajapaksha

unread,
Jul 15, 2011, 2:39:10 AM7/15/11
to jpos-...@googlegroups.com
hi,

I'm using Iso87binary version to create IsoMsg. I have problem with field 63 sub elements values.

For field 63 definition

First two byte                          = Length of value
Second two byte                     = Length of sub value
Fifth byte should be static        = 17
Sixth and seventh byte            = 4DBC number ('1324')

Example for for field 63 (00080006313731333234)

How my field 63 in iso8583B.xml

<isofieldpackager
      id="63"  
      length="999"
      name="PRIVATE DATA"
      class="org.jpos.iso.IFB_LLLCHAR"
      packager="org.jpos.iso.packager.ISO87BPackager">

          <isofield
          id="1"
          length="6"
          name="Customer Name"
          class="org.jpos.iso.IFB_LLLCHAR"/>
 
  </isofieldpackager>


Actually above definition for 63 is only for one transaction (When keying card number and 4DBC value for amex transactions. It means doing manually transaction without card swapping )


But for settlement transaction field 63 definition should be default
First two byte                          = Length of value
The value                               = Settlement details


So I'm trying to use same  iso8583B.xml file to both scenario

Qusions

01. Is it possible using same iso8583B.xml  file ?
02. If not what is the solution that can be applied ?
03. I'm trying some testing with my packager but getting some error


This is my test code :

            ISOPackager packager=new GenericPackager("iso8583B.xml");
            ISOMsg m = new ISOMsg();
            m.setPackager(packager);
             
            m.set(0,"0200");
            m.set(11,"020011");
            m.set(25,"00");
            m.set(41,"22222222");
            
           ISOMsg inner = new ISOMsg(63);
            inner.set(1,"171324");
            m.set(inner);
            System.out.println(ISOUtil.hexString(m.pack()));

Getting Error :

org.jpos.iso.ISOException: org.jpos.iso.IFB_LLLCHAR: Problem packing field 0 (java.lang.ClassCastException: [B cannot be cast to java.lang.String)
    at org.jpos.iso.ISOStringFieldPackager.pack(ISOStringFieldPackager.java:181)
    at org.jpos.iso.ISOMsgFieldPackager.pack(ISOMsgFieldPackager.java:89)
    at org.jpos.iso.ISOBasePackager.pack(ISOBasePackager.java:142)
    at org.jpos.iso.ISOMsg.pack(ISOMsg.java:311)
    at Test.main(Test.java:28)
Nested:java.lang.ClassCastException: [B cannot be cast to java.lang.String
    at org.jpos.iso.ISOStringFieldPackager.pack(ISOStringFieldPackager.java:168)
    at org.jpos.iso.ISOMsgFieldPackager.pack(ISOMsgFieldPackager.java:89)
    at org.jpos.iso.ISOBasePackager.pack(ISOBasePackager.java:142)
    at org.jpos.iso.ISOMsg.pack(ISOMsg.java:311)
    at Test.main(Test.java:28)
Nested:java.lang.ClassCastException: [B cannot be cast to java.lang.String
    at org.jpos.iso.ISOStringFieldPackager.pack(ISOStringFieldPackager.java:168)
    at org.jpos.iso.ISOMsgFieldPackager.pack(ISOMsgFieldPackager.java:89)
    at org.jpos.iso.ISOBasePackager.pack(ISOBasePackager.java:142)
    at org.jpos.iso.ISOMsg.pack(ISOMsg.java:311)
    at Test.main(Test.java:28)


Hope reply

Best regards,


 
 


Alejandro Revilla

unread,
Jul 15, 2011, 4:17:05 PM7/15/11
to jpos-...@googlegroups.com
You could use a Dynamic packager and set different field packagers for field 63 depending on the message type, but the easiest solution is to handle it as an opaque field and dealing with it from your application.

--
@apr



kapilashantha rajapaksha

unread,
Jul 18, 2011, 4:37:42 AM7/18/11
to jpos-...@googlegroups.com
Can you tell me why it is throwing an exception? What is the wrong with my packager ?


After searching google, I did small modification of my package as bellow.


 
<isofieldpackager
      id="63"  
      length="999"
      name="PRIVATE DATA"
      class="org.jpos.iso.IFB_LLLBINARY"
      packager="org.jpos.iso.packager.ISO87BPackager">
    
      
      
          <isofield
          id="1"
          length="6"
          name="Customer Name"
          class="org.jpos.iso.IFB_LLLCHAR"/>
     
      
  </isofieldpackager>

Actually, now it is giving correct output what i expected.But when I unpack the same massage I am getting error.

Pack:
0200002000800080000202001100323232323232323200080006313731333234


Code :

            //unpack
            ISOMsg um = new ISOMsg();
            um.setPackager(packager);
            um.unpack(pack);
           
Error :

java.lang.NullPointerException
    at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:209)
    at org.jpos.iso.ISOMsgFieldPackager.unpack(ISOMsgFieldPackager.java:107)
    at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:229)
    at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:322)
    at Test.main(Test.java:34)
error unpacking field 63
org.jpos.iso.ISOException: java.lang.NullPointerException (java.lang.NullPointerException)
    at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:293)
    at org.jpos.iso.ISOMsgFieldPackager.unpack(ISOMsgFieldPackager.java:107)
    at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:229)
    at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:322)
    at Test.main(Test.java:34)


Any thing missing ?

Thanks and very best regards,

--
jPOS is licensed under AGPL - free for community usage for your open-source project. Licenses are also available for commercial usage.
Please support jPOS, contact: sa...@jpos.org
 
You received this message because you are subscribed to the "jPOS Users" group.
Please see http://jpos.org/wiki/JPOS_Mailing_List_Readme_first
To post to this group, send email to jpos-...@googlegroups.com
To unsubscribe, send email to jpos-users+...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/jpos-users

Mark Salter

unread,
Jul 18, 2011, 8:53:19 AM7/18/11
to jpos-...@googlegroups.com
On 18/07/2011 09:37, kapilashantha rajapaksha wrote:
> Can you tell me why it is throwing an exception? What is the wrong with my
> packager ?
The packager you are using doesn't precisely match the data being received?

>
> //unpack
> ISOMsg um = new ISOMsg();
> um.setPackager(packager);
> um.unpack(pack);

What data are you unpacking in this test code?

Has it been modified in *anyway* since the pack?

The Packager should be implicitly reversible, unless the data or
packager is different than that produced or used in the pack.


--
Mark

kapilashantha rajapaksha

unread,
Jul 18, 2011, 11:16:03 PM7/18/11
to jpos-...@googlegroups.com
The packager you are using doesn't precisely match the data being received?
Actually, Just I'm doing a testing before applying to my txn server. Testing means, within a single method first create the Isomsg to be sent towards back-end and print the massage packet there then after I will extract the same massage to test whether it can extract or not using my packager.  

With my packager where field 63


<isofieldpackager
      id="63"  
      length="999"
      name="PRIVATE DATA"
      class="org.jpos.iso.IFB_LLLCHAR"
      packager="org.jpos.iso.packager.ISO87BPackager">
 
          <isofield
          id="1"
          length="6"
          name="Customer Name"
          class="org.jpos.iso.IFB_LLLCHAR"/>
 
      
  </isofieldpackager>

I can't at least create an isomsg. It is giving above exception (First post)

Due to that, I made a small change on my packager as below

<isofieldpackager
      id="63"  
      length="999"
      name="PRIVATE DATA"
      class="org.jpos.iso.IFB_LLLBINARY"
      packager="org.jpos.iso.packager.ISO87BPackager">
 
          <isofield
          id="1"
          length="6"
          name="Customer Name"
          class="org.jpos.iso.IFB_LLLCHAR"/>
 
      
  </isofieldpackager>


After that, I can create isomsage but I cant extract created isomsg. That is the issue having with me.


My question:

01. Why I can't create iso massage by keeping IFB_LLLCHAR for field 63 as above mentioned packager?
02. After doing IFB_LLLCHAR to IFB_LLLBINARY why I can't extract created massage ?


This is my test code for creating and exacting :


try {

            ISOPackager packager=new GenericPackager("iso8583B.xml");
            ISOMsg m = new ISOMsg();
            m.setPackager(packager);
            
            m.set(0,"0200");
            m.set(11,"020011");
            m.set(25,"00");
            m.set(41,"22222222");
            
            ISOMsg inner = new ISOMsg(63);
            inner.setPackager(packager);
            inner.set(1,"171324");
            m.set(inner);
            byte pack[] = m.pack();
        
            System.out.println(ISOUtil.hexString(pack));

            At this point I'm getting output (0200002000800080000202001100323232323232323200080006313731333234)

            
            //unpack
            ISOMsg um = new ISOMsg();
            um.setPackager(packager);
            um.unpack(pack);
            
            
            for (int i=0;i<um.getMaxField();i++){
                if (um.hasField(i)){
                    
                    System.out.println(um.getString(i) );
                }
   
            }


        } catch (Exception e) {
            
            e.printStackTrace();

        }

 

Error :

java.lang.NullPointerException
    at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:209)
    at org.jpos.iso.ISOMsgFieldPackager.unpack(ISOMsgFieldPackager.java:107)
    at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:229)
    at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:322)
    at Test.main(Test.java:37)

error unpacking field 63
org.jpos.iso.ISOException: java.lang.NullPointerException (java.lang.NullPointerException)
    at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:293)
    at org.jpos.iso.ISOMsgFieldPackager.unpack(ISOMsgFieldPackager.java:107)
    at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:229)
    at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:322)
    at Test.main(Test.java:37)
 


Sorry same thing repeating again and again because my lack English knowledge.

Hope reply

With best regards,

Alejandro Revilla

unread,
Jul 18, 2011, 11:21:32 PM7/18/11
to jpos-...@googlegroups.com
When you configure a nested ISOMsg (composite field), the outer packager has to be of type BINARY, that's why you can't use IFB_LLLCHAR as your 'wrapper' packager for field 63.

--
@apr


kapilashantha rajapaksha

unread,
Jul 18, 2011, 11:27:46 PM7/18/11
to jpos-...@googlegroups.com

Ok thanks for advice. But waiting for second question


kapilashantha rajapaksha

unread,
Jul 20, 2011, 5:22:23 AM7/20/11
to jpos-...@googlegroups.com
Dear,

I'm waiting for reply question 2

Mark Salter

unread,
Jul 20, 2011, 7:06:39 AM7/20/11
to jpos-...@googlegroups.com
On 20/07/2011 10:22, kapilashantha rajapaksha wrote:

> I'm waiting for reply question 2
>

We have your question and no-one has taken the opportunity to answer,
perhaps you could try rephrasing it.

I have re-read it again and I'm still not at all sure what you are
asking, can you make your question much clearer?

If there is no answer forthcoming, then chasing one won't help, that is
the beauty of this and other open source mailing lists, people can pick
or choose what is important to them.

--
Mark

kapilashantha rajapaksha

unread,
Jul 20, 2011, 7:37:31 AM7/20/11
to jpos-...@googlegroups.com
If you can tell me which point is unclear for you?  I can explain it.

Mark Salter

unread,
Jul 20, 2011, 8:18:16 AM7/20/11
to jpos-...@googlegroups.com
On 20/07/2011 12:37, kapilashantha rajapaksha wrote:
> If you can tell me which point is unclear for you? I can explain it.
>

"


02. After doing IFB_LLLCHAR to IFB_LLLBINARY why I can't extract created
massage ?
"

What did you do?
What change did you make?
What was the result?
What does "can't extract" mean - an Exception, an error message, bad
data or result?
Can you present a small self-contained piece of code to show what is wrong?


I appreciate that some (if not all) of this information *might* have
been presented already, but I suspect that it is spread through three or
four postings, which makes it hard to find and gather.

My observation would be that if *I* have to try or am struggling to work
out and find all the parts of a question, I tend not to bother, like's
too short.

Other's might not share this view, but it might explain why no-one has
answered your question on a mailing list where it is not unusual for two
or more answers from different people to some questions.

--
Mark

hairi

unread,
Jul 20, 2011, 7:52:10 AM7/20/11
to jpos-...@googlegroups.com

Hi,

 

I’ll try to help out Mark in anwering your question.

 

Your question is unclear, but if i have to guess

You need something that process/treat field 63 differently depending on the transaction type ?

 

If thats correct then......

 

You either have to  code a custom packager that does dynamic  branching pack/unpack depending on a field type,

This is how I coded my Thales Keytypes.

 

OR

 

Create two xml packager definition, get the transaction type and unpack/repack the message to read field you want

Based on the transaction type.

 

 

 

 

Best Regards.

Hairi

 

 

 

 

<CLIP>

Actually above definition for 63 is only for one transaction (When keying card number and 4DBC value for amex transactions. It means doing manually transaction without card swapping )


But for settlement transaction field 63 definition should be default
First two byte                          = Length of value
The value                               = Settlement details


So I'm trying to use same  iso8583B.xml file to both scenario

Qusions

01. Is it possible using same iso8583B.xml  file ?
02. If not what is the solution that can be applied ?
03. I'm trying some testing with my packager but getting some error

</CLIP>

Alejandro Revilla

unread,
Jul 20, 2011, 8:50:43 AM7/20/11
to jpos-...@googlegroups.com
Both good options, there's a third one, don't worry and handle field 63 as an opaque field, doing the parsing manually on the high level code. I think I've mentioned this option already.

As for reading messages and asking questions, let me tell you how I read most lists, I open a message with my finger 1mm away from the 'D' key, if the first *short* paragraph doesn't caught my attention, I hit it right away. I guess most people do the same, and that's the beauty of this kind of lists that we join for fun. 

Mark Salter

unread,
Jul 20, 2011, 9:06:28 AM7/20/11
to jpos-...@googlegroups.com
On 20/07/2011 13:50, Alejandro Revilla wrote:
> Both good options, there's a third one, don't worry and handle field 63 as
> an opaque field, doing the parsing manually on the high level code. I think
> I've mentioned this option already.
You have and perhaps the OP just missed it.

I think this is the right way, with perhaps dynamic Packagers being used
once the foundation of jPOS is clearer.

>
> I open a message with my finger 1mm away from the 'D' key, if
> the first *short* paragraph doesn't caught my attention, I hit it right
> away. I guess most people do the same, and that's the beauty of this kind of
> lists that we join for fun.

Agreed, although my finger hovers 2mm away, perhaps I should think about
reducing my distance 8).

--
Mark

kapilashantha rajapaksha

unread,
Jul 20, 2011, 11:02:50 PM7/20/11
to jpos-...@googlegroups.com
I'm keeping two xml packagers according the transaction type as Hairi said. Now I am able to pack  IsoMsg element data according their specification.

But I am still unable to unpack the response massage from back-end properly. It means, I'm not getting any exception but I'm getting null value for field 63 only. But in the response packet it has field 63 with inner IsoMsg.

Appreciate if someone tells me how to read inner massage and read its sub value ?

Regards,
Kapila

Mark

hairi

unread,
Jul 20, 2011, 11:46:58 PM7/20/11
to jpos-...@googlegroups.com

Dear Kapilashanrtha,

 

Answering your question is like playing a guessing game.

It will be helpfull if you could provide a hexdump of the incoming message.

However, let me take a stab again.

 

Outer field should be LLBinary

Inner field should be LLChar

 

So 2Ls instead of 3.

 

 

Best Regards,

Hairi

 

 

 

 

 

 

From: jpos-...@googlegroups.com [mailto:jpos-...@googlegroups.com] On Behalf Of kapilashantha rajapaksha
Sent: 21 Juli 2011 10:03
To: jpos-...@googlegroups.com
Subject: Re: [jpos-users] Field 63 sub element issue for Iso87B Packager

 

I'm keeping two xml packagers according the transaction type as Hairi said. Now I am able to pack  IsoMsg element data according their specification.

Mark Salter

unread,
Jul 21, 2011, 2:52:53 AM7/21/11
to jpos-...@googlegroups.com
On 21/07/2011 04:02, kapilashantha rajapaksha wrote:
> I'm keeping two xml packagers according the transaction type as Hairi said.
> Now I am able to pack IsoMsg element data according their specification.
>
Ok.

Can you share the resultant contents of field 63 in each case perhaps?

> But I am still unable to unpack the response massage from back-end properly.
> It means, I'm not getting any exception but I'm getting null value for field
> 63 only. But in the response packet it has field 63 with inner IsoMsg.
>

Then I would think you are not using the same/right Packager on unpack
as was used on pack.

Can you describe the exact steps you are taking (at each end) and back
this with minimal code snippets?


> Appreciate if someone tells me how to read inner massage and read its sub
> value ?

isomsg.getString("63.1")

is illustrative of a possible way, but not being sure about your set-up,
please revise/adjust to your needs?

--
Mark

kapilashantha rajapaksha

unread,
Jul 21, 2011, 3:19:02 AM7/21/11
to jpos-...@googlegroups.com
Getting response from back-end as bellow.

0210002000800080000202001100323232323232323200080006313731333234

This is how I'm going to unpack coming response

            byte[] respons = ISOUtil.hex2byte("0210002000800080000202001100323232323232323200080006313731333234");
           // Unpack response massage

            ISOMsg um = new ISOMsg();
            um.setPackager(packager);
            um.unpack(respons);
           
            //Print response element data

            for (int i=0;i<um.getMaxField();i++){
                if (um.hasField(i)){
                   
                    System.out.println(um.getString(i) );
                }
   
             }

where packager definition as bellow for field 63 (Note : I'm using iso87binarry.xml)


<isofieldpackager
      id="63"  
      length="999"
      name="PRIVATE DATA"
      class="org.jpos.iso.IFB_LLLBINARY"
      packager="org.jpos.iso.packager.ISO87BPackager">
    
 
        <isofield
          id="1"
          length="6"
          name="Customer Name"
          class="org.jpos.iso.IFB_LLLCHAR"/>
 
  </isofieldpackager>


Note : This same xml file, I will use for creating request IsoMsg to bank server

Regards

Mark

ha...@m-sinergi.com

unread,
Jul 21, 2011, 3:52:22 AM7/21/11
to jpos-...@googlegroups.com
Greetings,

Where's the customer data subfield in that response. Can you highlight when the field 63 starts and end ?

Best Regards,
Hairi

Sent from my BlackBerry®
powered by Sinyal Kuat INDOSAT


From: kapilashantha rajapaksha <kapila...@gmail.com>
Date: Thu, 21 Jul 2011 12:49:02 +0530
Subject: Re: [jpos-users] Field 63 sub element issue for Iso87B Packager

Mark Salter

unread,
Jul 21, 2011, 2:30:18 PM7/21/11
to jpos-...@googlegroups.com
On 21/07/2011 08:19, kapilashantha rajapaksha wrote:
> //Print response element data
> for (int i=0;i<um.getMaxField();i++){
> if (um.hasField(i)){
>
> System.out.println(um.getString(i) );
Can you change this to:-

System.out.println(i+"=["+um.getString(i)+"]" );

And show what output you get please?

>
> where packager definition as bellow for field 63 (Note : I'm using
> iso87binarry.xml)
>
> <isofieldpackager
> id="63"
> length="999"
> name="PRIVATE DATA"
> class="org.jpos.iso.IFB_LLLBINARY"
> packager="org.jpos.iso.packager.ISO87BPackager">

This packager looks wrong to me, I think it should be of type
XXXXSubfieldPackager?


>
>
> <isofield
> id="1"
> length="6"
> name="Customer Name"
> class="org.jpos.iso.IFB_LLLCHAR"/>
>
> </isofieldpackager>
>

So this is the definition that will always match the response given by
your back-end?

So your back-end echos 63.1 back and adds no other subfields to field 63?

--
Mark

kapilashantha rajapaksha

unread,
Jul 22, 2011, 12:02:06 AM7/22/11
to jpos-...@googlegroups.com
So this is the definition that will always match the response given by
your back-end?

Yes for only this transaction type (Note : I will use separate xml file for only this transaction type)


So your back-end echos 63.1 back and adds no other subfields to field 63?

Yes, Only one field

It is as bellow


Field

Attribute

Bytes

Values

Additional Data Length

n 4

2

‘0LLL’ – BCD length of the data to follow

Table Id

ans 2

2

‘17’ – AMEX 4DBC

Value

an 4

4

The 4DBC figure as it is printed on the AMEX Card


This packager looks wrong to me, I think it should be of type
XXXXSubfieldPackager?

Just I changed it like this "org.jpos.iso.packager.GenericSubFieldPackager"

Then I will get pack error while creating request 

Then I change it back again org.jpos.iso.packager.ISO87BPackager as previous.


And show what output you get please?

when i change from um.setPackager(packager) um.setPackager(new ISO87BPackager()) (Note : just for testing)


It is as bellow

0=[0210]
11=[020011]
25=[00]
41=[22222222]

but when it is um.setPackager(packager)

I am getting error as bellow


error unpacking field 63
org.jpos.iso.ISOException: java.lang.NullPointerException (java.lang.NullPointerException)
    at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:293)


Regards





Mark

Mark Salter

unread,
Jul 22, 2011, 2:23:18 AM7/22/11
to jpos-...@googlegroups.com
Ok, I am giving up on this thread, this is likely my last comment, it is
just too hard to help you, sorry, perhaps later or another time.

On 22/07/2011 05:02, kapilashantha rajapaksha wrote:

> This packager looks wrong to me, I think it should be of type
> XXXXSubfieldPackager?
>
> Just I changed it like this "org.jpos.iso.packager.GenericSubFieldPackager"
>

You picked a sub field packager at random and it didn't 'just work'...

> Then I will get pack error while creating request

.. but you still don't give us the exact 'error' or output?

>
> Then I change it back again org.jpos.iso.packager.ISO87BPackager as
> previous.

Well, it is still potentially wrong then?


>
>
> And show what output you get please?
>
> when i change from um.setPackager(packager) um.setPackager(new
> ISO87BPackager()) (Note : just for testing)
>
>
> It is as bellow
>
> 0=[0210]
> 11=[020011]
> 25=[00]
> 41=[22222222]

No field 63?

>
> but when it is um.setPackager(packager)

What is in this field packager? I don't know form the detail given, do I?

--
Mark
I'm out of this thread.

kapilashantha rajapaksha

unread,
Jul 22, 2011, 2:40:56 AM7/22/11
to jpos-...@googlegroups.com

No issue Mark,
Anyway thanks you who are dominating and supporting to people on this mailing list.

What I understood, rather than using third patty libraries (Like Jpos). It's better doing on my code itself.

It is almost miscommunication between me and your all. It means, people don't have same thinking pattens and same mind etc. Actually it is the human nature.

No any angry with anybody still I'm loving JPOS implementation 

Thanks all and regards

 

--

Mark Salter

unread,
Jul 22, 2011, 8:21:54 AM7/22/11
to jPOS Users

On Jul 22, 7:40 am, kapilashantha rajapaksha <kapilashan...@gmail.com>
wrote:
> No issue Mark,
> Anyway thanks you who are dominating and supporting to people on this
> mailing list.
Thanks I do try.

>
> What I understood, rather than using third patty libraries (Like Jpos). It's
> better doing on my code itself.
I would hope that is the wrong way round.

>
> It is almost miscommunication between me and your all. It means, people
> don't have same thinking pattens and same mind etc. Actually it is the human
> nature.
I know this, and believe it is for the person seeking answer to
overcome the barriers to information transfer.

To help we need to have enough information from your setup to see what
the problem might be. As ever, because jPOS works for many thousands
of people and systems, it is very lkely 'something you are doing'.

I may not have said so before - i'm too lazy to check now - you might
find it useful to read :-

http://www.catb.org/~esr/faqs/smart-questions.html

there might even be a translation in your preferred language:-

http://www.catb.org/~esr/faqs/smart-questions.html#translations

>
> No any angry with anybody still I'm loving JPOS implementation

What you are trying to do is very easy (or should be), It often boils
down to getting the documentation for the target host and ensuring
that the first step is to get the right Packager and the right
Channel, everything else can then follow

--
Mark
Reply all
Reply to author
Forward
0 new messages