Inactive trading partner

Hi All,

I made a trading partner inactive and tried to submit EDI data through the EDI Module home page.I observed a point:
1.The transaction is going in and picking up the processing rule and the service is getting invoked.
is this the correct behaviour?or the transaction should’nt get in?
my requirement is when the customer or trading partner does’nt pay the bill or whatever,his profile should be suspended and all the transactions should remain in suspended state and when they pay the bill,these transactions should be resubmitted.

Any thoughts appreciated.

ramesh.

If the particular partner profile is in disabled state then the transaction for the sender/receiver will show unknown and default rule will be selected and it wont proceed further.This is the actual behaviour.

HTH,
RMG

RMG,

But this is not the behaviour i observe here.anyway i think i’ll have to contact webMethods support team.
my requirement is when the customer or trading partner does’nt pay the bill or whatever,his profile should be suspended and all the transactions should remain in suspended state and when they pay the bill,these transactions should be resubmitted.
Can you tell me how to do this?

ramesh.

ramesh,
I haven’t thought this thru too much but you could try using a delivery queue and temporarily suspend delivery until the bill is paid and then enable the queue. That would queue up all the documents during the time it is suspended and as soon as the queue initiates after the enable the queued documents would drain. Just a thought.
Thanks,
Dawn

Dawn,

I think this should work.if the queue is enabled,will it deliver documents as and when they come into the queue or it has to be scheduled to run at particular time.i have’nt worked on queues before.i appreciate your thoughts.

Thanks
ramesh.

Dawn,

let me explain you what we are doing.
whenever an EDI comes in,it picks up the processing rule and invokes a service which publishes a document to the broker and a manager model subscribes to this publishable document type and the process continues.so, what to do to include this queue and where does this stand in the above flow?

thanks
ramesh.

Ramesh wrote:
"1.The transaction is going in and picking up the processing rule and the service is getting invoked.
is this the correct behaviour?or the transaction should’nt get in? "

It depends upon the processing rule definition. If the receiver is set to “Any” then it will indeed be selected and the defined action taken.

Ramesh wrote:
“my requirement is when the customer or trading partner does’nt pay the bill or whatever,his profile should be suspended and all the transactions should remain in suspended state and when they pay the bill,these transactions should be resubmitted.”

You’ll need to configure and implement this behavior yourself. TN has no concept of “Suspended”. When a profile is disabled, then it’s as if the profile doesn’t exist.

But your process (as much as you’ve shared here) wants to know who the document is for in order to take the proper action. As such, I don’t think disabling a profile (essentially deleting it for processing purposes) to indicate “past due” is a good approach. To go a step further, I don’t think having the integration layer manage the flow of transactions based on account status is a good approach either. There are a great many issues associated with implementing this level of application logic in the integration layer–would strongly advise against it.

I strongly agree with Rob. Using the Integration Server as an app server (a container for business logic ) often leads to an environment where both the application and integration functions perform below expectations.

If your back-end system doesn’t provide a way to implement the logic you need, carefully consider hosting a component in a J2EE or .Net server as a “pre-processor” for the back end. You may very well end up with an extra trip through the Integration Server, but this is a price well worth paying.

Rob,

As you have said "You’ll need to configure and implement this behavior yourself. TN has no concept of “Suspended”.
Is there any way to implement this behaviour in the integration layer?if so, can you please tell me how to achieve this?
by any chance, can we accomplish this using delivery queues?if so, how?

Thanks
ramesh.

Ramesh,

Not sure its a good idea to ask how to do something that two experts have just told you was a bad idea.

However, one compromise approach may be to have TN turn processing of a document over to a process model defined using Modeler. Model your business process (including the desired behavior for “suspended” partners there). If the steps that the process model invokes are calls to business logic inside your application container, then you have a hybrid approach.

It it were my project, I would not queue documents for a suspended partner at all, but would reject them quickly with some type of NAK message and generate an email to a contact in the partners profile. This assumes that you have a processing service that invokes a service to determine whether a partner is “suspended”.

HTH,

Mark

Since these are EDI transactions, I would handle this with one of the many EDI documents available for this purpose. For example, if the “suspended” partner sends an X12 850 purchase order, respond with an 855 acknowledgment that indicates rejection and reason for rejection. It’s just way too dangerous to have someone manipulating partner profiles or delivery queues for what is essentially a credit/accounting purpose.

