<?xml version="1.0"?>
<!--
    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.
-->
<chapter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="5.0" 
    xmlns:xl="http://www.w3.org/1999/xlink" 
    xmlns:xi="http://www.w3.org/2001/XInclude"
    xsi:schemaLocation="http://docbook.org/ns/docbook ../../content/dtd/docbook.xsd"
    xmlns="http://docbook.org/ns/docbook">

      
    <title><anchor xml:id="TheMarketingApplication"/>The Marketing Application.</title>

    <para>
        The marketing application is supporting you to create, select and follow sales opportunities
        in order to create sales orders for the company.
    </para>
    
    <section>
        <title>Marketing, CRM and SFA in Apache OFBiz, an overview.</title>
        <para>
            It is very much based on the party application as its source.
            Records from the party application are selected with only one basic reason: a possible sale in the future.
            That also means that records in the party manager should be complete, especially the role is pretty important.
            Not All roles, but at least 'lead' 'contact' and 'Account' should be defined. 
        </para>
    
    </section>

    <xi:include href="../data/helpdata/HELP_MARKETING.xml" />
    <xi:include href="../data/helpdata/HELP_SFA.xml" />
</chapter>
