cancel
Showing results for 
Search instead for 
Did you mean: 

No subscriber defined for message

Former Member
0 Kudos

Hi,

I am using two separate steps,

Step1:HTTP Sync --- Void

The Call Scenario Step atom in step 1 calls step 2 asynchronously and the message is placed in the Inbound Internal Queue.

Step 2: Internal Queue --- B1 Object

Step 2 is defined with the inbound channel type set to Internal Queue. and with outbound channel type set to B1 Object.

But the messages are filtered and the result message says "No subscriber defined for message"

I also tried to use the atom "Put to internal queue" and I got the same result message.

Best regards

Jim

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi,


Seems the “filter” it is not working as documented. see below.


Version:

B1iSN9.0 Version 1.22.6

Symptom

Messages always goes into “Filtered” even if the filters are fulfilled. Result Message: “No subscriber defined for message”

Criteria Field Definitions

Name

Selection Path

Filter Type

Default Step

Default Operator

B1Database

//*[local-name()='Payload' and ./@Role='S']//*[local-name()='MDMCustomer']/*[local-name()='MDM']/*[local-name()='B1Database']

SenderReceiver

all

Equal to

B1System

//*[local-name()='Payload' and ./@Role='S']//*[local-name()='MDMCustomer']/*[local-name()='MDM']/*[local-name()='B1System']

SenderReceiver

all

Equal to

Seems the variable is not supported in the selection path.

Scenario Setup Wizard-Filter Definitions

It works if there is only one receiver is selected during the scenario setup wizard, but it is always says  “No subscriber defined for message” if there are multiple receivers

Inbound message:

<?xml version="1.0" encoding="utf-8"?>

<MDMCustomer xmlns="http://xxx.com/common/mdm">

      <MDM>

<B1System>APACB1</B1System>

<B1Database>IN01</B1Database>

      </MDM>

</MDMCustomer>

Output Header information.

<Header>

<ReceiverList>

<Receiver Id="0010000114" filter="" sndfilter="//*[local-name()='MDMCustomer']/*[local-name()='MDM']/B1Database='IN01' and //*[local-name()='MDMCustomer']/*[local-name()='MDM']/B1System='APACB1'" subscribed="false"/>

<Receiver Id="0010000116" filter="" sndfilter="//*[local-name()='MDMCustomer']/*[local-name()='MDM']/B1Database='IN01' and //*[local-name()='MDMCustomer']/*[local-name()='MDM']/B1System='APACB1'" subscribed="false"/>

<Receiver Id="0010000117" filter="" sndfilter="//*[local-name()='MDMCustomer']/*[local-name()='MDM']/B1Database='IN01' and //*[local-name()='MDMCustomer']/*[local-name()='MDM']/B1System='APACB1'" subscribed="false"/>

</ReceiverList>

</Header>

Best regards

Jim

Former Member
0 Kudos

Keep update on this:

Bascially it worked after I did following,

1. Online help " Configuring Sender Filter Definitions "

NOTE

If the defined filters do not work at runtime, and the integration framework does not display the filter in the input fields, and you can no longer save the definitions, there is a syntax error in your filter definitions. To resolve the issue, delete the com.sap.b1i.vplatform.scenarios.setup/ vPac.<package name> folder in the BizStore. Then, repeat the scenario package setup.

2. Originally I created two criteria fields with the sam filter type "SenderReceiver",  now they are set to two different filter type. one is sent to "Sender",The another one is set to "SenderReceiver"

But, There is still a problem realted to "Define Sender Filter Definitions", I am very confusing, Why the filtered message ends up in "Failure", Not "Filter"?

Best regards

Jim