<html>
<head>
    <title>How to submit your professional services listing</title>
</head>
<body>
<h1>How to submit your professional services listing</h1>
<p>The Apache OpenOffice project offers a list of relevant practioners of interest to Apache OpenOffice users.  No endorsement is implied by these listings.
If you would like to have your listing added to this page, please follow these instructions:</p>

<ol>
    
    <li>Listings must be factual and specifically relevant to OpenOffice.  Generic IT services companies without a specific offering on their website directly relevant to OpenOffice 
        would probably not be a good fit for these listings.  In other words, if your website is not mentioning OpenOffice, why should our website mention you?</li>
    <li>You should review the <a href="consultants.html">current consultants directory</a> to see the expected contents and format.</li>
    <li>Further useful information for preparing your submission can be found in the <a href="#submission-details">Submission Details</a> section below.</li>
    <li>Listings and the websites and email addresses referenced must <a href="http://www.apache.org/foundation/marks/">respect ASF trademarks</a>.  Note: Our official name is now 
        Apache OpenOffice&trade;.</li>
    <li>Listings must not imply approval, endorsement or affiliation with the Apache OpenOffice project or the ASF.</li>
    <li>Listings with invalid links, 404 errors, etc., may be removed.  Please keep your listing up-to-date.</li>
    <li>Listings must be submitted to the <a href="http://openoffice.apache.org/mailing-lists.html#development-mailing-list">dev</a> mailing list for review by the 
        Project Management Committee.</li>
     <li>Although we are happy to receive text submissions (See the <a href="#example-submission">Example Submission</a> below, submissions made as patches to our XML file are 
         easier for us to integrate and are greatly appreciated.  See the <a href="#xml-submissions">XML Submissions</a> section for more information.</li>
    <li>All listings appear soley at the discretion of the Apache OpenOffice PMC.  If you have any questions on the above, please ask on 
            the <a href="http://openoffice.apache.org/mailing-lists.html#development-mailing-list">dev</a> mailing list.</li>
</ol>

<h1 id="submission-details">Submission Details</h1>


<ul>
    <li>"name" is either your personal name or the name of your company or organization. We will sort on this field in our listings and link it to your website.  This field is required.</li>
    <li>"country" contains an <a href="http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2">ISO-3166-1 alpha-2</a> two-letter country code.  It indicates a country in which you do business.  
        If you do business in multiple countries you may have multiple "country" entries.  As a short-cut, if you do business globally you may use the value "global".  
        The "country" field is required.</li>
        <li>"practice" indicates an area of practice in which you offer services.  At least one "practice" entry is required.  The areas are pre-defined and limited to:
            <ul>
                <li>Deployment &mdash; services related to installation of OpenOffice.  This might include planning, migration, install customization, etc.</li>
                <li>Support &mdash; services related to supporting users and deployments, including help support.</li>
                <li>Development &mdash; programming, including core OpenOffice development, macros, scripts and extensions.</li>
				<li>Training &mdash; in person or remote, live, multimedia, or printed.</li>
                <li>Certification &mdash; services related to certification of user skills, developers skills, etc.</li>
                <li>Others</li>
            </ul>
        <li>"description" further describes the services you offer. Keep it brief and factual.  This field is required and is limited to 512 characters, with no embedded markup or images.</li>
        <li>"website" is the URL for your website.  The "name" field is linked to this URL.  If you have a page specifically covering your OpenOffice-related services, this
            is preferred over a generic page that is not as relevant to OpenOffice users.  This element is required.</li>
        <li>"email" is an email address where users can get more information.  This entry is optional. If included it must be a valid email address.</li>
        <li>"phone" is an phone number where users can get more information.  This entry is optional.</li>
</ul>

<h1 id="example-submission">Example Submission</h1>

<p>
Name:  Foobar Consulting, LLC<br/>
Country: US, CA<br/>
Practice: Deployment, Support<br/>
Description: At Foobar we can help you deploy and migrate to OpenOffice.  We specialize in macro and document conversions and related techncial services related to OpenOffice migrations.<br/>
Website: http://www.foobar.com/openoffice/<br/> 
Email: info@foobar.com<br/>
Phone: +11 22-333-4444<br/>
</p>

<h1 id="xml-submissions">XML Submissions</h1>
<ul>
        <li>All listings are added to the <a href="https://svn.apache.org/repos/asf/openoffice/ooo-site/trunk/content/bizdev/consultants/consultants.xml">consultants.xml</a> file.</li>
        <li>The XML Schema definition for submissions is <a href="https://svn.apache.org/repos/asf/openoffice/ooo-site/trunk/content/bizdev/consultants/consultants.xsd">here</a>.  </li>
        
</ul>



</body>
</html>
