<!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 - Release Notes 16.11.04</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
    ================================================== -->
<!-- Bootstrap  -->
<link type="text/css" rel="stylesheet" href="/bootstrap/css/bootstrap.min.css">
<!-- web font  -->
<link href="//fonts.googleapis.com/css?family=Open+Sans:400,300,800" rel="stylesheet" type="text/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#Documentation-End-UserDocumentation" 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="//ci.apache.org/projects/ofbiz/site/javadocs/" target="external" class="last">API Reference</a></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="//issues.apache.org/jira/browse/OFBIZ/?selectedTab=com.atlassian.jira.jira-projects-plugin:summary-panel" 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.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>
        </nav>
      </div>
    </div>
  </div>
</header>
<!-- header -->
<!-- globalWrapper -->
<div id="globalWrapper">
 <!-- page content -->
 <section id="content" class="fullWidth">
    <header class="headerPage">
      <div class="container clearfix">
        <div class="row">
          <h1 class="span8">Release Notes 16.11.04</h1>
      <div class="span4" id="navTrail"> <a href="index.html" class="homeLink">home</a><span>/</span><a href="download.html">Download</a><span>/</span><span class="current">Release Notes 16.11.04</span> </div>
        </div>
      </div>
    </header>
  <section id="content" class="features" >
  <div class="slice clearfix">
      <div class="container">
<div class="row">
  <div>
  <p>Apache OFBiz&reg; 16.11.04, released in 2018-01-02, is the fourth release of the 16.11 series, that has been stabilized since November 2016.</p>
