<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->
<section 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>Find Employee Positions</title>

	<para>An Employee Position is the authorization, typically from the budget of an 
	internal organization,for the Company to engage someone to do a job. </para>

    <para>This means that you can fill a position in a number
    of different ways. </para>
   
    <para>You can fill a position with one full time person, change the assignment of 
    a position from one person to another over time, or split a position across
    more then one person at the same a time.</para>
   
    <para>Positions have a status. They can be one of: Planned For,
    Active/Open, or Inactive/Closed.</para>

    <para>Positions have a type, defined in Global HR Settings, which
    describes the job and its pay rates. Some examples of job types could be
    secretary, production worker, sales manager, executive vice president or
    OFBiz programmer.</para>
    <para> If more then one person is needed for a type of job then
    a position must be created for each required person i.e. If 10 secretaries
    are authorized for the Human Resource department then 10 positions are
    created with type secretary.</para>

    <para>Positions have a reporting structure and report to other
    positions (and not the people who hold the position). </para>
    <para>You can identify the
    position a position reports to and/or the positions(s) a position
    manages.</para>

    
      <para>NOTE: Be careful because it is possible to create circular reporting
      structures.</para>
    
       
</section>