ramesh,
Yes delivery queues can be used for this, but it may not be the best way to accomplish this task. To use queues you would change your processing rule to deliver to the queue you establish and that queue would have a registered service to be scheduled that would drain the queue at specified intervals. If the partner is not paying the bills then you could suspend the delivery of that queue and not loose the documents. When you wish to release the queue the queued documents would process one at a time until the queue is drained. This seems like a strange purpose for a delivery queue, but it can be done.
Thanks,
Dawn

There must be some back-end system in play here that will process the orders received. Rarely are such systems a simple as a binary up or down for a customer account. They use credit limits, credit ratings, open order balances, etc. As soon as the smallest complexity gets introduced into the process, the whole service has to be rewritten. While it can certainly be done, I sure wouldn’t want to be the one using or maintaining it.

Dawn,

do i have to use a private queue or a public queue?we are not using different processing rules for different trading partners.but we are developing a product and there can be any number of trading partners and there is only one processing rule for all the documents coming into TN.and if i use “deliver document by” action, i think i should use a public queue because we dont know which document goes into which queue.and if i use a public queue,i cant suspend the whole queue because there will be documents meant for other trading partners who pay bills correctly.
can you explain in detail how to accomplish this?if i’m not wrong i think we cannot use delivery queues beacuse there is only one processing rule for all the documents coming into TN.

ramesh.

ramesh,
That is correct this will only work if you have an individual processing rule and queue for each trading partner. This really is logic that the back end systems should be handling where they can determine the credit limit and outstanding balance.
Good Luck!
Dawn

Hi,

As Mark Rosenthal said,“However, one compromise approach may be to have TN turn processing of a document over to a process model defined using Modeler. Model your business process (including the desired behavior for “suspended” partners there). If the steps that the process model invokes are calls to business logic inside your application container, then you have a hybrid approach.”.
As Mark said,i have created model processes which handles the transactions.
Can anyone tell me how to call a component in an application container which handles the business logic from the process model steps?
requirement is to resubmit those transactions after the profiles are made active.
I would really appreciate if someone can help me on this issue.

Thanks
ramesh.

No one here has enough information about your backend systems to answer your question.

One goal of the entire webMethods product suite (especially Integration Server) is to allow you to invoke business logic running in some other server or container. How you do it depends on many, many things primarily the type of interfaces that the application provides (e.g. EJB, RMI, web services, dbms, etc.).

Hi All,

I found a solution for this.Let me know whether this approach has any problems.It goes as follows:
splitoption is Group.so document gets split into X12 Envelope and X12 Group.In the X12 Envelope processing rule(no extended criteria), a service is invoked which checks in the DB for the suspended status of the trading partner(which we maintain in our DB).if it is suspended, then i set a custom attribute(Suspended = true) in the X12 Envelope and reroute it to TN.there is one more processing rule which has the extended criteria set to Suspended equals true.this processing rule is picked up and does nothing but sets the user status to SUSPENDED.
at later point of time, when the suspended status of the trading partner is set to active in the DB, we check for the SUSPENDED user status in the Transaction Analysis and resubmit the transaction.

Expert comments appreciated…

one problem with this approach i am facing is, when i resubmit the transaction, i get an error message as follows:
ErrorMessage:
<errorid> TRNCONS.000000.000003 </errorid>
<errorlevel> ERROR </errorlevel>
<serverversion> </serverversion>
<servername> </servername>
<serverhostname> </serverhostname>
<clientversion> </clientversion>
<clienthostname> </clienthostname>
<username> </username>
<classname> doc.DocPanel </classname>
<methodname> gResubmitAction.actionPerformed </methodname>
<errortime> Thu Jul 14 14:58:03 EDT 2005 </errortime>
<errortext> wm/b2b/edi/templateMgr </errortext>
<additionalerrortext> </additionalerrortext>
<suggestedactions> </suggestedactions>

<exception> <superexception>com.wm.ui2.UiException: wm.tn.doc:resubmit

java.lang.NoClassDefFoundError wm/b2b/edi/templateMgr</superexception>
<sourceexception>null</sourceexception>
<problem>wm.tn.doc:resubmit</problem>
<reason>java.lang.NoClassDefFoundError wm/b2b/edi/templateMgr</reason>
<callstack>null</callstack>
<pipeline>null</pipeline>
</exception>

ramesh

Hi,

when i try to resubmit the document from the transaction analysis screen,it is throwing an error “wm/b2b/edi/templateMgr”.
Can someone tell me what this error is about?i’m unable to trace the error.

Thanks
ramesh.