<h2>Bugs</h2>
<ul>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-5938'>OFBIZ-5938</a>] -         GlAccountOrganizations manually added using accounting forms do not appear on trial report because fromDate gets set to NULL</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-6054'>OFBIZ-6054</a>] -         ofbizsetup cannot create first customer. problem with state/province dropdown</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-6774'>OFBIZ-6774</a>] -         ACCTG TRANS ENTRIES PDF link on invoiceOverview does not work</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-7253'>OFBIZ-7253</a>] -         UI issue on web pos for different themes</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-7438'>OFBIZ-7438</a>] -         Inventory Report PDF lists all available statusId&#39;s irrespective of selection criteria</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-8153'>OFBIZ-8153</a>] -         LabelManager doesn&#39;t search labels in .groovy files</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9143'>OFBIZ-9143</a>] -         The copyAgreement service fails</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9240'>OFBIZ-9240</a>] -         Ecommerce login/logout don&#39;t work properly for trunk and stable and even old</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9259'>OFBIZ-9259</a>] -         Uploading images at catalog/control/addImageForProduct does not work</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9316'>OFBIZ-9316</a>] -         Error displayed while adding WorkEffort Contact Mechs.</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9317'>OFBIZ-9317</a>] -         WorkEffort shows error on adding party with specific role to Timesheet.</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9344'>OFBIZ-9344</a>] -         Incorrect MimeTypeId value shown if the form is submitted</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9365'>OFBIZ-9365</a>] -         Screen rendering error on Content Advanced Search page</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9377'>OFBIZ-9377</a>] -         fix tag &quot;disable-if-empty&quot; in menus if field has no value</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9404'>OFBIZ-9404</a>] -         Insufficient checking of checkOutPaymentId in CheckOutEvents.getSelectedPaymentMethods</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9424'>OFBIZ-9424</a>] -         Typo in value of SfaAddSalesForecastDetail uiLabel in MarketingUiLabels.xml</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9426'>OFBIZ-9426</a>] -         The following required parameter is missing: [IN] [removeWebSitePathAlias.fromDate].</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9428'>OFBIZ-9428</a>] -         getResultsSizeAfterPartialList() return wrong count with distinct() for View Entity</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9432'>OFBIZ-9432</a>] -         Error running the simple-method: Error running groovy script</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9438'>OFBIZ-9438</a>] -         add gift certificate in purchase order cause exception</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9445'>OFBIZ-9445</a>] -         ContentWorker#findAlternateLocaleContent(Delegator, GenericValue, Locale) does not use fallback locale</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9446'>OFBIZ-9446</a>] -         https://localhost:8443/ecomseo/checkLogin exception</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9449'>OFBIZ-9449</a>] -         Missing secure port in URLs when sending mails</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9455'>OFBIZ-9455</a>] -         Required check missing for supplier product id and last price on Add Product Supplier page</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9456'>OFBIZ-9456</a>] -         Required check missing for Routing Task Name on Add Routing Task page</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9459'>OFBIZ-9459</a>] -         Wrong screen redirection after adding note on Lead profile screen</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9462'>OFBIZ-9462</a>] -         On create order, the page shows orderview screen, but Url does not change. It shows processorder.</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9468'>OFBIZ-9468</a>] -         UI issue in ATP/QOH table on Create Purchase Order screen</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9470'>OFBIZ-9470</a>] -         Missing productId in input field after Atp/Qoh button is clicked on create PO screen</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9473'>OFBIZ-9473</a>] -         Status of communication event role is marked &quot;Read&quot; on View Communication Event page.</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9477'>OFBIZ-9477</a>] -         UI issue in Lead Lookup on find opportunity</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9499'>OFBIZ-9499</a>] -         FacilityId should be mandatory for &quot;Create Inventory Item&quot; form in EditInventoryItem screen.</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9503'>OFBIZ-9503</a>] -         Fixed Asset Id field is below update button on EditInventoryItem page</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9525'>OFBIZ-9525</a>] -         MRP incorrectly computes quantity already received in open purchase order shipments</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9526'>OFBIZ-9526</a>] -         MRP generates duplicate requirements when items are initially under minimum quantity and have with pending approved purchase orders.</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9530'>OFBIZ-9530</a>] -         Missing action in empty if-statement in accounting.PaymentGatewayServices</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9532'>OFBIZ-9532</a>] -         Edit Party Group page does not shows current set values</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9535'>OFBIZ-9535</a>] -         Error in payment address for purchase invoice via service createinvoicefororder</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9542'>OFBIZ-9542</a>] -         Can&#39;t Create a new PartyAcctgPreference in 16.11.03</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9553'>OFBIZ-9553</a>] -         Creating Lead Source from profile page it redirects to empty profile page</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9578'>OFBIZ-9578</a>] -         Collection added to itself</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9606'>OFBIZ-9606</a>] -         LabelManager doesn&#39;t search labels in all elements in xml</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9621'>OFBIZ-9621</a>] -         MimeType displayed in HTML encoded pattern</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9623'>OFBIZ-9623</a>] -         Improvements in LabelReferences class</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9624'>OFBIZ-9624</a>] -         NullPointerException when calling EntityQuery#getFieldList</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9644'>OFBIZ-9644</a>] -         Fix references where Mime type is displayed in HTML encoded pattern</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9648'>OFBIZ-9648</a>] -         Deleting workeffort from Find WorkEffort page gives unusual response</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9655'>OFBIZ-9655</a>] -         Lead Profile missing if clicked on other menu</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9676'>OFBIZ-9676</a>] -         Error of GROUP BY in MSSQL</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9697'>OFBIZ-9697</a>] -         Create Related Account from Contact Profile redirect to empty profile screen.</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9698'>OFBIZ-9698</a>] -         Party Id field missing while creating contact list party in the marketing component</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9725'>OFBIZ-9725</a>] -         Transaction Timeout in JavaEventHandler</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9745'>OFBIZ-9745</a>] -         Labels messed up because of missing UiLabels</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9753'>OFBIZ-9753</a>] -         &#39;Find Opportunities&#39; field name is reflecting in place of &#39;Opportunity Id&#39; on FindSalesOpportunity screen.</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9838'>OFBIZ-9838</a>] -         Purchase Order is not getting canceled automatically if all items are canceled</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9896'>OFBIZ-9896</a>] -         Incorrect success message after creating prospect</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9899'>OFBIZ-9899</a>] -         UI Issue with Account Limit at Find Billing Account(s)</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9914'>OFBIZ-9914</a>] -         Issue in redirection while creating a new party group</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9915'>OFBIZ-9915</a>] -         Error printing Return PDF</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9922'>OFBIZ-9922</a>] -         Content related changes needs OFBiz server restart</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9964'>OFBIZ-9964</a>] -         UtilMisc.ensureLocale does not always return a valid Locale</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9967'>OFBIZ-9967</a>] -         In &#39;updateOrderContactMech&#39; service, A check should be added to call &#39;removeOrderContactMech&#39;.</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9968'>OFBIZ-9968</a>] -         Duplicated dollar symbols should be removed from uiLabels.</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9970'>OFBIZ-9970</a>] -         NullPointer Access in CategoryContentWrapper.getProductCategoryContentAsText when locale parameter is missing</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9971'>OFBIZ-9971</a>] -         Inventory transfer creates unnecessary record with 0</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9975'>OFBIZ-9975</a>] -         ShippingEvents.getShipGroupEstimate() method gives untraceable null pointer exception for BigDecimal comparison</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9977'>OFBIZ-9977</a>] -         While creating return fin account used currency must be same</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-10007'>OFBIZ-10007</a>] -         Party Classification Groups are not listing on FindParty screen.</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-10010'>OFBIZ-10010</a>] -         No option to create the account contacts in SFA component</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-10027'>OFBIZ-10027</a>] -         Improvements in gift certificate process</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-10037'>OFBIZ-10037</a>] -         Creating an example from the Ajax screen does not work</li>
</ul>
                                        
<h2>Improvements</h2>
<ul>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9675'>OFBIZ-9675</a>] -         Use ofbizCurrency macro and remove hardcoded ##0.00 string</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9862'>OFBIZ-9862</a>] -         Improve Rainbow theme showing themes</li>
</ul>
                                                                                                
<h2>Sub-tasks</h2>
<ul>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9529'>OFBIZ-9529</a>] -         [FB] Package org.apache.ofbiz.accounting.payment (Additional Bugs)</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-9567'>OFBIZ-9567</a>] -         [FB] Package org.apache.ofbiz.base.metrics</li>
<li>[<a href='//issues.apache.org/jira/browse/OFBIZ-10085'>OFBIZ-10085</a>] -         Prevent the possible return of the Robot attack</li>
</ul>
  </div>
</div>
</div>
</div>
</section>
</section><!-- 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="//issues.apache.org/jira/browse/OFBIZ" 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://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 © 2020 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.8.2.min.js"></script>
<script type="text/javascript" src="js/plugins/jquery-ui/jquery-ui-1.8.23.custom.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>
<script type="text/javascript">
    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', UA]);
    _gaq.push(['_trackPageview']);

    (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
    })();
</script>
</body>
</html>
