Initial Data Load Extension Module Webinar February 4th, 2009
Page 2 Initial Data Load Module Webinar-Openbravo, Adrian Romero & Mikel Irurita Agenda Functionality and Demo15 min. Process and Tools10 min. Development Technique5 min. Q & A 30 min.
Page 3 Initial Data Load Module Webinar-Openbravo, Adrian Romero & Mikel Irurita Agenda Functionality and Demo Process and Tools Development Technique Q & A
Page 4 Initial Data Load Module Webinar-Openbravo, Adrian Romero & Mikel Irurita Goal: Provide a set of automated data import processes to quickly load core ERP data into Openbravo. QuickStart customers: predefined templates (simplicity). Support full “new-install-to-production-ready” instance. Functional Highlights Initial Data Load Solution Approach: Deliver as a extension module. Included in QuickStart. Spanish Translation. Benefits: Enable end users to manage the process. Minimize considerably time of migration. Ensure fully-integrated set of validated ERP data. Complete and detailed documentation.
Page 5 Initial Data Load Module Webinar-Openbravo, Adrian Romero & Mikel Irurita Functional Highlights Initial Data Load Supported entities: – Products – Price Lists – Bank Accounts – Business Partners – Open Payables Data validation prior to import. Concise, easy-to-understand error log. Default value definition. REST Web service interface. Simple and effective process Define CSV Validate Configure default values Import – Open Receivables – Assets – Journal Entries – Standard Cost – On hand quantity / Stock
Page 6 Initial Data Load Module Webinar-Openbravo, Adrian Romero & Mikel Irurita Functional Highlights Fill several Openbravo entities from one CSV file Business partners Initial Data Load Business partners Addresses Contacts Templates: Simplicity. Intermediary step Fix structure.
Page 7 Initial Data Load Module Webinar-Openbravo, Adrian Romero & Mikel Irurita DEMO Initial Data Load Demo Functional Highlights Initial Data Load
Page 8 Initial Data Load Module Webinar-Openbravo, Adrian Romero & Mikel Irurita Future plans. Initial Data Load More entities to import: Balance sheet Payrolls. More integration capabilities Import from other data formats. (XML, Excel,...) Import from other third party applications. Improvements for consultants: Flexibility: ability to customize templates adding new fields.
Page 9 Initial Data Load Module Webinar-Openbravo, Adrian Romero & Mikel Irurita Agenda Functionality and Demo Process and Tools Development Technique Q & A
Page 10 Initial Data Load Module Webinar-Openbravo, Adrian Romero & Mikel Irurita Process and tools. Extract, Transform and Load. Initial Data Load Extract Transform and Load (ETL) takes part part in: * Synchronization or replication of databases * Right-time or batch exchanges of data * Data warehousing * Data migration * Data quality Extracting data from outside sources Transforming it to fit operational needs (which can include quality levels) Loading it into the end target (database or data warehouse) Extract Transform and Load (ETL) is a process in database usage and especially in data warehousing that involves:
Page 11 Initial Data Load Module Webinar-Openbravo, Adrian Romero & Mikel Irurita Process and tools. Load process structure Initial Data Load Talend job * CSV file parsing * Data validation Openbravo load process & REST web service * Data transformation * Data load using DAL ExtractingTransformingLoading Validate button Process button
Page 12 Initial Data Load Module Webinar-Openbravo, Adrian Romero & Mikel Irurita Process and tools: Talend Open Studio overview Initial Data Load Graphical designer Open source Metadata-driven solution Talend Open Studio is a project for data integration based on Eclipse RCP Operates as a code generator Large list of integration components
Page 13 Initial Data Load Module Webinar-Openbravo, Adrian Romero & Mikel Irurita DEMO Process and tools: Talend Open Studio demonstration Quick Talend Open Studio review. Initial Data Load
Page 14 Initial Data Load Module Webinar-Openbravo, Adrian Romero & Mikel Irurita Functionality and Demo Process and Tools Development Technique Q & A Agenda
Page 15 Initial Data Load Module Webinar-Openbravo, Adrian Romero & Mikel Irurita Development technique. REST web services for Openbravo ERP. Initial Data Load REST stands for Representational State Transfer. It relies on a stateless, client-server, cacheable communications protocol and in virtually all cases, the HTTP protocol is used. Definition of a REST web service: * The base URI: for example * The MIME type of the data supported by the web service, XML, JSON,... * The set of operations supported using HTTP methods. POST, GET, PUT, DELETE
Page 16 Initial Data Load Module Webinar-Openbravo, Adrian Romero & Mikel Irurita Development technique. REST web services for Openbravo ERP. Initial Data Load POST /openbravo/ws/org.openbravo.idl.process/Costing HTTP/1.1 Host: localhost rma 5.5 (...) response request <ob:Openbravo xmlns:ob=" xmlns:xsi=" <MaterialMgmtCosting id="FF B B8E6AE4008B" identifier="Raw material A Thu Jan 01 00:00:00 CET 2009"> FF B B8E6AE4008B T17:54:40.616Z (...)
Page 17 Initial Data Load Module Webinar-Openbravo, Adrian Romero & Mikel Irurita Development technique. Code snipets, defining a new web service Initial Data Load process org.openbravo.idl.service.IdlWebService true package org.openbravo.idl.service; public class IdlWebService implements WebService public void doPost(String path, HttpServletRequest request, HttpServletResponse response) throws Exception { final String firstsegment = WebServiceUtil.getInstance().getFirstSegment(path); final VariablesSecureApp vars = new VariablesSecureApp(request); final ConnectionProvider conn = new DalConnectionProvider();
Page 18 Initial Data Load Module Webinar-Openbravo, Adrian Romero & Mikel Irurita Development technique. Reading XML from request. Initial Data Load final SAXReader reader = new SAXReader(); final Document document = reader.read(request.getInputStream()); // check that the rootelement is the openbravo one final Element rootElement = document.getRootElement(); if (!rootElement.getName().equals(XMLConstants.OB_ROOT_ELEMENT)) { throw new OBException("Root tag of the xml document should be: " + XMLConstants.OB_ROOT_ELEMENT + ", but it is " + rootElement.getName()); } // check that there exit one element to import. if (rootElement.elements() == null || rootElement.elements().size() != 1) { throw new OBException("Root tag of the xml document should have one child element."); } Element entityelement = (Element) rootElement.elements().get(0);
Page 19 Initial Data Load Module Webinar-Openbravo, Adrian Romero & Mikel Irurita Development technique. Writing XML to response. Initial Data Load BaseOBObject obj = service.doInternalProcess(impent.getValues()); try { final StringWriter sw = new StringWriter(); final EntityXMLConverter exc = EntityXMLConverter.newInstance(); exc.setOptionEmbedChildren(true); exc.setOptionIncludeChildren(true); exc.setOptionIncludeReferenced(false); exc.setOptionExportClientOrganizationReferences(true); exc.setOutput(sw); exc.process(obj); String xml = sw.toString(); response.setContentType("text/xml"); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Encoding", "UTF-8"); final Writer w = response.getWriter(); w.write(xml); w.close(); } catch (final Exception e) { throw new OBException(e); }
Page 20 Initial Data Load Module Webinar-Openbravo, Adrian Romero & Mikel Irurita DEMO Development technique. REST Web Service demonstration REST Web Service execution Initial Data Load
Page 21 Initial Data Load Module Webinar-Openbravo, Adrian Romero & Mikel Irurita Functionality and Demo Wrap-Up Process and Tools Development Technique
Page 22 Initial Data Load Module Webinar-Openbravo, Adrian Romero & Mikel Irurita Q & A Interesting Links: Next Webinar: 18 th February Modularity Status Update Achievements in modularity during 2009 and roadmap -in regards of modularity- for 2010 Initial Data Load
Page 23 Initial Data Load Module Webinar-Openbravo, Adrian Romero & Mikel Irurita