cancel
Showing results for 
Search instead for 
Did you mean: 

Key Expansion Atom - missing BIUMETA

Former Member
0 Kudos

Hi all,

i use B1iSN9 with Business one 9.1 (SQL Server) and trying to understand how to use B1isnke atom.

I've followed the documentation instruction but i can not get it to work properly because i always get back a message as "missing BIUMETA document" into the atom payload.

This is what I have done:

  • Goal: i want to enrich my message with some data from the receiver system before handing it to the outbound phase
  • In my processing phase i:
    • Create the KE atom
    • Setup my processing phase into the receiver context (having the "R" letter insted of the "S" one in the scenario flow)
    • Create the BIUMETA (KE definition document) from the KE atom (SBO 9.0 to SBO 9.0)
    • Create the "XSL for JDBC call" (KERequest.JDBC.01.xsl) document from the KE atom
    • Setup the KE receiver side specifing:
      • KE Type: xsl.jdbc
      • System proposed me "KE01" as Object Id
      • I set up my "XLS for JDBC" (KERequest.JDBC.01.xsl) document as XSL Document
    • Into the "Key" form i specify an xPath to get from the Sender Message (payload "S") my "research key" the the framework linked to "Key01"
    • Into the "KERequest.JDBC.01.xsl" document i type the query I want to run against the receiver system to get the desired data. In the where condition i specify the "Key01" key to obtain the value
    • Into the "atom0" i specify the xPath to the KE atom to get my value
  • When i run the flow it get processed succesfully but i do not get any data from the KE atom payload that sais "missing BIUMETA" document

What am I doing wrong?

Is there some other configuration i missed from the documentation?

I really can't figure it out until now.

Thank you

Accepted Solutions (1)

Accepted Solutions (1)

bastian_schaefer
Active Contributor
0 Kudos

Hi Stefano,

My recommendation if you have a simple sql statement for sender or receiver system, just use the sql call atom.

The key expansion atom is a relic to support a kind of backwards compatibility for B1iSN8.8.

With the actual framework versions including B1iSN9.0, it still makes sense to use it for nested key expansions actions but not really for simple requests.

Having this said and you still want to use the key expansion atom, please make sure you've created a BIUMETA for the system type combination as defined in the SLD of your receiver ID and your sender ID.

  • Is your sender system and your receiver system from type B1 9.0 in the SLD?

You could add some additional BIUMETAs pointing to the same KERequest.JDBC.01.xsl by creating a new "KE Definition Document" (e.g. generic BIUMETA.B1_B1.xml or explicit BIUMETA.B1.9.0_B1.9.0.xml or BIUMETA.B1.8.8_B1.8.8.xml depending on your concrete sender/receiver type combination).

To apply the key expansion in the test environment, you need to select a concrete sender and receiver system or a test message having these information.

Best regards

Bastian

Former Member
0 Kudos

Hi Bastian,

thank you for your explanation; as you suggested I'll avoid the ke atom as much as possible.

But I only want to be sure to know how it works if i'll ever need it.

This is a complete example of what i'm trying to do, hope it will help to find my error; in this case i got no more "missing biumeta" but still  the atom returns an empty result and I can't figura it out why:

  • I create a new scenario SAP BO 9.1 to SAP BO 9.1 where I migrate (add/update) Business Partners:
  • I've added a new KE atom before the final one. My goal is to add into the "Notes" field in the receiver system (OCRD.Notes), the information contained into the "Alias Name" (OCRD.AlisName)  field of the sender system
    N.B Obviusly this is only an example because the "AliasName" infos already with the Payload "S"

  • The KE atom setup is as follows:
  • The "KE expansion definition" where I add a key in the sender  context because the information I want to bring into the atom0 came from the sender system. I'll use the sender "CardCode" information
  • My KERequest.jdbc.01.xml file details:

    in the file i get the AliasName from OCRD where CardCode = Key01 (BOM/BO/OCRD/row/CardCode)
  • Finaly my atom0:

    maybe there is something wrong with the xPath i use to get atom1 data?
    select="/vpf:Msg/vpf:Body/vpf:Payload[./@id='atom1']/*"



  • When i try to test my scenario i got this result:

    as you can see the "Notes" node is empty

  • If I debug my flow and opens the red-arrow of the final atom i can see this:

    as you can see "Key01" tag is correctly filled in with the sender CardCode but the result set node is empty even if the corresponding tag of the sender xml has a value:

  • If i try to run the query against the sender database it returns the desired result:



In your opinion what am i doing wrong?

