<?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>Edit a contact list.</title>
    <para>
        This screen enables you to edit an existing contactlist or create a new one. Below an explanation of the fields
    </para>
    <section>
        <title>Contact list fields.</title>
        <para>ContactList Id   : The unique id of the contact list</para>
        <para>ContactList Name : The name of the contactlist</para>
        <para>ContactList Type : The type of the contactlist</para>
        <para>Is Public ?      : </para>
        <para>Is Single Use ?  : If set to &apos;Y&apos; all parties of this contactlist will be deleted after sending the email.</para>
        <para>Contact Mech type: the contact type like email, postal address etc.</para>
        <para>Marketing Campaign Name : The marketing campaign name</para>
        <para>Owner Party Id:</para>
        <para>Verify Email From:</para>
        <para>Verify Email Screen:</para>
        <para>Verify Email Subject:</para>
        <para>Verify Email WebSite Id:</para>
        <para>Opt Out Screen:</para>
    </section>
</section>

