<!DOCTYPE html>
<html lang="en">
<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!-->
<head>
<meta charset="utf-8">
<title>The Apache OFBiz&reg; Project - Downloads</title>
<meta name="Description" content="OFBiz is an open source enterprise automation software project licensed under the Apache License. It means you are not alone and can work with many others." />
<meta name="Robots" content="index,follow" />
<!-- Mobile Specific Metas
    ================================================== -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- CSS
    ================================================== -->
<!-- local fonts  -->
<link type="text/css" id="fonts" rel="stylesheet" href="/css/fonts.css">
<!-- Bootstrap  -->
<link type="text/css" rel="stylesheet" href="/bootstrap/css/bootstrap.min.css">
<!-- plugin css  -->
<link rel="stylesheet" type="text/css" href="/js/plugins/pretty-photo/css/prettyPhoto.css" />
<link rel="stylesheet" type="text/css" href="/js/plugins/rs-plugin/css/settings.css" media="screen" />
<link type="text/css" rel="stylesheet" href="/js/plugins/hoverdir/css/style.css">
<!-- icon fonts -->
<link type="text/css" rel="stylesheet" href="/font-icons/custom-icons/css/custom-icons.css">
<link type="text/css" rel="stylesheet" href="/font-icons/custom-icons/css/custom-icons-ie7.css">
<!-- Custom css -->
<link type="text/css" rel="stylesheet" href="/css/layout.css">
<link type="text/css" id="colors" rel="stylesheet" href="/css/colors.css">
<!--[if lt IE 9]><script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<!--[if gte IE 9]><style type="text/css">.iconBig, .active, .hover a , .Shover a { filter: none !important; } </style> <![endif]-->
<script src="js/modernizr-2.6.1.min.js"></script>
<!-- Favicons
    ================================================== -->
