How to transmit data securely using MLLP adapter
I am looking for options how we can securely transmit hl7 data using MLLP adapter to third party. I read in books saying MLLP is used within LAN, Is that true or can this be used across internet.
Is it possible to add SSL certificate for data encryption before send data via MLLP adapter. Can you please advise. Thanks you very much.
Short answer: No, SSL cannot be used with MLLP.
Long answer: There is no specific provision for over-the-wire encryption in the MLLP specification. So, technically, the TCP channel can be encrypted with SSL, but there are no implementations, such as the BizTalk MLLP Adapter, that I'm aware of that
would actually do this.
To secure the communications between two MLLP endpoints, you would have to use either a tunneling protocol (VPN) or a secure IP connection (IPSEC). The difference between the two is minimal.
MLLP was developed to satisfy an internal, to the organization, requirement where secure communications was not an issue.
Similar Messages
-
How to read pdf file using file adapter
Hi..
How to read pdf file using file adapter?
regards
ArunHi
This may help you
/people/sap.user72/blog/2005/07/27/xi-generate-pdf-file-out-of-file-adapter
/people/alessandro.guarneri/blog/2007/02/21/sap-xi-acting-as-a-huge-file-mover
---Ram -
How to extract data by using function module in generic extraction please
how to extract data by using function module in generic extraction please give me steps required
Dear Deba,
Generic Extraction via Function Module
/people/siegfried.szameitat/blog/2005/09/29/generic-extraction-via-function-module
If the requirement is like extracting data from multiple tables with some complex logic then views cannot be used..so u cna go for FM is used where it can be achieved.
Chk these
/people/siegfried.szameitat/blog/2005/09/29/generic-extraction-via-function-module
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/a0f46157-e1c4-2910-27aa-e3f4a9c8df33
check the following thread
generic extraction with function module
Generic Extraction with function module
Regards,
Ram. -
How will my data Secure in the cloud
how will my data Secure in the cloud when i take the membership with them
Please read the Data security section of the Creative Cloud FAQ here http://www.adobe.com/products/creativecloud/faq.html#data-security.
-
How to transform data received from file adapter
hi',
I am reading the data from XML file using file adapter, now I want to write the same contents which I have read from this file to a different/new XML file, the issue is I am unable to perform a transform here, when I use a transform with source element as the output of the file read and target as the input to the new file it is writing an empty file,
I have checked the audit trail which showsme that the transform is empty.
please tell me how can I transform the element which I have received from one file to make them as input to next file
thanks
Yatanthanks James for input, this is my XML and XSD files
XML file:
<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.example.org"
targetNamespace="http://www.example.org"
elementFormDefault="qualified">
<emp>
<name>yatan</name>
<age>28</age>
</emp>
</xsd:schema>
XSD File:
<?xml version="1.0" encoding="windows-1252" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.example.org"
targetNamespace="http://www.example.org"
elementFormDefault="qualified">
<xsd:element name="readfile">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="empid" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
I am reading XML file, I will describe my process.
1.) File adapter>read operation ---> receive activity
2.) Transform > source(receive input variable) <--->target(Invoke input variable)
3.) File adapter > write operation ---> invoke activity
Now when I am deploying this process it is sucessfully completing and able to read the file.
when I check the audit trail receive activity shows XML data but when I check the transform it
shows empty as below, however the write activity is performed which creates a xml file but no values in the elements
transform in audit trail
<Invoke_1_Write_InputVariable>
-<part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="readfile">
-<readfile xmlns:ns0="http://www.example.org" xmlns="http://www.example.org">
<ns0:name/>
<ns0:empid/>
</readfile>
</part>
</Invoke_1_Write_InputVariable>
this is the code for my .bpel file
<?xml version = "1.0" encoding = "UTF-8" ?>
<!--
Oracle JDeveloper BPEL Designer
Created: Wed May 19 15:04:22 IST 2010
Author: yatanveer.s
Purpose: Empty BPEL Process
-->
<process name="ReadXMLFile2"
targetNamespace="http://xmlns.oracle.com/ReadXMLFile2"
xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
xmlns:ns4="http://xmlns.oracle.com/pcbpel/adapter/file/FileReadSync/"
xmlns:ids="http://xmlns.oracle.com/bpel/services/IdentityService/xpath"
xmlns:ldap="http://schemas.oracle.com/xpath/extension/ldap"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:client="http://xmlns.oracle.com/ReadXMLFile2"
xmlns:ora="http://schemas.oracle.com/xpath/extension"
xmlns:hwf="http://xmlns.oracle.com/bpel/workflow/xpath"
xmlns:ns1="http://xmlns.oracle.com/pcbpel/adapter/file/ReadFile/"
xmlns:ehdr="http://www.oracle.com/XSL/Transform/java/oracle.tip.esb.server.headers.ESBHeaderFunctions"
xmlns:ns3="http://www.example.org"
xmlns:ns2="http://xmlns.oracle.com/pcbpel/adapter/file/WriteFile/"
xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
xmlns:orcl="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc">
<!--
PARTNERLINKS
List of services participating in this BPEL process
-->
<partnerLinks>
<partnerLink myRole="Read_role" name="ReadFile"
partnerLinkType="ns1:Read_plt"/>
<partnerLink name="WriteFile" partnerRole="Write_role"
partnerLinkType="ns2:Write_plt"/>
</partnerLinks>
<variables>
<variable name="Receive_1_Read_InputVariable"
messageType="ns1:readfile_msg"/>
<variable name="Invoke_1_Write_InputVariable"
messageType="ns2:readfile_msg"/>
</variables>
<!--
VARIABLES
List of messages and XML documents used within this BPEL process
-->
<!--
ORCHESTRATION LOGIC
Set of activities coordinating the flow of messages across the
services integrated within this business process
-->
<sequence name="main">
<receive name="Receive_1" partnerLink="ReadFile" portType="ns1:Read_ptt"
operation="Read" variable="Receive_1_Read_InputVariable"
createInstance="yes"/>
<assign name="Transform_1">
<bpelx:annotation>
<bpelx:pattern>transformation</bpelx:pattern>
</bpelx:annotation>
<copy>
<from expression="ora:processXSLT('Transformation_3.xsl',bpws:getVariableData('Receive_1_Read_InputVariable','readfile'))"/>
<to variable="Invoke_1_Write_InputVariable" part="readfile"/>
</copy>
</assign>
<invoke name="Invoke_1" partnerLink="WriteFile" portType="ns2:Write_ptt"
operation="Write" inputVariable="Invoke_1_Write_InputVariable"/>
</sequence>
</process> -
Multiple BPEL/ Mediator payloads how to store in DB using DB adapter.
I have huge XML which is XSD define for the same and have complex types which required around > 50 DB tables to store the entire XML.
Have one parent table which has reference ID to child tables.
Now first I want store the parent table and get the ID and use the same ID to store child tables (it has parent child relationship up to 5 or 6 levels)
How can I define / use the BPEL process.
I want to use the file adapter to read the XML file.
And I need to define BPEL process with mediators if required?
And use the DB adapter to store the data.
My questions are how can I define BPEL process with huge XSD which had multiple elements?
How can I use db adapter to store more than 50 tables and getting parent ID for child tables?
Any help is appreciated.
Edited by: user8539507 on Feb 29, 2012 7:35 AMSridhar thanks for replay,
I did the same, Few mapping tables i have ,
say A-->B , A-->C-->D (Master Child relations) map is B-->E & D-->E (map table) for this type of tables i have following error.
Exception [EclipseLink-48] (Eclipse Persistence Services - 2.1.3.v20110304-r9073): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: Multiple writable mappings exist for the field [TABLE5_MAP.ID]. Only one may be defined as writable, all others must be specified read-only.
And also other question i have by doing this is - won't it be heavy pay load, due to complex transformation don't we get any issues in long run?
is there way to insert sequentially from the XSD element parts wise?
Say i have File XSD(#1P1) to DB xsd(#2T1). return the ID next sequence
File XSD(#1P2) to DB xsd(#2T2,T3,T4,T5).
File XSD(#1P3) to DB xsd(#2T6,T7,T8).
File XSD(#1P4) to DB xsd(#2T9,T10,T11,T12).
File XSD(#1P5) to DB xsd(#2T13,T16,T14,T15).
from Leftside(exposed service) Fileadapter have the XSD(#1) and rightside External Refences(DB adapter(s)) have the XSD(#2)
In this scenario would it be possible to use one DB adapter? do i have use multiple ? if i use multiple how the transaction will work?
Thanks -
How to get data by using only file name in XI
Dear All.
I have 2 senarios . How can I configure it in the Configuration?
1. get data from file name (xxx.txt) --> HTTP
2. convert data into text file --> File
Thak you in advance.
Audnt think so?, using a webpage to send the file to XI, you will sending data again to XI as a file, pls tell what is the puropose of using the webpage to copy file?
is this webpage only used to move the file from one loaction to other from which the XI can acess?
to which location this file is placed? if XI reads this file from somelocation then you do as relied in above use filesender adapter and do FCC then..... -
How to operate multiple querys using DB Adapter and 'Execute Custom SQL'
I have a requirment that I need to create database adapter in your BPEL process with 'Execute Custom SQL' to operate multiple query in DB in one atomic
here are the details:
inbound request:
<ns1:Query_bpelProcessRequest>
<ns1:input>
<ns1:ItemDetail>
<ns1:ItemID>1123DDDS</ns1:ItemID>
</ns1:ItemDetail>
<ns1:ItemDetail>
<ns1:ItemID>1126EWWA</ns1:ItemID>
</ns1:ItemDetail>
<ns1:ItemDetail>
<ns1:ItemID>11208FSAA</ns1:ItemID>
</ns1:ItemDetail>
</ns1:input>
</ns1:Query_bpelProcessRequest>
I use for-each fuction in XSLT to mapping the all ItemID value:
<xsl:template match="/">
<xsl:for-each select="/tns:Query_bpelProcessRequest/tns:input/tns:ItemDetail">
<ns1:QueryFromDB_Input>
<ns1:ItemID>
<xsl:value-of select="tns:ItemID"/>
</ns1:ItemID>
</ns1:QueryFromDB_Input>
</xsl:for-each>
</xsl:template>
and in DB Adapter I use the 'Execute Custom SQL' to query the CONTENT value according the ItemID value:
select distinct CONTENT from agile.item where ITEM_NUMBER=’<ItemID>’
However, in the result, It only query the first item value for <ns1:ItemID>1123DDDS</ns1:ItemID>
<<QueryFromDB_InputVariable><part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="QueryFromDB_Input_msg">
<QueryFromDB_Input xmlns:ns1="http://xmlns.oracle.com/pcbpel/adapter/db/QueryFromDB" xmlns="http://xmlns.oracle.com/pcbpel/adapter/db/QueryFromDB">
<ns1:ItemID>1123DDDS</ns1:ItemID>
</QueryFromDB_Input>
</part></QueryFromDB_InputVariable>
<QueryFromDB_OutputVariable><part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="QueryFromDB_OutputCollection">
<QueryFromDB_OutputCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.oracle.com/pcbpel/adapter/db/QueryFromDB">
<QueryFromDB_Output>
<ITEM_NUMBER>1123DDDS</ITEM_NUMBER>
<CONTENT >SJIFESSFFJ</CONTENT >
</QueryFromDB_Output>
</QueryFromDB_OutputCollection>
</part></QueryFromDB_OutputVariable>
the other two querys are not operated.
what can I do to operate multiple querys??
ThanksHi Rod,
I are using while loop and assign array inputvalue to the inputvarable of DBadapter now, but actually it doesn't work.
Throw expection
<selectionFailure xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"><part name="summary"><summary>XPath query string returns multiple nodes.
According to BPEL4WS spec 1.1 section 14.3, The assign activity part and query /client:ItemsQuery_bpelProcessRequest/client:input/client:inputDetail/client:ProductID["ItemIndex"] should not return multipe nodes.
Please check the BPEL source at line number "89" and verify the part and xpath query /client:ItemsQuery_bpelProcessRequest/client:input/client:inputDetail/client:ProductID["ItemIndex"].
Possible reasons behind this problems are: some xml elements has maxOccurs > 1 or the xml data is invalid according to XML Schema.
To verify whether XML data received by a process is valid, user can turn on validateXML switch at the domain administration page.
</summary>
</part></selectionFailure>
my inbound XSD:
<element name="ItemsQuery_bpelProcessRequest">
<complexType>
<sequence>
<element name="input" type="tns:inputType"/>
</sequence>
</complexType>
</element>
<complexType name="inputType">
<sequence>
<element name="inputDetail" minOccurs="0" maxOccurs="unbounded">
<complexType>
<sequence>
<element name="ProductID" type="string" minOccurs="0"/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
<element name="ItemsQuery_bpelProcessResponse">
<complexType>
<sequence>
<element name="result" type="tns:outputType"/>
</sequence>
</complexType>
</element>
<complexType name="outputType">
<sequence>
<element name="ItemOutput" minOccurs="0" maxOccurs="unbounded">
<complexType>
<sequence>
<element name="item_id" type="string" minOccurs="0"/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
DB Adapter XSD:
<xs:schema targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/db/QueryItem" xmlns="http://xmlns.oracle.com/pcbpel/adapter/db/QueryItem" elementFormDefault="qualified" attributeFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="QueryItem_Input" type="QueryItem_Input"/>
<xs:complexType name="QueryFrom_Input">
<xs:sequence>
<xs:element name="ProductID" type="xs:string" nillable="true"/>
</xs:sequence>
</xs:complexType>
<xs:element name="QueryItem_OutputCollection" type="QueryItem_OutputCollection"/>
<xs:complexType name="QueryItem_OutputCollection">
<xs:sequence>
<xs:element name="QueryItem_Output" type="QueryItem_Output" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="QueryItem_Output">
<xs:sequence>
<xs:element name="item_id" type="xs:string" nillable="true"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
the bpel assign:
<assign name="Initial_Index">
<copy>
<from expression="0"/>
<to variable="ItemIndex"/>
</copy>
</assign>
<while name="While_1"
condition="bpws:getVariableData('ItemIndex')<ora:countNodes('inputVariable','payload','/client:ItemsQuery_bpelProcessRequest/client:input/client:inputDetail/client:ProductID)">
<sequence name="Sequence_1">
<assign name="Assign_QueryInput">
<copy>
<from variable="inputVariable" part="payload"
query='/client:ItemsQuery_bpelProcessRequest/client:input/client:inputDetail/client:ProductID{bpws:getVariableData('ItemIndex')}'/>
<to variable="QueryItem_InputVariable"
part="QueryItem_nput_msg"
query="/ns2:QueryItem_Input/ns2:ProductID"/>
</copy>
</assign>
<invoke name="Invoke_QueryDB" partnerLink="QueryItem"
portType="ns1:QueryItem_ptt"
operation="QueryItem_PSFT"
inputVariable="QueryItem_InputVariable"
outputVariable="QueryItem_OutputVariable"/>
<assign name="Assign_Output">
<copy>
<from variable="QueryItem_OutputVariable"
part="QueryItem_OutputCollection"
query="/ns2:QueryItem_OutputCollection/ns2:QueryItem_Output/ns2:item_id"/>
<to variable="outputVariable" part="payload"
query='/client:ItemsQuery_bpelProcessResponse/client:result/client:ItemOutput/client:item_id{bpws:getVariableData('ItemIndex')}'/>
</copy>
<copy>
<from expression="bpws:getVariableData('ItemIndex')+1"/>
<to variable="ItemIndex"/>
</copy>
</assign>
</sequence>
</while>
I use {} instead of [] for array, because [] seams not reveal in this message board
seems I can't assign array values to the DB inputvalue, Are there any solutions for this ?
I still haven't found any way for operating multiple querys using DB Adapter.
Thanks
Edited by: user1065212 on 07-Jan-2010 19:39
Edited by: user1065212 on 07-Jan-2010 19:41
Edited by: user1065212 on 07-Jan-2010 19:44
Edited by: user1065212 on 07-Jan-2010 19:45 -
How to convert date without using conversion exit?
hi!! Guys,
please can anybody help me how to compare date which is not in actual format
i.e. (when comparing BKPF-budat with TCURR-gdatu in where condition of a Select query its giving syntax error "when you use the addition 'fOR ALL ENTRIES IN itab' the fields gdatu and it_bkpf-budat" must have the same type and the same length. its very urgent...
thanks in advance.
akanksha.try like this.
data : year(4),
mon(2),
day(2).
in itab declare field cbudat(8) type c.
loop at itab.
year = itab-budat(4).
mon = itab-budat+4(2).
day = itab-budat+6(2).
concatenate year mon day into itab-cbudat.
modify itab.
endloop.
now use select for all entries and check gdatu = itab-cbudat.
regards
shiba dutta -
How to consolidate data files using data pump when migrating 10g to 11g?
We have one 10.2.0.4 database to be migrated to a new box running 11.2.0.1. The 10g database has too many data files scattered within too many file systems. I'd like to consolidate the data files into one or two large chunk in one file systems. Both OSs are RHEL 5. How should I do that using Data Pump Export/Import? I knew there is "Remap" option could be used, but it's only one to one mapping. How can I map multiple old data files into one new data file?
hi
datapump is terribly slow, make sure you have as much memory as possible allocated for Oracle but the bottleneck can be I/O throughput.
Use PARALLEL option, set also these ones:
* DISK_ASYNCH_IO=TRUE
* DB_BLOCK_CHECKING=FALSE
* DB_BLOCK_CHECKSUM=FALSE
set high enough to allow for maximum parallelism:
* PROCESSES
* SESSIONS
* PARALLEL_MAX_SERVERS
more:
http://download.oracle.com/docs/cd/B28359_01/server.111/b28319/dp_perf.htm
that's it, patience welcome ;-)
P.S.
For maximum throughput, do not set PARALLEL to much more than twice the number of CPUs (two workers for each CPU).
Edited by: g777 on 2011-02-02 09:53
P.S.2
breaking news ;-)
I am playing now with storage performance and I turned the option of disk cache (also called write-back cache) to ON (goes at least along with RAID0 and 5 and setting it you don't lose any data on that volume) - and it gave me 1,5 to 2 times speed-up!
Some says there's a risk of lose of more data when outage happens, but there's always such a risk even though you can lose less. Anyway if you can afford it (and with import it's OK, as it ss not a production at that moment) - I recommend to try. Takes 15 minutes, but you can gain 2,5 hours out of 10 of normal importing.
Edited by: g777 on 2011-02-02 14:52 -
How to create a scenario using RFCsender adapter
Hi,
I'd like to create an RFC to RFC scenario. Just for a test. I can use receiver RFC adapter, but I don't know, how the sender one works. I even can't understand how to call it. Using the receiver side - I import RFC's metadata and call the FM. No problem with this. But what about the sender side? Should I create an empty FM, and int's importing parameters will be my Outbound interface, and exporting parameters my inbound interface (in case of a sync scenario)? If yes, when I call this FM, how does it know, that it should not run the (empty body?) of the function, but send the request to XI using RFC connection?
Thank you for clarification,
OlianHi,
How to Trigger BAPI From R3 ToXI
/people/swaroopa.vishwanath/blog/2006/12/28/send-rfc-to-sap-xi-150-asynchronous
RFC Sender
/people/michal.krawczyk2/blog/2005/03/29/configuring-the-sender-rfc-adapter--step-by-step
/people/shabarish.vijayakumar/blog/2008/01/08/troubleshooting--rfc-and-soap-scenarios-updated-on-20042009
How to test the RFC to Flat File scenario
Regards
Seshagiri -
How to send Excel File using file adapter
Hello,
Please could you tell how i can send an excel file using the file adpater?
thank you.Hi hassiba ,
If u want to doc on creating modules just check the wonderful document.
How To Create Modules for the J2EE Adapter Engine at service.sap.com. It will clear all the basics of creating Adapter module.
https://websmp102.sap-ag.de/~form/sapnet?_SHORTKEY=01100035870000582377&
Thanks ,
sekhar. -
How to get file name using File adapter Sync read
Hi All,
I am using SOA 10.1.3.3 and JDEV 10.1.3.3.
I have an async bpel process.
I have to read file name in this process... so i have used file adapter sync read operation.
How can we get the file name with out payload using sync read.
For normal read (Inbound Spec)we have UseHeaders="true" property.
Is there any property for sync read to read the file name.
Please help me
Regards
PavanKumar.M
Edited by: [email protected] on Oct 27, 2009 11:23 PMHi Eric,
The info in the link provided by you is for a normal read.
I need to read he file name using Sync read operation.
Regards
PavanKumar.M -
How to put edfact file using b2b adapter
All,
I have to print a edifact file and place it in a certain location using b2b and soa. could you please let me know how this could be done. in the b2b console i could see only listening channels. could this be done directly through b2b adapter or should i use soa adapter.. if either how..
pls guide..
regards
Rakeshhi Anuj,
i went through the docs
1. the doc with the sample is hard to understand. i opened the composite, but i guess the b2b config changes also needs to be done. they are not clearly mentioned in the doc.
2. cant find details to create outbound adapter in edifact faormat...
you aware of any other links or samples. Also I am new to B2B...
regards
Rakesh -
SAP Fiori how to disable-web-security using code
Hi Guys
I have made SAP Fiori Application.
Its working on google chrome browser after disable-web-security.
i need to disable web security on each & every browser, Ipad, Phone befor start the fiori Apps.
Project on My Laptop Kepler Eclipse. I did not upload project on server.
Please guide me How I can disable web security using code on Fiori UI ...
Tags edited by: Michael ApplebyHi pankaj,
Hi,
write this code in your app
/supress the Same Origin Policy on IE8 & Chrome
var domainString = "document.domain";
domainstring = "*.com"
'Access-Control-Allow-Origin: *.sap.com'
'Access-Control-Allow-Headers: X-KEY'
Regards
Umar
Maybe you are looking for
-
How to find No. of Saturdays,Sundays in Specified Dates?
Hello Gurus, I have scenario where in user will provide me Two dates for instance say 1-Jan-2003 to 1-Jan-2004, Now I want to find out what are the dates in this specified range which has Sundays & Saturdays ? Is it possible to do it in Simple SQL qu
-
I get this message quite often. I know the urls are valid because I visit the websites everyday. People have told me that maybe Firefox just doesn't support those websites very well and to try a different browser. It's driving me crazy. Any ideas?
-
Please wait while Windows configures NI DSC Common Tools
So I let NI Update install a bunch of things over the weekend (only about 18GB of download ) among which the LabVIEW DSC 2013 SP1 update. Now every time I startup any of my installed 32 Bit versions of LabVIEW, including the version 2013SP1, I get t
-
Quicktime Export taking a long time
I rendered a project. Took 4 hours. Quicktime Export took the same after the render. Did NOT export self-contained. Usually a Quicktime Export is a matter of minutes, not hours.
-
Using iPod Hi-Fi with Digital Audio (Coaxial) Cable
I have a Bandridge Digital Optical & Coaxial Audio Switch Box which allows me to connect multiple devices to output sound through my ipod hifi via digital optical or digital coaxial cable(it actually converts from optical to coaxial as well). The pro