<?xml version="1.0" encoding="UTF-8"?>
<consultants>
    
    <consultant>
        <name>Adfinis SyGroup AG</name>
        <country>CH</country>
        <practice>Development</practice>
        <practice>Support</practice>
        <practice>Other</practice>
        <description>
            Adfinis SyGroup AG has been active in the open source environment
            for more than a decade. We provide services such as development,
            maintenance and operation based on open source technologies,
            including OpenOffice. With offices in Basel and Bern, we support
            customers throughout Switzerland and neighbouring countries.
        </description>
        <website>https://adfinis-sygroup.ch/openoffice_support_and_development</website>
        <email>david.vogt@adfinis-sygroup.ch</email>
        <phone>+41 31 550 31 11</phone>
    </consultant>
    
    <consultant>
        <name>Özgür Yazılım A.Ş.</name>
        <country>TR</country>
        <practice>Training</practice>
        <practice>Support</practice>
        <practice>Deployment</practice>
        <description>
            At Ozgur Yazilim AS we can help you deploy and migrate to OpenOffice.
            We specialize in training and providing day-to-day support for your
            personnel. Based in Istanbul and Ankara, we're capable of offering
            nationwide services in Turkey.
        </description>
        <website>http://ozguryazilim.com.tr/libreoffice-openoffice-ofis-yazilimi</website>
        <email>info@ozguryazilim.com.tr</email>
        <phone>+90-212-2799150, +90-312-4240133</phone>
    </consultant>
 
    <consultant>
        <name>Uwe Altmann Unternehmensberatung</name>
        <country>DE</country>
        <practice>Deployment</practice>
        <practice>Support</practice>
        <practice>Development</practice>
        <practice>Documentation</practice>
        <description>
            Helping small business customers since many years in using and
            optimizing IT solutions. This is done by careful requirements
            analysis, migration support, professional project management and
            continuous user support based on individual agreements.
        </description>
        <website>http://www.altsys.de</website>
        <email>uwe.altmann@altsys.de</email>
        <phone>+49 681 96 02 13 39</phone>
    </consultant>    

    <consultant>
        <name>World Label Inc</name>
        <country>Global</country>
        <practice>Other</practice>
        <description>
            WorldLabel specializes in developing templates for pre-press
            printing applications with an emphasis on labeling for address,
            shipping, CD and media, barcoding and mailmerge We create custom
            templates for all applications along with implementation and
            instructions for their use.
        </description>
        <website>http://www.worldlabel.com/Pages/openoffice-template.htm</website>
        <email>contact@worldlabel.com</email>
        <phone>1-914 930 1346</phone>
    </consultant>
    
    <consultant>
        <name>Jörg Schmidt, IT- und Unternehmensberatung</name>
        <country>DE</country>
        <practice>Deployment</practice>
        <practice>Support</practice>
        <practice>Development</practice>
        <practice>Other</practice>
        <description>
            Consulting, migration (planning, implementation, project-care),
            programming (extensions, macros), trainings (for managers and end
            users), support (end users, installation, install customization)
        </description>
        <website>http://www.jm-schmidt.de</website>
        <email>info@jm-schmidt.de</email>
        <phone> </phone>
    </consultant>    
    
    <consultant>
        <name>Ability Software Consultants Ltd</name>
        <country>UK</country>
        <practice>Training</practice>
        <description>
            Ability Software Consultants offer a complete range of
            instructor-led training courses for all Apache OpenOffice
            applications. Our training courses can be provided on your own site
            or at a convenient venue that we can arrange. All training courses
            include supporting course notes.
        </description>
        <website>http://www.abilitysoftware.co.uk/openoffice_training.htm</website>
        <email>dprice@abilitysoftware.co.uk</email>
        <phone>+44(0)1531 828366</phone>
    </consultant>
    
    <consultant>
        <name>Officecourseware</name>
        <country>UK</country>
        <practice>Documentation</practice>
        <description>
            Officecourseware supply course notes for instructor-led training
            courses. Notes are supplied in an odt format so you can edit and
            re-brand.
        </description>
        <website>http://www.officecourseware.co.uk/</website>
        <email>info@officecourseware.co.uk</email>
        <phone>+44(0)1531 828366</phone>
    </consultant>

    <consultant>
        <name>Sylvain DENIS</name>
        <country>BE</country>
        <practice>Deployment</practice>
        <practice>Support</practice>
        <practice>Certification</practice>
        <practice>Other</practice>
        <description>
            Sylvain DENIS. Expert ICT,FLOSS and WEB. Professor of office and
            computer. I work in education in Belgium. I also represent free
            software in Belgium. I give conferences about free software. I
            would also stands on free software. I help with the installation
            and use of free software (and especially Apache OpenOffice)
        </description>
        <website>http://www.denis-sylvain.be</website>
        <email>contact@denis-sylvain.be</email>
        <phone>+32 (0)499 219 802</phone>
    </consultant>

    <consultant>
        <name>The Learning Machine, Ltd</name>
        <country>Global</country>
        <practice>Certification</practice>
        <description>
            The Learning Machine, Ltd provides certification of IT user skills
            in the context of Apache Open Office, accredited by the UK national
            Regulators and referenced to the European Qualifications Framework.
            We work through organisations such as schools, colleges and adult
            education providers.
        </description>
        <website>https://theingots.org/community/CertOOo</website>
        <email>ian.lynch@theingots.org</email>
        <phone>+44 (0) 1827305940</phone>
    </consultant>

    <consultant>
        <name>Ing. Mag. Rainer Stoll - Unternehmensberatung</name>
        <country>AT</country>
        <practice>Training</practice>
        <practice>Support</practice>
        <description>
            Apache OpenOffice training and user support for day-to-day office
            use (all Modules) and also individual business cases with intense
            usage of special Writer and Calc capabilities like serial letters
            with conditional parts of text or half automated Calc data entry
            and analysis for invoicing and (cost-) accounting.
        </description>
        <website>http://www.rainerstoll.at</website>
        <email>post@rainerstoll.at</email>
        <phone>+43 (0)2732 70250</phone>
    </consultant>

    <consultant>
        <name>4K-Soft</name>
        <country>UA</country>
        <practice>Development</practice>
        <practice>Support</practice>
        <description>
            We can help software developers automate OpenOffice. We have
            developed a library for OpenOffice automation. The library
            provides stable API for creating, reading and writing all
            OpenOffice documents.
        </description>
        <website>http://4k.com.ua/products/others/libopenoffice?lang=en</website>
        <email>libopenoffice@gmail.com  </email>
        <phone>+38(050)413-97-98</phone>
    </consultant>
	
    <consultant>
        <name>IBM</name>
        <country>Global</country>
        <practice>Development</practice>
        <practice>Support</practice>
        <practice>Training</practice>
        <description>
            IBM® Support for Apache OpenOffice offers expert technical support
            for Apache OpenOffice. With trusted IBM support, you can
            confidently deploy Apache OpenOffice for your demanding desktop
            office document requirements.
        </description>
        <website>http://www-03.ibm.com/software/products/us/en/ibm-support-for-apache-openoffice</website>
	<phone>+1(877)426-3774 ; Priority code: 109HD03W</phone>
    </consultant>
	
    <consultant>
        <name>OPS Consulting</name>
        <country>ES</country>
        <practice>Deployment</practice>
        <practice>Support</practice>
        <practice>Development</practice>
        <practice>Training</practice>
        <practice>Other</practice>
        <description>
            OPS Consulting is located in Barcelona, Spain. We've been providing
            consulting and training services to help organizations to deploy
            OpenOffice since 2004.
        </description>
        <website>http://www.opscons.com/soluciones/migracion/ofimatica/servicios-de-migracion</website>
        <email>info@opscons.com</email>
        <phone>+34 93 451 40 46</phone>
    </consultant>
    
    <consultant>
        <name>e.tere@ srl</name>
        <country>IT</country>
        <practice>Deployment</practice>
        <practice>Support</practice>
        <practice>Development</practice>
        <practice>Training</practice>
        <description>
            Società attiva nel mondo delle tecnologie OPEN SOURCE, esperta nel
            calcolo dei costi e benefici delle soluzioni Apache OpenOffice
            verso Microsoft, grande esperienza di formazione nella
            produttività individuale, supporta il cliente con progetti di
            conversioni da mondo proprietario a mondo Open.
        </description>
        <website>http://www.terea.it/product/open-office</website>
        <email>info@e.terea.com</email>
        <phone>+39 0287197466</phone>
    </consultant>

    <consultant>
        <name>Guy Waterval</name>
        <country>CH</country>
        <practice>Training</practice>
        <practice>Documentation</practice>
        <practice>Support</practice>
        <description>
            Training courses for the modules Writer, Calc, Impress and Draw.
            Development of Softenpoche, a portable free software collection,
            allowing the use of the Apache OpenOffice (TM) productivity suite
            and other complementary free office tools anywhere on any Windows
            computer without installation. Development of free teaching
            materials to help interested people promote the OpenOffice
            project and the use of the Apache OpenOffice suite in companies
            and schools in their region.
        </description>
        <website>http://www.softenpoche.com/</website>
        <email>waterval.guy@gmail.com</email>
    </consultant>

    <consultant>
        <name>infolearn - TEST4U.eu</name>
        <country>Global</country>
        <practice>Certification</practice>
        <practice>Training</practice>
        <practice>Development</practice>
        <description>
            Infolearn offers a complete range of Apache OpenOffice (Writer,
            Calc, Impress, Base) in-application tests through TEST4U. TEST4U
            is an automated test which cooperates with the actual applications
            instead of flash simulation and can be used to:
            - prepare the students for certification examinations
              (e.g. ECDL/ICDL, DIPLOMA etc)
            - train and assess employees. 
            TEST4U with its 700 000 users and 7 000 000 000 (yes 7 billion)
            served questions since 2003 is worldwide the only application that
            works with all these applications in a real working environment.
        </description>
        <website>https://www.test4u.eu/en/e-tests/apache-openoffice</website>
        <email>info@test4u.eu</email>
        <phone>+30 2310 888 771</phone>
    </consultant>
    
 </consultants>