<link rel="shortcut icon" href="/images/favicon.ico">
<link rel="apple-touch-icon" href="/images/apple-icon.png">
<link rel="apple-touch-icon" sizes="72x72" href="/images/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="114x114" href="/images/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="144x144" href="/images/apple-icon-144x144.png">
</head>
<body>
<!-- header -->
<header id="mainHeader" class="clearfix">
  <div class="navbar navbar-fixed-top">
    <div class="navbar-inner">
      <div class="container"> <a href="index.html" class="brand"><img src="images/ofbiz_logo.png" alt="Apache OFBiz Logo"/></a>
        <nav id="mainMenu" class="clearfix">
          <ul>
            <li><a href="index.html" class="firstLevel">Home</a></li>
            <li><a href="#" class="firstLevel">Getting Started</a>
              <ul>
                <li><a href="developers.html" class="">Developers</a></li>
                <li><a href="business-users.html" class="last">Business Users</a></li>
              </ul>
            </li>
            <li><a href="#" class="firstLevel">News</a>
              <ul>
                <li><a href="//twitter.com/apacheofbiz" target="external">Twitter</a></li>
                <li><a href="//blogs.apache.org/ofbiz/" target="external" class="last">Blog</a></li>
              </ul>
            </li>
            <li><a href="#" class="firstLevel">Documentation</a>
              <ul>
                <li><a href="//cwiki.apache.org/confluence/display/OFBIZ/Documentation" target="external" class="">User Documentation</a></li>
                <li><a href="//cwiki.apache.org/confluence/display/OFBIZ/Technical+Documentation" target="external" class="">Technical Documentation</a></li>
                <li><a href="//cwiki.apache.org/confluence/display/OFBIZ/Home" target="external" class="">Wiki</a></li>
                <li><a href="#" class="firstLevel">API Reference</a>
                  <ul>
                    <li title="Trunk API">
                      <a href="https://nightlies.apache.org/ofbiz/trunk/javadoc/" target="external">Trunk API</a></li>
                    </li>
                    <li title="Stable release  API">
                      <a href="https://nightlies.apache.org/ofbiz/stable/javadoc/" target="external">Stable Release API</a></li>
                    </li>
                    <li title="Next release API">
                      <a href="https://nightlies.apache.org/ofbiz/next/javadoc/" target="external">Next Release API</a></li>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
            <li><a href="#" class="firstLevel">Community</a>
              <ul>
                <li><a href="getting-involved.html">Getting Involved</a></li>                
                <li><a href="mailing-lists.html">Mailing Lists</a></li>
                <li><a href="source-repositories.html">Source Repository</a></li>
                <li><a href="download.html">Downloads</a></li>
                <li><a href="https://s.apache.org/dsj2p" target="external" >Issue Tracker</a></li>
                <li><a href="faqs.html" class="last">FAQ</a></li>
              </ul>
            </li>
            <li><a href="ofbiz-demos.html" class="firstLevel">Demos</a></li>
		  <li>
		    <a href="//twitter.com/ApacheOfbiz" class="icon-twitter-bird socialIcon tips"
		      target="external" title="follow us on Twitter"><span>twitter</span></a>
		  </li>
		  <li><a href="//www.linkedin.com/company/apache-ofbiz/" target="external"  class="icon-linkedin socialIcon tips"  title="follow us on Linkedin"><span>linkedin</span></a></li>
		  <li><a href="//www.facebook.com/Apache-OFBiz-1478219232210477/?ref=page_internal" target="external" class="icon-facebook socialIcon tips"  title="follow us on Facebook"><span>facebook</span></a></li>
		  <li><a href="//www.youtube.com/user/ofbiz" class="icon-play socialIcon tips" target="external" title="follow us on Youtube"><span>Youtube</span></a></li>
		  <!--<li><a href="#" class="icon-rss socialIcon tips"  title="Our rss feed"><span>rss feed</span></a></li>         
		  <li><a href="#" class="icon-gplus socialIcon tips"  title="follow us on Google +"><span>google +</span></a></li>
		  <li><a href="#" class="icon-instagram socialIcon tips"  title="follow us on Instagram"><span>instagram</span></a></li>
		  <li><a href="#" class="icon-linkedin socialIcon tips"  title="follow us on Linkedin"><span>linkedin</span></a></li>
		  <li><a href="#" class="icon-pinterest-circled socialIcon tips"  title="follow us on Pinterest"><span>Pinterest</span></a></li>-->
          </ul>
        </nav>
      </div>
    </div>
  </div>
</header>
<!-- header -->
<!-- globalWrapper -->
<div id="globalWrapper">

