Accessing SOAP attachment in mapping

Hi,
we need to be able to receive a dynamic payload to a webservice published by XI, the payload will be in XML format, but unfortunately not static. So I think the only solution is to send the dynamic payload as a attachment in the webservice call. Now we need to access this attachment from our mapping. Can this be done, and how?
Is there an other way to receive a dynamic payload in a SOAP adapter?
Kind regards
Mikkel

Hi MIkkel,
I have done this before but with a dynamic SOAP body, so the payload of the SOAP envelope always changes.
You have to import an external definition of the SOAP envelope. After that in your mappings you'll have to use JAVA or XSLT specific mapping to extract/filter out  that dynamic part of the message. Then, in a second mapping (for instance message mapping..) you can have access to the dynamic payload and do whatever you need to do with that part of the message. As Easy as that ...
Regards,
Roberto

Similar Messages

  • How to process a SOAP Attachment in XI

    Hi,
    I have a SOAP-RFC-SOAP Synchronous scenario. Here the SOAP Message comes with an attachment. I need to process the SOAP Attachment through XI and need to map the content to the RFC and send the response back to the webservice. Here PayloadSwapBean does not work in Sender soap Adapter. Is there any other option of achieving this.
    Thanks,
    Bhargav

    Ask Michal
    The specified item was not found.
    Need need to implement the other direction.
    Regards
    Stefan

  • How to download a SOAP attachment using pl/sql

    Gurus,
    I have a custom pl sql application that is web services based. The custom pl sql application invokes the external web services and updates Oracle Field Service application.
    One of the new requirements is to get the signatures from SOAP Attachments (a binary file) and attach it to Field Services transactions in Oracle.
    Does anyone has an example of how to download the SOAP attachment file from web service using pl/sql.
    The pl sql program uses UTL_HTTP to access web services.
    Much Thanx.

    I think you may be in the wrong forum, but anyways...
    What I think your looking for is the htp.print('insert html here'); function. It's plsql, and writes out html to the web server that calls it.
    if you search for htp.print you should find loads of examples.
    hope this helps.
    Merv.

  • SOAP attachment - module development?

    Hi,
    I have an IDOC -> SOAP scenario where I have to call a webservice that uses SOAP attachment.
    Example:
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ueb="IBrokerInterface">
       <soapenv:Header/>
       <soapenv:Body>
          <ueb:TEBIBrokerInterface_PublishWS>
             <aClientId>TEST</aClientId>
             <aMessage>cid:file.xml</aMessage>
             <aDuplicates>0</aDuplicates>
          </ueb:TEBIBrokerInterface_PublishWS>
       </soapenv:Body>
    </soapenv:Envelope>
    The "file.xml" has to be a SOAP attachment.
    If I use a SOAP receiver channel how do I get the IDOC payload moved into a SOAP attachment and still keep the SOAP envelope?
    Can this only be done with module development?
    Thanks Rasmus

    Hi Rasmus,
    You cannot create an attachment in mapping.
    In PI 7.1 there will be a Java Mapping API for working with attachments, but the code will be similar to an adapter module. It will not be possible with XSLT.
    Regards
    Stefan

  • Soap Attachment write problem

    Hello All,
    I'm seeing the error message given below. I'd been trying to write a soap attachment to a file output stream. I did the same thing in WSAD and it worked. But when I tried to work on unix box.. it wasnt supporting activation.jar and mail.jar resulting the error below. I'm urgently in need of help. Please help me. [java] at javax.activation.ObjectDataContentHandler.writeTo(Unknown Source)
    [java] at javax.activation.DataHandler.writeTo(Unknown Source)
    [java] at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1147) [java] at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:668)
    [java] at javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:233) [java] at weblogic.webservice.core.soap.SOAPMessageImpl.writeMimeMessage(SOAPMessageImpl.java:589) [java] at weblogic.webservice.core.soap.SOAPMessageImpl.writeTo(SOAPMessageImpl.java:513) [java] at
    I think there is a problem with the activation.jar and mail.jar.
    Please let me know about this problem if you have any idea since it is very urgent.
    I'm using Weblogic server which is on the solaris box and it is not supporting the activation.jar and mail.jar. The same worked on WSAD.
    Please advise.
    Thanks in advance,
    Vamshi

    Hi Hasan,
      Please, try to implement next xslt mapping before message mapping.
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:stylesheet version="1.0" xmlns:ns0="http://www.w3.org/1999/XSL/Transform" xmlns:xop="http://www.w3.org/2004/08/xop/include" xmlns:ns2="https://onlineservice.creditreform.de/webservice/0400-0005">
       <ns0:template match="node() | @*">
          <ns0:copy>
             <ns0:apply-templates select="node() | @*"/>
          </ns0:copy>
       </ns0:template>
       <ns0:template match="xop:Include"/>
    </ns0:stylesheet>
    Regards, Dzmitry

  • Soap Sender Adapter Preserve And Access Soap Header

    Hi,
    I would like to preserve the Soap Header created by a client and access it in a mapping using the the Soap Sender Adapter (SP16). Does anybody know how to do this?
    Kind regards,
    Heiko

    Hello Udo,
    I have found a solution to this problem. It is possible to add header entries to the DynamicConfiguration which is available by an API:
    soapMsg.append("<SOAP-ENV:Header>");
    soapMsg.append("<SAP:DynamicConfiguration xmlns:SAP=\"http://sap.com/xi/XI/Message/30\" xmlns:SOAP=\"http://schemas.xmlsoap.org/soap/envelope/\" SOAP:mustUnderstand=\"1\">");
    soapMsg.append("<SAP:Record namespace=\"http://sap.com/xi/XI/System/SOAP\" name=\"SRmsUser\">test</SAP:Record>");      
    This code snip shows Java client code to add an element to the SOAP header which corresponds to the DynamicConfiguration. In XI it will be accessable using the respective API.
    Cheers,
    Heiko

  • Modify the SOAP attachment name

    hi,
    I have a Service with Party, which sends messages in SOAP format to XI.
    When the SOAP message sent to XI contains a '&' character in its attachment name, the message gets failed to processed through XI.
    I believe this happens since '&' character is a wildcard character in XML hence XI expects a escape character sequence following it and cannot parse through the '&' character. Also as per the IR tests executed for the SOAP message, when the '&' is replaced with its escape sequence the message is processed through successfully.
    Is it possible to replace the '&' character with its escape sequence in the SOAP attachment name before it is processed by the XI Integration Engine. That is at the adapter level?
    regards,
    Diptee
    Edited by: diptee s on Oct 26, 2010 4:47 PM

    hi,
    i have created the Java Mapping .
    in the pdf document How Tou2026Work with Character Encodings in Process Integration from SAP, for the Escape sequences it is said that for adding Escape sequences to the unescaped characters, add the Java mapping before the required mapping.
    however, i am not able to test the interface in the IR even after adding the new Java mapping.
    please suggest.
    regards,
    Diptee

  • SOAP Attachements in Webservices

    Hi,
    Is there any way to send SOAP attachements while accessing the weblogic Webservices,
    i.e As a part of my client program, I want to attach a document/image to a SOAP
    message.
    Thanks in advance
    pidix

    user10455639 wrote:
    Yes I can..what I still dont understand from yourr email is why are you askign this..
    "if you can get the soap header"
    Because any header we should be able to retrieve from this context...Because I saw the following statement from [JavaDoc | http://e-docs.bea.com/wls/docs103/javadocs/weblogic/wsee/jws/JwsContext.html#getInputHeaders()].
    <<<<<<<<<<
    ....The SOAP headers used by WebLogic Workshop to manage conversations are included in the list of headers returned.
    <<<<<<<<<<
    If it works, then just use it :) because it is public supported
    Edited by: LJ on Apr 23, 2009 10:04 PM
    Edited by: LJ on Apr 23, 2009 10:21 PM

  • Accessing soap attachments

    i have writen a code to send soap attachments from client to server
    In the code below i 'm sending txt file and xml file from client to server
    when i see the value of msg.countAttachments();it 's value is 2 that mean two attachments are reciving with ut no problem
    now i want to save both attachments in servermachine c:/ directory how do i di that
    i tried to access the attachment like this
    java.util.Iterator it = msg.getAttachments();
    while (it.hasNext()) {
    AttachmentPart attachment = (AttachmentPart)it.next();
    Object content = attachment.getContent();
    for more clear below -client code attaching part
    FileDataSource fds = new FileDataSource(m_attachment);
    DataHandler dh = new DataHandler(fds);
    AttachmentPart ap1 = msg.createAttachmentPart(dh);
    msg.addAttachmentPart(ap1);
    AttachmentPart ap2 = msg.createAttachmentPart("Another Part","text/plain; charset=ISO-8859-1");
    msg.addAttachmentPart(ap2);
    msg.saveChanges();
    //create the endpoint and send the message
    URL endpoint = new URL("http://localhost:8080/jaxm-coffee-supplier/getPriceList");
    SOAPMessage response = con.call(msg, endpoint);
    Thanks

    Hello!
    I'm sure you already solved the problem you had and I hope you can help me out with my little problem. I want to create a file upload with a web service. I copied the code from sun's tutorial (and now from your post), but I constantly get the NullPointerException on the call:
    AttachmentPart attachment = msg.createAttachmentPart()
    (or AttachmentPart attachment = msg.createAttachmentPart(dataHandler);)
    Can you please tell me what's wrong with my code?
    Thnx in advanced, D
    (BTW here is my code:)
    import javax.xml.soap.MessageFactory;
    import javax.xml.soap.SOAPConnection;
    import javax.xml.soap.SOAPConnectionFactory;
    import javax.xml.soap.SOAPMessage;
    public class client01 {
         public static void main(String args[]) throws Exception, MalformedURLException {
              MessageFactory factory = MessageFactory.newInstance();
              Message msg = factory.createMessage();
              ConnectionFactory soapConnectionFactory =  ConnectionFactory.newInstance();
                    Connection con =  soapConnectionFactory.createConnection();
                   FileDataSource fds = new             
                   FileDataSource("C:"+File.separator+"image"+File.separator+"test01.jpg");
                DataHandler dh = new DataHandler(fds);
              AttachmentPart attachment = msg.createAttachmentPart(dh);
    (Here I get the Fatal server Error => NullPointerException)
       attachment.setContentId("attached_image");
                msg.addAttachmentPart(attachment);
                   msg.saveChanges();
                    URL endpoint = new      
              URL("http://localhost:9090/RKO/services/zmogljivost?method=stevilo&str=test");
                  SOAPMessage response = con.call(msg, endpoint);
               con.close();

  • SOA Suite 11g - Email with attachments (Attachment from SOAP attachment)

    Hello,
    Can any one please help as to how I can do the following in Oracle SOA 11g:
    Using a BPEL process how can I send an Email with attachments where the attachment itself is coming from a SOAP attachment.
    The back ground is that we have portal sites from where the users can upload a document and then from their a SOA service is invoked and the attachment would be passed as (SOAP attachments) and then emails have to be send to users containing this uploaded document as the attachment.
    Thanks.
    feel free to email me [email protected]

    Yes, I need all supported standards and their version of SOA Suite 11g because my customer wants to upgrade from 10g to 11g, especially all supported standards and version number of OBPM 11g and OBPM 10g.
    A people has pasted all support standards and version number of OBPM 10g. I get a standard list of OSB.
    OBPM 11g supports:
    BPEL
    xml 1.0
    Servlet 2.3\JSP1.2 (J2EE 1.2),
    Servlet 2.4\JSP2.0(J2EE 1.4),
    Servlet 2.5\JSP2.1(Java EE 1.5)
    UDDI
    SOAP
    WSDL
    WS-BPEL for People
    XML Schema
    XPDL
    SOAP
    XQuery
    XLIFF
    XSL map
    XSLT
    UML
    Ant
    EJB 2.1, JPA/EJB 3.0
    JAAS
    Spring
    JAXB 1.0, JAXB 2.0
    XHTML
    HTML
    JSP
    JSF
    JSR-168
    XSQL
    WS-Policy
    But I cannot find the document about version number of the above standards

  • "Content is not allowed in prolog" with SOAP Attachment

    I'm writing an application using SAAJ that sends a soap message to a servlet which responds with some information, including HTML which the client application will display. The HTML has to go into a SOAP attachment so the tags won't get confused with XML.
    I had the whole thing working with plain text sending within a normal node, and I only switched a few lines to make that text an attachment with HTML instead, but now I'm getting the exception "Content is not allowed in prolog" on the Client side when it tries to create the envelope from the SOAPMessage.
    Code for building answering SOAPMessage with attachment (Servlet to Client)
         public static SOAPMessage buildXML(Message newMessage){
              SOAPMessage msg = null;
              try {
                   MessageFactory msgFactory = MessageFactory.newInstance();
                   msg = msgFactory.createMessage();
                   // Create an envelope in the message
                   SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope();
                   msg.setProperty(SOAPMessage.WRITE_XML_DECLARATION, "true");
                   msg.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, "UTF-8");
                   //Get hold of the the body
                   SOAPBody body = envelope.getBody();
                   SOAPElement soap_message = body.addChildElement("MESSAGE");
                   if (newMessage.message_type != null){
                        SOAPElement soap_message_type = soap_message.addChildElement("MESSAGETYPE");
                        soap_message_type.addTextNode(newMessage.message_type);
                   if (newMessage.questionID != 0){
                        SOAPElement soap_questionID = soap_message.addChildElement("QUESTIONID");
                        soap_questionID.addTextNode("" + newMessage.questionID);
                   if (newMessage.username != null){
                        SOAPElement soap_username = soap_message.addChildElement("USERNAME");
                        soap_username.addTextNode(newMessage.username);
                   if (newMessage.password != null){
                        SOAPElement soap_password = soap_message.addChildElement("PASSWORD");
                        soap_password.addTextNode(newMessage.password);
                   if (newMessage.message_text != null){
                        AttachmentPart soap_message_text = msg.createAttachmentPart("<html><body>" + newMessage.message_text + "</body></html>", "text/html");
                        soap_message_text.setContentId("MESSAGETEXT");
                        msg.addAttachmentPart(soap_message_text);
                        //SOAPElement soap_message_text = soap_message.addChildElement("MESSAGETEXT");
                        //soap_message_text.addTextNode(newMessage.message_text);
                   if (newMessage.sampleString != null){
                        SOAPElement soap_password = soap_message.addChildElement("SAMPLESTRING");
                        soap_password.addTextNode(newMessage.sampleString);
                   SOAPElement tmpEl;
                   for (int i=0; i<newMessage.numArrayUsed; i++){
                        tmpEl = soap_message.addChildElement("SAMPLEINT");
                        tmpEl.addTextNode("" + newMessage.sampleInt);
                   msg.saveChanges();
              } catch (Exception e) {
                   e.printStackTrace();
              return msg;
    You can see in the area where it adds MESSAGETEXT there are two clients commented out which work. The three lines above it are what changed to make it an attachment instead.
    Code in Client for recieving reply from Servlet
    SOAPMessage reply = connection.call(soap_msg, endpoint);
    System.out.println("\nReceived reply from: " + endpoint);
    reply.writeTo(System.out);
    System.out.println("");
    reply_msg = ProcessXML.parse(reply);This is the console output:
    Edit: These forums seem to be inserting an extra > before the <?xml version="1.0" encoding="UTF-8"?> line, but it doesn't exist in the code I'm pasting
    Received reply from: http://localhost:8080/kuj/CaseStudyServlet
    ------=_Part_2_371807.1137465625031
    Content-Type: text/xml; charset=UTF-8
    <?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><MESSAGE><MESSAGETYPE>deliverquestion</MESSAGETYPE><QUESTIONID>1</QUESTIONID><USERNAME>zac</USERNAME></MESSAGE></SOAP-ENV:Body></SOAP-ENV:Envelope>
    ------=_Part_2_371807.1137465625031
    Content-Type: text/html
    Content-Id: MESSAGETEXT
    <html><body>This is an Array sort Question. You will be given 10 random integers and you must sort and return them in the order of greatest to least.</body></html>
    ------=_Part_2_371807.1137465625031--
    ERROR:  'Content is not allowed in prolog.'
    17-Jan-2006 02:40:25 com.sun.xml.messaging.saaj.soap.EnvelopeFactory createEnvelope
    SEVERE: SAAJ0511: Unable to create envelope from given source
    com.sun.xml.messaging.saaj.SOAPExceptionImpl: Unable to create envelope from given source:
         at com.sun.xml.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:111)
         at com.sun.xml.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:39)
         at com.sun.xml.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:98)
         at com.zacwittedesign.xml.ProcessXML.realParse(ProcessXML.java:32)
         at com.zacwittedesign.xml.ProcessXML.parse(ProcessXML.java:26)
    (snip)And this is the beginning of the code for extracting the info from the SOAPMessage on the Client side:
    private static Message realParse(SOAPMessage msg){
              Message newMessage = new Message();
              try {
                   SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope();
                   SOAPBody body = envelope.getBody();
    (snip)It dies on SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope();
    Does anyone know what I'm doing wrong?

    I suppose I should also include the bit where the Servlet actually SENDs the resulting SOAPMessage
    SOAPMessage msg = ProcessXML.buildXML(outMessage);
    // try to send it
    try {
         response.setContentType("text/xml");
         msg.writeTo(response.getOutputStream());

  • Unique Problem: Returning SOAP+ Attachment using a class based webservice

    Hi everyone,
    Im trying to return a Soap+ attachment response back using the following:
    attachDoc(byte[] bdoc, String sTransactionNumber,
                   String sRequestedType)
    Where byte[] is the attachment and the 2 string parameters are soap message contents.
    The attachment is attached successfully to the message and i can send a response back to the clients console using :
    message.writeTo(System.out);
    My problem is that i dont know how to return this soapmessage+attachment back to the client.
    Ive tried using the return type of the method as :
    public SOAPMessage attachDoc(byte[] bdoc, String sTransactionNumber,
                   String sRequestedType)
    but i cant return a SOAPMessage return type in axis.
    Does anyone have any clues how i should sort this out so that the client gets the SOAPMessage and attachment when the method is called ?
    Please help :S
    Thanks,

    I dunno if this is what you asked for....
    Hope this helps a bit
    You may want to check this link out
    http://www-unix.globus.org/mail_archive/discuss/2007/02/msg00037.html
    MessageContext msgContext = MessageContext.getCurrentContext();
    File file = new File("filename.txt");
    org.apache.axis.attachments.AttachmentPart replyPart=
    new org.apache.axis.attachments.AttachmentPart(new DataHandler(new
    FileDataSource(file)));
    Message rspMsg= msgContext.getResponseMessage();
    rspMsg.addAttachmentPart(replyPart);
    so ur basically adding the file to the reply message.
    The link i gave has a better description, it has the entire process of sending file to server and downloading file from server codes.

  • Exception when trying to create a soap attachment javax.activation. Unsuppo

    I am trying to pass an object String [] as a soap attachment.
    Reading the docs, if I pass a parameter as type datahandler, it is automatically treated as an Attachment.
    I used the constructor DataHandler (Object obj, String mimeType)
    where the object was my StringArray, and MIME is the XML representation of
    a java type, which according to weblogic docs is NMTOKENS,IDREF or ENTITIES.
    It threw the same error for the other two.
    Am I using DataHandler correctly, is MIME the SOAP representation of the Java Object in memory.
    Thanks for any help
    Tony

    I am trying to pass an object String [] as a soap attachment.
    Reading the docs, if I pass a parameter as type datahandler, it is automatically treated as an Attachment.
    I used the constructor DataHandler (Object obj, String mimeType)
    where the object was my StringArray, and MIME is the XML representation of
    a java type, which according to weblogic docs is NMTOKENS,IDREF or ENTITIES.
    It threw the same error for the other two.
    Am I using DataHandler correctly, is MIME the SOAP representation of the Java Object in memory.
    Thanks for any help
    Tony

  • SOAP Attachment & performances for WLI

    Dear all,
    I am implementing webservices, accepting a SOAP attachment as parameter. The implementation is based on Workshop / WLI jws file. The web service is RPC style since WorkShop is unable to generate a correct WSDL file with SOAP atttachment & document style (known limitation from BEA).
    My problem is concerning attachments. Indeed, in my mind, attaachement are there in order to prevent extra load into the XML parser and to speedup processing and avoid heavy use of memory.
    So I made some tests with a simple soap request and attachments. Here are the results (I calculate the time to send and receive response from web service), the web service itself just prints the content type, anything else.
    Attachement size | Time
    39 kb 344ms
    78 kb 406ms
    155 kb 484ms
    300 kb 750ms
    463 kb 1000ms
    1389 kb 4600ms
    2700 kb 23609ms
    5500 kb 140000ms
    Of course, the client and server are running on the same machine and are using the loopback interface. So there is no network bootleneck to take into account.
    As conclusion, we can see that for small messages, (<300kb) the curve is good... But performances start to fall drastically with messages larger than 300kb. This is not a problem of memory but CPU usage (fully used diring the 1400 seconds).
    Any idea, any opened cases ?
    Thansk for all,
    Pascal Bourgeois

    This post :
    http://soastuff.wordpress.com/2007/06/06/handling-opaque-datatypes-in-bpelesb/
    Describes how to use the opaque-schema for sending files over the ESB.
    Hope you can use this.
    or do you want to use the soap-headers for this?

  • Soap Attachment Stream Error

    11:56:37 F01F Soap Attachment Stream Error: [8911], File Size = 1120068 Written Size=131072
    11:56:37 F01F Soap Attachment Stream Error: [8911], File Size = 1120068 Written Size=131072
    11:56:37 F01F Error streaming an attachment [8911]
    11:56:37 F277 Soap Attachment Stream Error: [8911], File Size = 673015 Written Size=131072
    11:56:37 F277 Soap Attachment Stream Error: [8911], File Size = 673015 Written Size=131072
    11:56:37 F277 Error streaming an attachment [8911]
    What are these?

    Originally Posted by swishewk
    11:56:37 F01F Soap Attachment Stream Error: [8911], File Size = 1120068 Written Size=131072
    11:56:37 F01F Soap Attachment Stream Error: [8911], File Size = 1120068 Written Size=131072
    11:56:37 F01F Error streaming an attachment [8911]
    11:56:37 F277 Soap Attachment Stream Error: [8911], File Size = 673015 Written Size=131072
    11:56:37 F277 Soap Attachment Stream Error: [8911], File Size = 673015 Written Size=131072
    11:56:37 F277 Error streaming an attachment [8911]
    What are these?
    I believe the lines with the file size/written size are files in excess of the limit set in Data Synchronizer.

Maybe you are looking for

  • Can anyone tell me how I can get my IPad 3G verizon (cracked glass from display) repaired from Belgium. They denied service twice ?

    I have purchased on the 29th of April 2011 in Florida US an Ipad WI-FI 3G 64GB  Verizon. Now I have a serious issue in getting this repaired. When I purchased the device I was told by the salesman of the store that I had global coverage in repairs an

  • BW Info Cube

    Hi Guru’s I want to know how BW info cube are coming to CRM system and how we are sending data from BW Server to CRM server can any one give me brief Information about this BW Info cube Many Tanks’ Mahesh Kumar [email protected]

  • KeepXAConnTillTxComplete

    Not sure if I should post this error here or in the WorkShop forum. Anyway, I am using WLS 7 sp2 with an Informix DBMS. I need to use Distributed Transactions so I am re-configuring a few of my DataSources and Connection Pools to use the Informix XA

  • Loading of Data from Lotus notes to CRM

    Hai guys, I need to upload the Prospects data and also the activites which we created with the prospects from the Lotus notes to the CRM We have two lotus notes suppose X,Y from which we need to load the data. There might be some records which might

  • Non-locking RSS article length slider

    I am having a small problem with the article length slider on an RSS page. On one site I slide the slider to the extreme left to insure that all articles are on one line. I reload the page or come back to it later and the slider has moved to the righ