<#--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->


    <div id="detail-column">
      <div id="special">
        <h2>What's new?</h2>
        <p><a href="http://us.apachecon.com/c/acus2008/"><img src="http://www.apache.org/ads/ApacheCon/2008-usa-125x125.png" alt="ApacheCon US 2008" align="left"/></a>
        <b>CHECK IT OUT!</b> There is a special <a href="http://us.apachecon.com/c/acus2008/schedule/ofbiz-symposium">OFBiz Symposium</a> at <a href="http://us.apachecon.com/c/acus2008/">ApacheCon US 2008</a> in New Orleans on Novemver 3-7. This event includes 2 days of training sessions, 2 days of conference presentations, and BOF sessions in the evening after the conference. Because it is a part of ApacheCon attendees can also enjoy other ApacheCon training and conference sessions and participate in other events including the Hackathon, Barcamp Apache (wiki driven unconference), and the Expo (show floor) which will include companies using OFBiz as well as others. See <a href="http://us.apachecon.com/c/acus2008/schedule/ofbiz-symposium">schedule details here</a>, and <a href="http://guest.cvent.com/i.aspx?4W,M3,e057feb1-c5f1-4430-a0ce-c4d78049759e">register here</a>.</p>

        <p>There are new features every day in OFBiz. For a summary <a href="https://cwiki.apache.org/confluence/display/OFBIZ/Main+New+Features">see new feature summary here</a>.</p>
        <p>&nbsp;-&nbsp;Accounting: auto-posting services in testing and reports in build-out</p>
        <p>&nbsp;-&nbsp;Project Management: extension of the WorkEffort and other base components, initially complete and being refined</p>
        <p>Free Training Videos are now available that offer an introduction to the Apache OFBiz Framework, based on the example component.
          They can be <a href="https://cwiki.apache.org/confluence/display/OFBIZ/Framework+Introduction+Videos+and+Diagrams">downloaded here</a>.</p>

      </div>

      <div id="intro">
        <h2>Introduction: What is Apache OFBiz?</h2>
        <p>The Apache OFBiz Project is an open source enterprise
        automation software project licensed under the Apache License Version 2.0. By open source enterprise automation we mean:
        Open Source ERP, Open Source CRM, Open Source E-Business / E-Commerce, Open Source SCM, Open Source MRP,
        Open Source CMMS/EAM, and so on.</p>

        <p>Apache OFBiz is a foundation and starting point for enterprise solutions, be they for one organization or one million.
        OFBiz can certainly be used OOTB (out of the box), but if you're looking for something that works really well for that there are many open source projects that do a great job there.
        OFBiz is great for creating specialized applications for use OOTB by other organizations.
        OFBiz is also great for organizations that need more than what an OOTB application can offer in order to grow their operations, but find the deployment and maintenance costs of traditional enterprise systems that can handle such things to be unreasonable or unjustifiable.
        </p>
        <p>Being open source under the Apache 2.0 license and driven by a community Apache OFBiz offers both flexibility by design and by access to code, and a solution where you're not alone but rather can work with many others to get things done.
        </p>


        <p>For answers to your questions you might find the following documents useful:
          <a href="https://cwiki.apache.org/confluence/display/OFBADMIN/Apache+OFBiz+Project+Overview">Project Overview</a>,
          <a href="https://cwiki.apache.org/confluence/display/OFBIZ/Is+OFBiz+for+Me">Is Apache OFBiz for Me?</a>,
          <a href="feature-list.html">Feature List</a>, and
          <a href="comingsoon.html">Features Coming Soon</a>
        </p>

        <p>For more technical information, see the <a href="https://cwiki.apache.org/confluence/display/OFBADMIN/OFBiz+Documentation+Index">Documentation</a> page.</p>


        <p>Apache OFBiz offers a great deal of functionality, including:</p>
        <ul>
         <li>advanced e-commerce</li>
         <li>catalog management</li>
         <li>promotion &amp; pricing management</li>
         <li>order management (sales &amp; purchase)</li>

         <li>customer management (part of general party management)</li>
         <li>warehouse management</li>
         <li>fulfillment (auto stock moves, batched pick, pack &amp; ship)</li>
         <li>accounting (invoice, payment &amp; billing accounts, fixed assets)</li>
         <li>manufacturing management</li>

         <li>general work effort management (events, tasks, projects, requests, etc)</li>
         <li>content management (for product content, web sites, general content, blogging, forums, etc)</li>
         <li>and much more all in an open source package!</li>
        </ul>

      </div>

        <div id="users">
            <!-- NOTE DEJ20061231 Please leave this section here; it is duplicated information from the User List page on docs.ofbiz.org, but represents a selection of the best sites and is important to leave here as it is something always asked about -->
            <h2>Who is Using Apache OFBiz?</h2>

            <p>It's hard to say who and how many organizations are using Apache OFBiz because you don't have to tell us when you use it, but there are lots of public sites and we've listed some of them for you here.</p>

            <p>Products based on Apache OFBiz:
                <a href="http://www.codesquare.com/products.html" target="_blank">Codesquare Helix</a>

                <a href="http://www.myaffiliateprogram.com/u/mvelopes/t.asp?id=1138" target="_blank">Mvelopes (FREE TRIAL!) (Commercial-Service)</a>
                <a href="http://www.atlassian.com/software/jira/default.jsp" target="_blank">Atlassian JIRA (Commercial)</a>
                <a href="http://www.opentaps.org/index.php" target="_blank">opentaps Open Source ERP + CRM (GPL/Commercial)</a>
                <a href="http://neogia.labs.libre-entreprise.org/index.html" target="_blank">Neogia (GPL)</a>
                <a href="http://sourcetapcrm.sourceforge.net" target="_blank">SourceTap CRM (GPL/Commercial)</a>
                <a href="http://www.neulion.com" target="_blank">NeuLion SAVANNA</a>

                <a href="http://www.mietta.info" target="_blank">XtraMind Mietta 2</a>
                <!-- <a href="http://www.linux-at-business.com/article.php3?id_article=64" target="_blank">Linux@Business INF (French)</a> -->
            </p>

            <p>A selection of public sites (mostly, but not all, ecommerce) using Apache OFBiz:
                <a href="http://www.1800flowers.com/" target="_blank">***1-800-Flowers.com</a>
                <a href="http://www.actionenvelope.com/" target="_blank">***Action Envelope</a>
                <a href="http://checkmark.heart.org/" target="_blank">***American Heart Association: Grocery List Builder</a>

                <a href="http://www.ameniti.com/" target="_blank">***Ameniti Luxury Travel Club</a>
                <!--a href="http://hello2.cellularone.com/" target="_blank">**CellularOne (flash front-end)</a>
                <a href="http://www.chocolatesecrets.net/index.htm" target="_blank">**Chocolate Secrets</a-->
                <a href="http://www.citydeals.com/deals/control/main" target="_blank">***City Deals</a>
                <a href="http://www.complianceonline.com/ecommerce/control/main" target="_blank">**Compliance Online Store</a>
                <a href="http://www.dkny.com/control/main" target="_blank">**DKNY</a>
                <a href="http://www.graciousstyle.com/" target="_blank">***Gracious Style</a>

                <a href="http://www.imaginwood.com" target="_blank">***ImagINwood</a>
                <a href="http://www.junipermusic.com" target="_blank">***Juniper Music + Soundesign</a>
                <a href="http://webshop.messergroup.com/control/main" target="_blank">**Messer Group (German, French)</a>
                <a href="http://www.oldglory.com/lp/main" target="_blank">***Old Glory</a>
                <a href="http://www.parago.com" target="_blank">***Parago</a>
                <a href="http://www.partnerhomes.com" target="_blank">**Partner Homes</a>

                <a href="http://www.peacockalley.com/control/main" target="_blank">***Peacock Alley</a>
                <!--a href="http://www.esalton.com/control/main" target="_blank">***Salton</a-->
                <a href="http://www.shirtpainter.com/ecommerce/control/main" target="_blank">***Shirt Painter (German)</a>
                <a href="https://www.silverwingsplus.com/swhome/control/swpHome" target="_blank">***Silver Wings Plus Club</a>
                <a href="http://www.steinersports.com/ssm/control/home" target="_blank">***Steiner Sports</a>
                <a href="http://www.totes-isotoner-sales.com/ecommerce/control/main" target="_blank">**totes >> ISOTONER</a>

                <a href="http://www.ulta.com/control/main" target="_blank">***Ulta</a>
                <a href="http://www.undersunconsulting.com/control/home.html" target="_blank">**Undersun Consulting</a>
                <a href="http://store.xinit.com/ecommerce/control/main" target="_blank">***Xinit Systems</a>
                <!--a href="http://www.worldfranchisecouncil.org/control/cpview?contentId=WFC_HOME" target="_blank">**World Franchise Council</a-->
            </p>
            <p>For a more complete list of sites see the <a href="https://cwiki.apache.org/confluence/display/OFBIZ/Apache+OFBiz+User+List">Apache OFBiz User List</a> page.</p>

      </div>
        <div id="inthenews">
            <h2>Apache OFBiz in the News</h2>
            <p>2008-11-09 &quot;<a href="http://www.packtpub.com/apache-ofbiz-development-beginners-tutorial/book" target="_blank">Apache OFBiz Development: The Beginner's Tutorial (a new book from Packt Publishing, cover only release 4.0).</a>&quot; on <a href="http://www.packtpub.com/" target="_blank">Packt Publishing</a></p>
            <p>2008-02-19 &quot;<a href="http://www.ebizq.net/hot_topics/open_source/features/8926.html" target="_blank">Can OSS ERP Projects Meet User Demand? (registration required)</a>&quot; on <a href="http://www.ebizq.net" target="_blank">ebizQ</a></p>

            <p>2007-10-15 &quot;<a href="http://www.techworld.com/storage/features/index.cfm?featureid=3729&amp;pagtype=all" target="_blank">Using open source to give you what you want</a>&quot; on <a href="http://www.techworld.com" target="_blank">Techworld</a></p>
            <p>2007-09-24 &quot;<a href="http://www.computerweekly.com/Articles/2007/09/24/226987/e-tailer-cuts-licensing-costs-with-linux-server.htm" target="_blank">E-tailer cuts licensing costs with Linux server</a>&quot; on <a href="http://www.computerweekly.com/" target="_blank">ComputerWeekly</a></p>
            <p>2007-09-10 &quot;<a href="http://www.infoworld.com/article/07/09/10/37FE-boss-applications_1.html" target="_blank">Best of open source applications</a>&quot; on <a href="http://www.infoworld.com/" target="_blank">InfoWorld</a></p>

            <p>2007-02-26 &quot;<a href="http://www.crn.com/software/197008228" target="_blank">6 Key Players In ERP</a>&quot; on <a href="http://www.crn.com/" target="_blank">CRN</a></p>
            <p>2007-02-22 &quot;<a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;articleId=9011649" target="_blank">More midmarket firms choose open-source ERP</a>&quot; on <a href="http://www.computerworld.com/" target="_blank">ComputerWorld</a></p>
            <p>2006-12-06 &quot;<a href="http://feathercast.org/?p=37" target="_blank">Feathercast Episode 22: OFBiz</a>&quot; on <a href="http://feathercast.org/" target="_blank">FeatherCast</a></p>

            <p>2006-11-30 &quot;<a href="http://www.linuxworld.com/podcasts/linux/ean_schuessler_on_apache_open.html" target="_blank">LinuxWorld LinuxCast: Ean Schuessler on Apache Apache OFBiz</a>&quot; on <a href="http://www.linuxworld.com/" target="_blank">LinuxWorld</a></p>
            <p>2006-10-25 &quot;<a href="http://www.sema.org/main/semaorghome.aspx?id=56095" target="_blank">SEMA Technology: Open Source Explained</a>&quot; on <a href="http://www.sema.org/main/semaorghome.aspx?ID=/content/SEMAorg/HomePage" target="_blank">SEMA.org</a></p>
            <p>2006-10-02 &quot;<a href="http://joss4biz.interition.net/roller/page/joss4biz/20061002" target="_blank">JOSS4BIZ Episode 5 - David E Jones and Apache OfBiz</a>&quot; on <a href="http://joss4biz.interition.net/" target="_blank">JOSS4BIZ Podcast</a></p>

            <p>2006-09-30 &quot;<a href="http://dev.mysql.com/tech-resources/interviews/si-chen-opentaps.html" target="_blank">Interview with Si Chen by Colin Charles</a>&quot; on <a href="http://dev.mysql.com" target="_blank">Mysql Developer Zone</a></p>
            <p>2006-08-28 &quot;<a href="http://blogs.zdnet.com/service-oriented/?p=698" target="_blank">AMR: SOA will kill ERP</a>&quot; on <a href="http://www.zdnet.com/" target="_blank">ZDNet</a></p>
            <p>2006-06-23 &quot;<a href="http://www.crn.com/sections/special/reports/sellingsmb.jhtml?articleId=189600063" target="_blank">ERP Enters Open-Source Renaissance</a>&quot; on <a href="http://www.crn.com/" target="_blank">CRN</a></p>

            <!--p>2006-06-10 &quot;<a href="http://software.newsforge.com/article.pl?sid=06/06/10/0325247&amp;tid=132&amp;tid=15" target="_blank">Why Enterprises are Adopting Open Source Apps</a>&quot; on <a href="http://www.newsforge.com/" target="_blank">NewsForge</a></p-->
            <p>2006-03-13 &quot;<a href="http://www.eweek.com/c/a/Enterprise-Apps/ERP-Share-and-Share-Alike/" target="_blank">ERP: Share and Share Alike</a>&quot; on <a href="http://www.thechannelinsider.com/" target="_blank">eWeek Channel Insider</a></p>
        </div>

      <div id="announcements">
        <h2>Old Announcements and News</h2>
        <h3>Announcements</h3>


        <p>Check out the presentation on <b>Apache OFBiz at JavaOne</b> by Ean Scheussler of <a href="http://www.brainfood.com" target="_blank">Brainfood</a> and David Jones of <a href="http://www.hotwaxmedia.com/?atc=OFB" target="_blank">HotWax Media</a>:
        <a href="http://www28.cplan.com/cc158/sessions_catalog.jsp?ilc=158-1&amp;ilg=english&amp;isort=&amp;isort_type=&amp;is=yes&amp;icriteria1=+&amp;icriteria2=+&amp;icriteria7=+&amp;icriteria9=TS-7900&amp;icriteria8=&amp;icriteria3=" target="_blank">Session TS-7900, Apache OFBiz: Real-World Open Source Java Platform ERP</a>. It was on Wednesday May 9th, 2007 at 4:10 PM.</p>

        <p>Apache OFBiz is now officially a TLP (top level project) at the Apache Software Foundation!
           See the details <a href="http://incubator.apache.org/projects/ofbiz.html">here</a>.
        </p>


        <p>The 2006 OFBiz Users Conference turned out Great! The video recordings are available <a href="VideosConf.html">here</a>.</p>
        <p>The <b>2006 OFBiz Users Conference</b> was held in Ephraim, UT, USA on the 3rd and 4th of November, 2006.
              Special thanks to <a href="http://www.automationgroups.com" target="_blank">Automation Groups</a> for hosting the conference this year.
        </p>

        <p>Apache OFBiz had an exhibit booth and BoF session at the upcoming OSCON show in Portland, OR on 26-28 July 2006. For details see the mailing list announcement
            <a href="http://lists.ofbiz.org/pipermail/users/2006-June/012727.html">here</a>.</p>

        <p>OFBiz is in the Apache Incubator. See the status here: <a href="http://incubator.apache.org/projects/ofbiz.html">here</a>.</p>

        <p>Free Training Videos are now available that offer an introduction to the Apache OFBiz Framework, based on the example component.
            They can be downloaded <a href="https://cwiki.apache.org/confluence/display/OFBIZ/Framework+Introduction+Videos+and+Diagrams">here</a>.</p>

        <p>The 2005 OFBiz Users Conference turned out Great! The video recordings are available <a href="VideosConf.html">here</a>.</p>


        <p>The <b>2005 OFBiz Users Conference</b> was held in St. Louis, MO, USA on the 21st and 22nd of July, 2005.
        Special thanks to <a href="http://www.contegix.com" target="_blank">Contegix</a> for hosting the conference this year.
         <a href="http://www.hotwaxmedia.com/?atc=OFB">Hotwax Media</a> teamed up with Contegix to offer 2 days of training prior to the conference (on July 19-20).
        For details and registration information please see the <a href="http://lists.ofbiz.org/pipermail/users/2005-May/007887.html" target="_blank">official announcement</a> on the OFBiz Users mailing list,
        and the <a href="http://lists.ofbiz.org/pipermail/users/2005-May/007926.html" target="_blank">preview/update</a> with more information about what you'll see there.
        </p>

        <p>Also see the <a href="http://lists.ofbiz.org/pipermail/users/2005-July/008161.html" target="_blank">latest update on the 2005 OFBiz Users Conference</a> with detailed session information and everything you need to know to attend.</p>

        <p>New Case Study from Integral Business Solutions about their projects
          based on Apache OFBiz, especially recent work they have done for the US Air Force. <a href="IntegralAirForceCaseStudy.pdf">Download the complete document here.</a></p>

        <p>Apache OFBiz Basic Production Setup document Now Available: <a href="https://cwiki.apache.org/confluence/display/OFBIZ/Apache+OFBiz+Technical+Production+Setup+Guide">Apache OFBiz Production Setup Guide</a>.
        This is a free download meant to help you get going with Apache OFBiz. It is sponsored by
         <a href="http://www.hotwaxmedia.com/?atc=OFB" target="_blank">Hotwax Media</a> and
        <a href="http://www.go-integral.com" target="_blank">Integral Business Solutions</a>.
        </p>


        <p>New Success Story Article about OFBiz on java.net:
        <a href="http://today.java.net/pub/a/today/2004/06/01/ofbiz.html" target="_blank">Read it here.</a>
        </p>

        <p>The <b>2004 OFBiz Users Conference</b> was
        held in Minneapolis, MN, USA on the 27th and 28th of May, 2004. It was
        hosted by <a href="http://www.go-integral.com" target="_blank">Integral Business Solutions</a>
        and held in a contributed room on the new Best Buy campus. Just like
        the 2003 conference hosted by <a href="http://www.automationgroups.com" target="_blank">Automation Groups</a>

        this conference turned out great, and was well attended. We did a recording
        of the conference again this year, but this time it is DVD quality, and requires
        2 DVDs even though it is compressed with DivX. Includes about 14 hours of high quality
        discussion and presentation of new and stable features in OFBiz.
        For more information, see the <a href="VideosConf.html">Conference Videos</a> page.
        </p>

        <h3>News</h3>
        <p>2005-11-18 &quot;<a href="http://www.thechannelinsider.com/article/The+Case+for+OpenSource+ERP/165733_1.aspx" target="_blank">The Case for Open-Source ERP</a>&quot; on <a href="http://www.thechannelinsider.com/" target="_blank">eWeek Channel Insider</a></p>
        <p>2005-09-06 &quot;<a href="http://www.thechannelinsider.com/article/Open+Source+Offers+ERP+Alternative/159460_1.aspx" target="_blank">Open Source Offers ERP Alternative</a>&quot; on <a href="http://www.thechannelinsider.com/" target="_blank">eWeek Channel Insider</a></p>

        <p>2005-09/10 &quot;Gaining Acceptance: Real-World Experiences with Open Source Business Applications (Vol 1, Num 2, Page 40)&quot; on <a href="http://www.eosj.com/" target="_blank">Enterprise Open Source Journal</a></p>
        <p>2005-08-08 &quot;<a href="http://www.infoworld.com/article/05/08/08/32FEosscrm_1.html?s=feature" target="_blank">Open Source CRM</a>&quot; on <a href="http://www.infoworld.com/" target="_blank">InfoWorld</a></p>
        <p>2005-06-16 &quot;<a href="http://searchenterpriselinux.techtarget.com/originalContent/0,289142,sid39_gci1098875,00.html" target="_blank">SMBs no longer shut out of ERP</a>&quot; on <a href="http://searchenterpriselinux.techtarget.com/" target="_blank">SearchEnterpriseLinux.com</a></p>

        <!--p>2005-01-26 &quot;<a href="http://newsvac.newsforge.com/article.pl?sid=05/01/26/1648214" target="_blank">ObjectWeb announces Winners of Best Use Cases Award</a>&quot; on <a href="http://www.newsforge.com/" target="_blank">NewsForge</a></p-->
        <p>2004-09-11 &quot;<a href="http://www.cio.com.au/index.php?id=318248421" target="_blank">Apache OFBiz</a>&quot; on <a href="http://www.cio.com.au/index.php" target="_blank">CIO Australia</a></p>
        <p>2004-09-07 &quot;<a href="http://www.technology-evaluation.com/Research/ResearchHighlights/FreeOpenSource/2004/09/research_notes/prn_VN_FS_JC_09_07_04_1.asp" target="_blank">TEC Talks to the Apache OFBiz Project - Free and Open Source Software Business Models Part One: OFBiz</a>&quot; on <a href="http://www.technology-evaluation.com/" target="_blank">Technology Evaluation Centers</a></p>
        <p>2004-06-01 &quot;<a href="http://today.java.net/pub/a/today/2004/06/01/ofbiz.html" target="_blank">java.net Success Story: Apache OFBiz</a>&quot; on <a href="http://www.java.net/" target="_blank">java.net</a></p>

        <p>2004-03-10 &quot;<a href="http://www.ecsforum.org/ecsforum.asp?page=AnnualConf2004" target="_blank">The Open Source Alternative for Direct Commerce (presentation)</a>&quot; on <a href="http://www.ecsforum.org/home.asp" target="_blank">eCSForum</a></p>
        <p>2003-06-01 &quot;<a href="http://www.connect-utah.com/article.asp?r=39&amp;iid=4&amp;sid=1" target="_blank">A New Business Model for Web Services</a>&quot; on <a href="http://www.connect-utah.com/" target="_blank">Connect Magazine</a></p>
        <p>2003-03-01 &quot;<a href="http://www.internetretailer.com/article.asp?id=8731" target="_blank">They Did It Their Way</a>&quot; on <a href="http://www.internetretailer.com/" target="_blank">Internet Retailer</a></p>

        <p>2003-01-27 &quot;<a href="http://www.internetretailer.com/dailyNews.asp?id=8499" target="_blank">ReturnBuy.com’s open source platform saves big off the bat</a>&quot; on <a href="http://www.internetretailer.com/" target="_blank">Internet Retailer</a></p>
      </div>

    </div>

    <div class="endcolumns"><span>&nbsp;</span></div>

<!-- content end -->