<!-- content -->
  <!-- page content -->
  <section id="content" class="sidebar">
    <header class="headerPage">
      <div class="container clearfix">
        <div class="row">
          <h1 class="span8">Downloads</h1>
          <div class="span4" id="navTrail"> <a href="index.html" class="homeLink">home</a><span>/</span><a href="#">Community</a><span>/</span> <span class="current">Downloads</span> </div>
        </div>
      </div>
    </header>
    <div class="slice clearfix">
      <div class="container">
        <div class="row">
          <!-- sidebar -->
          <aside class="span4" id="sidebar">

            <section class="widget blogUpdates">
              <h2>Releases for Download</h2>
              <div class="divider"><span></span></div>
              <ul class="nav nav-tabs " id="myTab">
                <li class="active"><a href="#tabs-1" data-toggle="tab">Downloads</a></li>
                <li><a href="#tabs-2" data-toggle="tab">Release Notes</a></li>
              </ul>
              <div class="tab-content">
                <div class="tab-pane active" id="tabs-1">
                  <ul>
                    <li>
                      <h2>OFBiz 18.12.07</h2>
                      <a href="https://www.apache.org/dyn/closer.lua/ofbiz/apache-ofbiz-18.12.07.zip" target="external" class="moreLink">&rarr; Download</a>
                    </li>
                  </ul>
                </div>
                <div class="tab-pane" id="tabs-2">
                  <ul>
                    <li>
                      <h2>OFBiz 18.12.07</h2>
                      <a href="release-notes-18.12.07.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 18.12.06</h2>
                      <a href="release-notes-18.12.06.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 18.12.05</h2>
                      <a href="release-notes-18.12.05.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 18.12.04</h2>
                      <a href="release-notes-18.12.04.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 18.12.03</h2>
                      <a href="release-notes-18.12.03.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 18.12.02</h2>
                      <a href="release-notes-18.12.02.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 18.12.01</h2>
                      <a href="release-notes-18.12.01.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 17.12.09</h2>
                      <a href="release-notes-17.12.09.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 17.12.08</h2>
                      <a href="release-notes-17.12.08.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 17.12.07</h2>
                      <a href="release-notes-17.12.07.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 17.12.06</h2>
                      <a href="release-notes-17.12.06.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 17.12.05</h2>
                      <a href="release-notes-17.12.05.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 17.12.04</h2>
                      <a href="release-notes-17.12.04.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 17.12.03</h2>
                      <a href="release-notes-17.12.03.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 17.12.02</h2>
                      <a href="release-notes-17.12.02.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 17.12.01</h2>
                      <a href="release-notes-17.12.01.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 16.11.07</h2>
                      <a href="release-notes-16.11.07.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 16.11.06</h2>
                      <a href="release-notes-16.11.06.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 16.11.05</h2>
                      <a href="release-notes-16.11.05.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 16.11.04</h2>
                      <a href="release-notes-16.11.04.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 16.11.03</h2>
                      <a href="release-notes-16.11.03.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 16.11.01</h2>
                      <a href="release-notes-16.11.01.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 13.07.03</h2>
                      <a href="release-notes-13.07.03.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 13.07.02</h2>
                      <a href="release-notes-13.07.02.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 13.07.01</h2>
                      <a href="release-notes-13.07.01.html" class="moreLink">&rarr; View</a>
                    </li>
                    <li>
                      <h2>OFBiz 12.04.06</h2>
                      <a href="release-notes-12.04.06.html" class="moreLink">&rarr; View</a>
                    </li>
                  </ul>
                </div>
              </div>
            </section>
          </aside>
          <!-- sidebar -->
          <div class="span8">
            <h2>Download Apache OFBiz</h2>
            <div class="divider"><span></span></div>
            <div class="imgWrapper"> <img src="images/Download.jpg" alt="image fullwidth"> </div>
            <p> <strong> Use the links below to download Apache OFBiz releases from the "Apache Download Mirrors" page. The download page also includes instructions on how to verify the integrity of the release file using the signature and hash (PGP, SHA512) available for each release. If you need more information about why and how to verify the integrity of the release file <a href="http://www.apache.org/info/verification.html" class="moreLink">this &rarr; page is what you look for</a></strong> </p>

            <p> <strong> Then, to install OFBiz, follow the explanations in the "INSTALL" file found in the just downloaded/extracted OFBiz main directory.</strong> </p>

            <p> <strong>PLEASE NOTE:</strong> Despite our best efforts to maintain up to three active release branches, support for older branches can decrease because our project volunteers may be focused on other issues. We recommend using releases from the most recent branch wherever possible. </p>

            <p><strong>NOTE: To minimize the risk of security vulnerabilities the Apache OFBiz community highly recommends that all users upgrade to the latest stable release.</strong></p>
            <p>The history of security related fixes included in each release is