Thanks for your support.

Stefano.

bastian_schaefer
Active Contributor
0 Kudos

Hi Stefano,

what is the root tag of your sender payload: is it "OCRD" or "BusinessPartners"?

Please align your xpath for the key accordingly.

Best regards

Bastian

Former Member
0 Kudos

Hi Bastian,

in my sender Payload I have the "OCRD" root tag:

so I think that the xPath to the key is correct because if i scroll down to the atom1 (KE atom) i can see that the flow get the correct key value:

but not result is returned.

Thanks

Stefano

bastian_schaefer
Active Contributor
0 Kudos

Hi Stefano,

could you please click into the blue area of the KeyExpansion atom to get further debugging information?

Please check if the sql statement has been processed (compare the screenshot below):

Best regards

Bastian

Former Member
0 Kudos

Hi Bastian,

i've check as you suggested and find out the my query run with a "black space" before the cardcode:

actually line "1" is the query executed by the process and returns no records; insted row "3" is the query where i removed the blank space:

is this something i've done wrongly in the KERequest document?

Thanks

Stefano

Former Member
0 Kudos

Hi Bastian,

i've checked my XSL file and removed the space between the &apos; string ad my <xsl:value-of>:

Now it works properly:

Thank you for the help, i'll debug my flow carefully next time.

Regards

Stefano

Former Member
0 Kudos

Hi Bastian,

sorry to bother you again.

After running the scenario succesfully in test mode i tried to perform the same operation using a real transaction triggered by a Business One event (BP update) but now i get back again the "no BIUMETA found" message:

even if I can run the same flow a minute before without problems, having the <Notes> node filled correctly with the KE result.

If i try to debug the "processing phase":

i got back this huge process flow:

I've tried to open each "Call" atom but it seems I cannot see the it's content.

In your opinion, what is the best way to find out what is happening?

Thank you again.

Stefano

Thank you.

Stefano.

bastian_schaefer
Active Contributor
0 Kudos

Hi Stefano,

seems to be a missing BIUMETA for your concrete Sender-Receiver-Combination. Are you working with outbound VOID?

Please generate it and assign your jdbc statements.

Best regards

Bastian

Former Member
0 Kudos

Hi Bastian,

i'm working with a SAP BO outbound phase and I think that the KERequest file is linked as i've showed in the previous post.

Am I wrong.

Can you tell me where to check if this file is correctly linked?

Thanks

Stefano

Former Member
0 Kudos

Hi Bastian,


maybe i misunderstood something.

Is the BIUMETA document you are referring to, the "KERequest" i was talking about?


Thank you.

Stefano

bastian_schaefer
Active Contributor
0 Kudos

Hi Stefano,

the BIUMETA and the KERequest are different documents.

The BIUMETA describes the sender-receiver tuple, where the KERequest is attached to.

The BIUMETA (sender-receiver combination) decides which KERequest documents are processed.

Best regards

Bastian

Former Member
0 Kudos

Hi Bastian,

thank you.

So it seems that I should already have this document linked to my flow.

Actually if you see my previous post i have it:

and I'm running this scenario when getting back the "missing BIUMETA document..." message.

bastian_schaefer
Active Contributor
0 Kudos

Hi Stefano,

please check the Header of your message:

  • Which sysid and systemtype has your concrete sender system?
  • Which sysid and systemtype has your concrete receiver system?

Best regards

Bastian

Former Member
0 Kudos

Hi Bastian,

actually, as you said, it seems i'm missing this info:

but i don't understand where I got wrong because:

  • when i created the BIUMETA document i specify that my sender and my receiver system are SAP BO 9.0.
  • my scenario step is configured with a sender SAP BO and a receiver SAP BO

My definition document shows "BIUMETA.B1.9.0_B1.9.0.xml" so i think it should be correctly linked:

what do you suggets?

Thank you.

bastian_schaefer
Active Contributor
0 Kudos

... just define a receiver system in your scenario setup

Bastian

Former Member
0 Kudos

I think i already have one because when I add/update my BP in the sender SAP BO database i receive message in the receiver system:

but when i open the outbound message it got processed succesfully except for the KE atom where i got the "missing BIUMETA" error.

Myabe I have to delete this atom and try again from zero?

Former Member
0 Kudos

Hi Bastian,

i've done again the flow but i still get to that point.

So i still think that I already have a receiver system.

What you suggest?

Thank you.

Former Member
0 Kudos

Hi all,


any other suggestion to manage this point?

Thank you all.

Regards

Answers (0)