available <a href="security.html">here</a></p>

            <h2>Apache OFBiz 18.12.07</h2>
            <div class="divider"><span></span></div>
            <p> Released on April 2023, this is the seventh and final release of the 18.12 series, that has been stabilized since December 2018.</p>
            <a href="https://www.apache.org/dyn/closer.lua/ofbiz/apache-ofbiz-18.12.07.zip" target="external" >Download OFBiz 18.12.07</a>
            <a href="https://downloads.apache.org/ofbiz/apache-ofbiz-18.12.07.zip.asc" target="external">[PGP]</a>
            <a href="https://downloads.apache.org/ofbiz/apache-ofbiz-18.12.07.zip.sha512" target="external">[SHA512]</a>
            <a href="https://downloads.apache.org/ofbiz/KEYS" target="external">[KEYS]</a>
            <a href="release-notes-18.12.07.html">[Release Notes]</a>

            <p><strong>We strongly encourage OfBiz users to report security problems affecting OFBiz to the private security mailing lists (either security@ofbiz.apache.org or security@apache.org),
             before disclosing them in a public forum. Please don't pack several vulnerabilities in the same report, send them one by one, thanks in advance.</strong></p>


            <p>Note that we no longer create CVEs for post-auth attacks done using demo credentials, notably using the admin user.
            <strong> <a href="https://s.apache.org/dsj2p"> Rather create bugs reports in our issue tracker (Jira) for that.</a><span style="color:red"> Please don't create Jira issues for unauth (aka pre-auth) reports, thanks in advance.</span></strong></p>


            <p>One of the reason we no longer create CVEs for post-auth attacks done using demo credentials is because
            <a href="https://nightlies.apache.org/ofbiz/trunk/readme/html5/#security" target="external"> we highly suggest to OFBiz users to not use credentials demo in production</a>
             and we expect OFBiz users to do so.
            <a href="https://cwiki.apache.org/confluence/display/OFBIZ/Keeping+OFBiz+secure" target="external"> We also warn our users on the "Keeping OFBiz secure wiki page".</a>
            And finally, mostly we reject post-auth vulnerabilities because we have a solid CSRF defense.</p>


            <h2>Earlier Releases</h2>
            <div class="divider"><span></span></div>
            <p>Older superseded releases of Apache OFBiz can be found in the <a href="//archive.apache.org/dist/ofbiz/" target="external">Apache OFBiz archive</a></p>
            <p>A description of each release in the history of OFBiz can be <a href="//downloads.apache.org/ofbiz/" target="external">found here</a></p>
        </div>
        </div>
      </div>
    </div>
  </section>

<!-- content -->
<!-- footer -->
<footer class="footer1">
  <div class="container" id="footer">
    <div class="row">
      <div class="span6 timelineWidget">
        <h2>Latest tweets</h2>
        <!--
        <div class="divider"><span></span></div>
        <ul class="socialNetwork nav">
          <li>
            <a href="//twitter.com/ApacheOfbiz" class="icon-twitter-bird socialIcon tips"
              target="external" title="follow us on Twitter"><span>twitter</span></a>
          </li>
          <li><a href="//www.youtube.com/user/ofbiz" class="icon-play socialIcon tips"  title="follow us on Youtube"><span>Youtube</span></a></li>
          <li><a href="//www.facebook.com/Apache-OFBiz-1478219232210477/?ref=page_internal" class="icon-facebook socialIcon tips"  title="follow us on Facebook"><span>facebook</span></a></li>
          <li><a href="#" class="icon-rss socialIcon tips"  title="Our rss feed"><span>rss feed</span></a></li>
          <li><a href="#" class="icon-gplus socialIcon tips"  title="follow us on Google +"><span>google +</span></a></li>
          <li><a href="#" class="icon-instagram socialIcon tips"  title="follow us on Instagram"><span>instagram</span></a></li>
          <li><a href="#" class="icon-linkedin socialIcon tips"  title="follow us on Linkedin"><span>linkedin</span></a></li>
          <li><a href="#" class="icon-pinterest-circled socialIcon tips"  title="follow us on Pinterest"><span>Pinterest</span></a></li>
        </ul>
        -->
        <div id="twitterFrame"> <a class="twitter-timeline" href="//twitter.com/ApacheOfbiz?height=250" data-widget-id="588661945194192896"  data-tweet-limit="2" data-theme="dark" data-chrome="nofooter noheader transparent" >Tweets by @ApacheOfbiz</a>
          <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
        </div>
      </div>
      <div class="span3 contactWidget">
        <h2>Contact Community</h2>
        <div class="divider"><span></span></div>
        <ul>
          <li><a href="mailing-lists.html">Mailing Lists</a></li>
          <li><a href="source-repositories.html">Source Repository (Git)</a></li>
          <li><a href="https://s.apache.org/dsj2p" target="external">Issue Tracker (Jira)</a></li>
          <li><a href="//www.youtube.com/user/ofbiz" target="external">OFBiz Youtube Channel</a></li>
          <li><a href="//vimeo.com/channels/apacheofbiz" target="external">OFBiz Vimeo Channel</a></li>
          <li>
            <a href="//s.apache.org/ofbiz-slack-channel" target="external">OFBiz Chat</a><br/>
            <span class="footer-note">
              Note: To chat with users and developers of Apache OFBiz.
              <br>Please create a Slack account using <a href="//s.apache.org/slack-invite" target="external">this invite link</a> and
              <a href="//s.apache.org/ofbiz-slack-channel" target="external">join the <b>#ofbiz channel</b>.</a>
              Please do <b>not</b> ask OFBiz questions in the #general channel.
            </span>
          </li>
        </ul>
      </div>
      <div class="span3 sociallWidget">
        <h2>ASF Information</h2>
        <div class="divider"><span></span></div>
        <ul>
          <li><a href="https://www.apache.org/foundation/" target="external">Apache Software Foundation</a></li>
          <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html" target="external">Privacy Policy</a></li>
          <li><a href="https://www.apache.org/events/current-event" target="external">Events</a></li>
          <li><a href="https://www.apache.org/foundation/sponsorship.html" target="external">Sponsorship</a>
          		and <a href="https://www.apache.org/foundation/contributing.html" target="external">Donations</a>
          </li>
          <li><a href="https://www.apache.org/foundation/thanks.html" target="external">Thanks</a></li>
          <li><a href="https://ofbiz.apache.org/security.html">Security</a></li>
          <li><a href="https://www.apache.org/licenses/" target="external">License</a></li>
        </ul>
      </div>
    </div>
  </div>
</footer>
<footer class="footer2" id="footerRights">
  <div class="container">
    <div class="row">
      <div class="span12">
        <p>
          Copyright © 2023 The Apache Software Foundation.
          <a href="https://www.apache.org/licenses/" target="external">Licensed under the  Apache License, Version 2.0</a>.<br/>
          Apache OFBiz, OFBiz, the project logo and the Apache feather logo are trademarks of <a href="https://www.apache.org/" target="external">The Apache Software Foundation.</a>
        </p>
      </div>
    </div>
  </div>
</footer>
<!-- footer -->
</div>
<!-- globalWrapper -->
<script type="text/javascript" src="js/plugins/respond/respond.min.js"></script>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="js/jquery-migrate-1.0.0.min.js"></script>
<script type="text/javascript" src="js/plugins/jquery-browser-plugin/jquery.browser.min.js"></script>
<!-- third party plugins  -->
<script type="text/javascript" src="bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap-carousel.js"></script>
<script type="text/javascript" src="js/plugins/easing/jquery.easing.1.3.js"></script>
<script type="text/javascript" src="js/plugins/pretty-photo/js/jquery.prettyPhoto.js"></script>
<script type="text/javascript" src="js/plugins/hoverdir/jquery.hoverdir.js"></script>
<!-- jQuery KenBurn Slider  -->
<script type="text/javascript" src="js/plugins/rs-plugin/js/jquery.themepunch.plugins.min.js"></script>
<script type="text/javascript" src="js/plugins/rs-plugin/js/jquery.themepunch.revolution.min.js"></script>
<!-- Custom  -->
<script type="text/javascript" src="js/custom.js"></script>
<!-- Matomo -->
<script type="text/javascript">
  var _paq = window._paq = window._paq || [];
  /* tracker methods like "setCustomDimension" should be called before
"trackPageView" */
  /* We explicitly disable cookie tracking to avoid privacy issues */
  _paq.push(['disableCookies']);
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="https://analytics.apache.org/";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', '21']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
  })();
</script>
<!-- End Matomo Code -->
</body>
</html>
