Sie sind auf Seite 1von 24

DocEngine for SAP Business One

- User’s Manual v1.0

© Profiz Business Solution Oyj 2005

Author: Henry Nordström

Version: 1.0
1 OVERVIEW ...................................................................................................................1

1.1 THE TARGET AUDIENCE OF DOCENGINE ..................................................................1


1.2 FLAVORS OF DOCENGINE ........................................................................................1

2 INSTALLATION............................................................................................................3

2.1 PRE-INSTALLATION REQUIREMENTS ........................................................................3


2.2 INSTALLING THE APPLICATION .................................................................................4
2.3 THE LICENSE REGISTRATION PROCESS......................................................................5

3 USING THE APPLICATION .......................................................................................8

3.1 INTERACTIVE MODE .................................................................................................8


3.2 BATCH MODE ..........................................................................................................9

4 USING THE MAIN FUNCTIONS..............................................................................10

4.1 LOGGING IN ...........................................................................................................10


4.2 INITIALIZING THE DATABASE .................................................................................10
4.3 EXPORTING DOCUMENTS .......................................................................................10
4.4 IMPORTING DOCUMENTS ........................................................................................11
4.5 LOGGING OUT AND EXITING THE APPLICATION ......................................................11
4.6 RELOAD SETTINGS .................................................................................................11

5 CONFIGURATIONS REQUIRED IN SAP BUSINESS ONE .................................12

5.1 THE CHALLENGE OF INTER-COMPANY INTEGRATION .............................................12


5.2 CHECKLIST FOR BUSINESS PARTNER AND BANKING DATA ......................................12
5.3 CHECKLIST FOR ITEM MASTER DATA ......................................................................13

6 MODIFYING THE CONFIGURATION FILES.......................................................14

6.1 DOCENGINE.XML ...................................................................................................14


6.2 EXPORT TEMPLATES...............................................................................................16
6.3 IMPORT SPECIFICATIONS ........................................................................................17

7 TROUBLESHOOTING ...............................................................................................19

7.1 VIEWING THE APPLICATION LOG ............................................................................19


7.2 CHANGING THE LOGGING LEVEL ............................................................................20
7.3 KNOWN OBSCURE DI API ERROR MESSAGES AT LOGIN ..........................................20

8 SUGGESTED READINGS..........................................................................................21

APPENDIX A – THE APACHE SOFTWARE LICENSE.................................................22


1 Overview

DocEngine is a flexible integration tool designed specifically for SAP


Business One. It enables the transmission of electronic business documents to
and from SAP Business One. When using DocEngine, the whole integration
process can be done by means of configuration settings instead of
programming. This will make the integration process more straightforward
and significantly faster. DocEngine is also extremely flexible – simply by
changing the configuration files, the application can be made to support a
wide variety of import and export formats.

Figure 1. DocEngine overview

1.1 The target audience of DocEngine

DocEngine is an expert tool. While operating a preconfigured DocEngine


installation can be done by virtually any computer-literate end-user, making
the configurations requires at least some understanding about the basics of
the underlying technologies, such as XML and the DI API. However, the
configuration of DocEngine should appear rather straightforward and
intuitive for a seasoned SAP Business One technical consultant.

1.2 Flavors of DocEngine

DocEngine comes in two flavors: Lite and Pro. The Lite version is
distributed freely to Finnish SAP Business One resellers and customers (for
use in Finland only). The Lite version, however, is somewhat limited in
functionality. While the basic functionality is the same in both versions, the
Lite version is only capable of exporting sales invoices and sales credit

1
invoices as well as importing purchase invoices and purchase credit invoices
in Finvoice format. The Lite version supports a maximum of two import
specifications and two export specifications. DocEngine Pro can handle any
type of sales or purchase document (which is supported in the DI API) and
supports an unlimited number of import and export specifications. Future
versions of DocEngine Pro will also allow importing and exporting journal
entries, masterdata etc.

2
2 Installation

2.1 Pre-installation requirements

DocEngine is compatible with all the Windows versions that SAP Business
One supports. Currently supported SAP Business One versions are SAP
Business One 6.5 and 2004. For database server, only Microsoft SQL Server is
currently supported.

There are separate DocEngine versions for SAP Business One 6.5 and 2004.

PLEASE NOTE!

While the 6.5 version can also be used with SAP Business One 2004
(with the compatibility license and DI API intact), please remember
that also the limitations of DI API 6.5 apply in this case. These
limitations include i.a. the inability to set the payment reference code
when importing purchase invoices.

As a prerequisite for installing DocEngine, you will need to have the .NET
framework version 1.1 installed on the computer. If you are installing from the
distribution CD, the setup program will automatically install .NET framework,
if it not already installed. If you have downloaded the installation package
from the Docengine support website, the installation application will inform
you if the .NET framework has not been installed and discontinue installation.
You can check if the .NET framework has been installed by selecting “Start-
Settings-Control Panel-Add or Remove Programs”. If the .NET Framework is
installed, you will find “Microsoft .NET Framework 1.1” from the list of
currently installed programs.

The .NET framework installation package is freely available from the


Microsoft website (http://www.microsoft.com). Please consult the installation
instructions that follow the dotnetfx.exe installation package.

Additionally, you will need to install a version of the SAP Business One
Data Interface API that is compatible with your SAP Business One

3
installation. Please consult SAP for getting the correct installation package
and installation instructions for DI API.

2.2 Installing the application

The application itself is distributed as a Windows installer package, either


on CD or as a zip-file that can be downloaded from the DocEngine support
site. The installation is started simply by double-clicking the file named
Setup.exe.

Step 1. The initial setup screen

Step 2. Select the installation folder

4
Step 3. Confirm installation

Step 4. Installation complete

2.3 The license registration process

In order to activate the application, you will need to apply for a license key
from your SAP reseller. In order to get the license key, please make sure you
have the following information at hand:

• The installation key (user data). This information is provided to you by


DocEngine at startup if it has not been registered yet.

• The OS version and service pack level of the computer where you
installed DocEngine.

5
• The contact information (email address and telephone number) for the
person who will be the main contact person regarding DocEngine in
your company.

When you receive the license key, you will need to supply the license key
information into the registration dialog of DocEngine. Also the name field
must be filled in with exactly the same name as the name that was supplied to
Profiz when requesting the license key.

Step 1. Start DocEngine from the Start-Programs-SAP Business One menu

Step 2. Select DocEngine.dat and click Register

Step 3. Retrieve the license key from DocEngine support

6
Step 4. Register the application (automatic)

Step 5. Registration complete

After a successful registration, your DocEngine installation is ready for use.

7
3 Using the application

The application supports two different modes: interactive mode and batch
mode. In interactive mode, the application functions as a normal Windows
application. The purpose of the batch mode is to enable running the
application as a scheduled background process that can be started from the
command-line interpreter. The application itself does not include a scheduling
service, but instead it can be called by the Scheduler service of Microsoft
Windows (or by another similar scheduling service).

3.1 Interactive mode

To start the application in interactive mode, simply click DocEngine.Exe in


Windows Explorer or leave all the parameters away when calling
DocEngine.exe from the command prompt. This will display a main form like
the one shown below.

Figure 2. The DocEngine user interface

8
If you are familiar with Data Transfer Workbench (DTW), you will certainly
notice the similarity between the user interface of DocEngine with DTW. This
similarity should make the user interface very intuitive for existing SAP
Business One consultants, most of whom have at least seen the Data Transfer
Workbench.

3.2 Batch Mode

The application can be started in batch mode from the command line by
calling DocEngine.exe. The only available parameters are the batch type
(import or export) and the name of the document specification (as specified in
the configuration file DocEngine.xml) that identifies the documents and the
format that should be used in the batch.

Import:

DocEngine.exe -imp %specification%

Export:

DocEngine.exe -exp %specification%

For instance, to export documents according to a specification named


”Finvoice”, the following command should be used:

DocEngine.exe -exp Finvoice

DocEngine returns an errorlevel that corresponds to the success or failure


of the batch – this value can be used by the command line batch file that
initiated the DocEngine batch.

The errorlevels are as follows:

0 - Transfer was successful.

50 - No errors found, but no documents were


found with the selection criteria.
100 - Errors while processing the documents.

9
4 Using the main functions

4.1 Logging in

To log in to a company database, simply click the “Log on” button in the
taskbar. This will open a login form, prefilled with the user id and IP address
used in the previous session. If this is the first time you are logging in, you will
also need to set the correct IP address for the database server as well as the
user id you wish to use. After setting the IP address, you should click the
refresh button next to the database selection field. This will retrieve the list of
available databases from the server. After selecting the correct database,
simply click the “OK” button to initiate the login process.

PLEASE NOTE! In some cases, the “use trusted” login method might not
work (for a number of reasons, such as the corruption of user data for the
“OBSCommon” user in the database server). To circumvent these problems,
you might want to deselect the “use trusted” checkbox. This will enable the
server userid and server password fields, which should be filled with a valid
SQL Server userid and password.

4.2 Initializing the database

When DocEngine is first taken in use with a new database, you will need to
let DocEngine create some user defined fields in SAP Business One in order to
enable the export functionality. This is done by first logging in to the database
(as described in chapter 6.1) and then selecting the function “Advanced-
Initialize database”.

4.3 Exporting documents

The export wizard is started by clicking the “Export” button in the toolbar
(if you are not logged on, this button will be disabled). In the first dialog of the
wizard, you get to select the export specification you wish to use in the export.
Additionally, you can select to do the export as a batch or by selecting
manually the documents to export.

10
When selecting the batch mode, you are given a chance to change the
default settings for the batch run before starting it. In the select mode, you can
select one by one the documents you wish to export.

4.4 Importing documents

The import wizard is started by clicking the ”Import” button in the toolbar
(if you are not logged on, this button will be disabled). In the first dialog of the
wizard, you get to select the import specification you wish to use in the import.
Additionally, you can select to do the import as a batch or by selecting
manually the documents to import.

When selecting the batch mode, you are given a chance to change the
default settings for the batch run before starting it. In the select mode, you can
select one by one the documents you wish to import. Additionally, you can
select to import the documents as draft documents or actual documents.

4.5 Logging out and exiting the application

To exit the application, simply select File-Exit or close the main window.

4.6 Reload settings

If you are modifying any of the configuration files for DocEngine and wish
to reflect these changes in DocEngine without restarting the application, you
can use the “Reload settings” function which is found in the “Advanced”
menu. If you are logged in to a database while doing this, you will be
automatically be logged off.

11
5 Configurations required in SAP Business One

5.1 The challenge of inter-company integration

Inter-company business process integration is a challenging task, even


when armed with a robust and flexible tool such as DocEngine. There is more
to inter-company integration than just being able to technically export or
import the files and route the resulting files over a network. The main
challenge comes from the fact that the systems need to have a common
understanding on both the structure of the documents and the meaning of the
actual content of the documents being transmitted. Official or de facto
standards such as XML, ebXML and Finvoice together with the integration
tools such as DocEngine solve the main problems regarding the document
structure. However, in order to process the contents of the documents, both
the sender and receiver need to be able to harmonize the master data
identifiers such as Business Partner codes (because of standardized VAT
codes, this is usually simple) and item codes. There is no technical tool that
can do all this on behalf of the parties: the harmonization of master data
between the parties is a business process issue rather than a technical issue.

5.2 Checklist for business partner and banking data

The correct operation of DocEngine is heavily dependent on the


configuration settings of SAP Business One. There are several items that have
to be correctly set in order for DocEngine to work.

In Business Partner master data records, the VAT Number field


(LicTradNum in database) needs to be set to the exact value that is being used
to identify the supplier when importing purchase documents. With the default
configuration (for Finvoice), DocEngine will be looking for the master data
identifier from the field “SellerPartyDetails/SellerOrganisationTaxCode” in
the Finvoice document.

In order for generating the bank-related fields of Finvoice documents in


export, you need to make sure that the bank information for your own bank
accounts is completely and correctly specified.

12
For correct export of the SWIFT identifier in the ePI (electronic payment
initiator) the “SWIFT No” must be specified for all bank branches and
accounts that are referred to in the export. This is done in the Administration-
Definitions-Banking-Define Banks dialog in SAP Business One.

For producing the ePI, also the house bank (specified in the Payment
System tab of the business partner record in SAP Business One) needs to be
correctly set. This information is also used in producing the virtual bank bar
code.

5.3 Checklist for item master data

Item codes are perhaps the most challenging issue in the whole integration
process. When exporting documents, the default Finvoice export
configuration will place the SAP Business One item code in the
“InvoiceRow/ArticleIdentifier” field. If there is an alternative item code
(partner catalog number) specified for the item and customer in question, this
will be placed in “InvoiceRow/BuyerArticleIdentifier”. If there is no
alternative item code specified, both “ArticleIdentifier” and
“BuyerArticleIdentifier” will carry the same value. In this case, the receiver
will have to be able to identify the same item code that is being used in the
sending system.

When importing documents, items will be identified by the field


“InvoiceRow/BuyerArticleIdentifier”. This value needs to be a valid item code
in SAP Business One.

13
6 Modifying the configuration files

There are three kinds of configuration files: the main parameter file
docengine.xml plus a number of export templates and import specifications.
DocEngine.xml is located in the etc folder, which is found below the
installation folder of the application. The export templates are located in the
etc\templates folder and the import specifications are located in the
etc\importspecs folder.

6.1 Docengine.xml

Docengine.xml contains the following information:

• Basis system information as well as login information for enabling


batch-mode operation (if this information is added, please make sure
that the file is secure, as it contains confidential information).
<System>
<host>127.0.0.1</host>
<db>Demo2</db>
<user>manager</user>
<userpwd>manager</userpwd>
<usetrusted>false</usetrusted>
<dbuser>sa</dbuser>
<dbpwd></dbpwd>
<templateengineproperties>etc\nvelocity.properties</templateengineproperties>
<loglevel>INFO</loglevel>
</System>
System information

• Basic information about each export specification currently defined


(with pointers to the actual export templates)
<export>
<name>Finvoice</name>
<type>oInvoices</type>
<query>
select docentry,docnum,cardcode,cardname,doctotal,docduedate from oinv
where docstatus='O' and (u_pfz_tr is null or u_pfz_tr='')
</query>
<header>
<templatefile>routeTemplate.vm</templatefile>
<targetfolder>outbox\</targetfolder>
<prefix>header_</prefix>
<variable>DocNum</variable>
<suffix>.xml</suffix>
</header>

<body>
<templatefile>FinvoiceTemplate.vm</templatefile>
<targetfolder>outbox\</targetfolder>
<prefix>finvoice_export_</prefix>
<variable>DocNum</variable>
<suffix>.xml</suffix>
</body>
</export>
An example of an export specification

14
Please note the <query> tags, which contain the query that is used for
selecting the documents to export. In batch mode, all the documents that
match the query will be exported. In interactive mode, the documents found
will be displayed and you can choose which documents will actually be
exported.

The <header> part is only used in DocEngine Pro. The Lite version does not
support separate header files.

• Basic information about each import specification


<import>
<name>Finvoice</name>
<type>oPurchaseInvoices</type>
<draft>true</draft>
<doctypeidentifier>InvoiceDetails/InvoiceTypeCode</doctypeidentifier>
<rowpath>InvoiceRow</rowpath>
<specfile>etc\importspecs\imp_finvoice.xml</specfile>
<sourcefolder>inbox\</sourcefolder>
<prefix>Finvoice_</prefix>
<suffix>.xml</suffix>
<processedfolder>inbox\Processed\</processedfolder>
<errorfolder>inbox\errors\</errorfolder>
</import>
An example of an import specification

• Definitions of conversions, that can be of type “simple” (consisting of


straight input-result pairs) or “query”(a sql query will be processed with
the given parameters). In the sample below, you can see a
straightforward value-to-code conversion that can be used for
converting the tax percent value in a Finvoice document into a tax group
code used internally by SAP Business One. For instance, if the Finvoice
document has ‘22’ as tax percentage, ‘S1’ will be used as the tax group
identifier for the invoice in SAP Business One.
<conversion>
<name>PurchaseVatGroup</name>
<type>simple</type>
<item>
<original>22</original>
<converted>S1</converted>
</item>
<item>
<original>17</original>
<converted>S2</converted>
</item>
<item>
<original>8</original>
<converted>S3</converted>
</item>
<item>
<original>0</original>
<converted>S0</converted>
</item>
</conversion>
An example of a simple conversion specification

15
The following conversion example shows a query conversion that retrieves
the internal business partner identifier of SAP Business One based on the VAT
ID of the company as specified in the Finvoice document.
<conversion>
<name>Supplier_CardCode_from_TaxID</name>
<type>query</type>
<query>
select cardcode as $0 from ocrd where lictradnum='$1' and cardtype='S'
</query>
</conversion>
An example of a query conversion

6.2 Export templates

The export templates are located in \etc\DocEngine\templates. Some of


the templates in the folder are used by the application for internal purposes
and should not be touched:

• Lastlogin.vm

• Log4net.vm

• VM_global_library.vm

The export template for Finvoice is called FinvoiceTemplate.vm.

Below is a small snippet from the Finvoice export template:


<BuyerPartyDetails>
<BuyerPartyIdentifier>$doc.get("header","CardCode")</BuyerPartyIdentifier>
<BuyerOrganisationName>$doc.get("header","CardName")</BuyerOrganisationName>
<BuyerPostalAddressDetails>
<BuyerStreetName>$doc.get("BP","Address")</BuyerStreetName>
<BuyerTownName>$doc.get("BP","City")</BuyerTownName>
<BuyerPostCodeIdentifier>
$doc.get("BP","ZipCode")
</BuyerPostCodeIdentifier>
</BuyerPostalAddressDetails>
</BuyerPartyDetails>
Sample snippet from the Finvoice export template

A you can see, the export template is a ’skeleton’ of the actual document to
be exported. It contains both fixed parts as well as dynamic parts which are
populated during the export process. The dynamic parts use a special syntax
that is based on the Velocity Template Language (VTL).

The most often used method in DocEngine templates is:


$doc.get([object],[field])

16
This method takes two parameters: the object and the field. The object
parameter is a handle to a logical object created by DocEngine at runtime just
before the export. These handles include the following:

• header – the document header

• rows – the document rows

• BP – the business partner

• BPEmployee – the contact person of the business partner

• Company – your own company

There are also some other methods in addition to the basic $doc.get method.
For instance, it is possible to add a third parameter to the method call that
defines a type conversion that must be done for the field in question. For
instance, the method call $doc.get(“header”,”DocDueDate”,”date”) will return the
contents of the DocDueDate formatted in the Finvoice date format
(YYYYMMDD).

The $doc.getConverted([object],[field],[conversion]) call will return the results


of feeding the contents of the desired field into a conversion function. For
instance, in order to get a textual description of a payment method, it is
required to retrieve the numeric identifier of the payment method from the
document and then retrieve the textual description from the database using a
query-based conversion.

6.3 Import specifications

The import specifications are used to specify the fields that are to be
populated in the target document, as well as the position of the desired data in
the XML document that is being processed. It is also possible to define various
types of conversions for a field. The conversions are defined in DocEngine.xml
and they are referred by name from the import specification.

The import specifications are located in etc\importspecs. The import


template for Finvoice is called imp_finvoice.xml. The following sample
displays a minimal import specification that can be used for importing a

17
Finvoice document received from the supplier as a purchase invoice into SAP
Business One.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Import>
<Import>
<header>
<Instruction>
<memberName>CardCode</memberName>
<memberDataType>string</memberDataType>
<xPath>SellerPartyDetails/SellerOrganisationTaxCode</xPath>
<conversion>Supplier_CardCode_from_TaxID</conversion>
<mandatory>true</mandatory>
</Instruction>
<Instruction>
<memberName>DocDueDate</memberName>
<memberDataType>date</memberDataType>
<xPath>InvoiceDetails/PaymentTermsDetails/InvoiceDueDate</xPath>
<mandatory>true</mandatory>
</Instruction>
</header>
<rows>
<rowPath>InvoiceRow</rowPath>
<Instruction>
<memberName>ItemCode</memberName>
<memberDataType>string</memberDataType>
<xPath>BuyerArticleIdentifier</xPath>
<mandatory>true</mandatory>
</Instruction>
<Instruction>
<memberName>Price</memberName>
<memberDataType>double</memberDataType>
<xPath>UnitPriceAmount</xPath>
<mandatory>true</mandatory>
</Instruction>
<Instruction>
<memberName>Quantity</memberName>
<memberDataType>int</memberDataType>
<xPath>DeliveredQuantity</xPath>
<mandatory>true</mandatory>
</Instruction>
<Instruction>
<memberName>VatGroup</memberName>
<memberDataType>string</memberDataType>
<xPath>RowVatRatePercent</xPath>
<conversion>AP_taxcode</conversion>
<mandatory>false</mandatory>
</Instruction>
</rows>
</Import>
Sample import specification

18
7 Troubleshooting

7.1 Viewing the application log

If you have trouble with processing documents and the error messages
provided by the user interface do not give you enough information to solve the
problem, the first thing to do is to check the log file. Each time DocEngine is
started (or reinitialized in interactive mode), a new log file is created. These
log files are stored in the folder “\etc\DocEngine\logs”. The name of each log
file is determined by the time when the application was started. For instance,
if the application is started on January 12, 2005 at 09:38:59.11 (the last two
digits being the 1/100ths of a second), the name of the file will be
“docengine_log_2005011209385911.log”. With the default settings, the log
will contain only minimal information about successful operations plus more
detailed information about critical errors. However, DocEngine can be set to
operate in “debug” mode and to write a more detailed log (please see the
troubleshooting chapter for more details about this). This is helpful in tracing
the causes of possible trouble scenarios.

When using the batch mode, the only way to see these logs is to go into the
log folder and open the log files one by one in a text editor of choice. In the
interactive mode, logs can viewed directly from the DocEngine user interface.
Simply click the “log files” button and a log selection window will open. This
window displays by default a list of all log files from the current day, with the
latest (recent) log file pre-selected. If you wish to view log files for another
day, just select a different date in the date selection field located on the top of
the log list.

To view the selected log, click the “Display” button. This will open another
form that displays the contents of the log file. You can leave this window open
in the background while running exports and imports. By clicking the
“Refresh” button, you will see the most recent changes in the log file.

19
7.2 Changing the logging level

You can change the logging level by setting the loglevel value in
DocEngine.xml. The relevant values are “INFO”, “DEBUG”, “WARN” and
“ERROR”. For instance, the “ERROR” log level will only make a minimal log
that records actual error situations. “DEBUG”, on the other hand, makes a
detailed log about all the operations done during the session.

7.3 Known obscure DI API error messages at login

There are some obscure DI API error messages you might encounter in the
login process. Many possible error situations return a reasonable error
message that clearly points out the source of the error. However, there are
also some exceptional cases where the error message returned from the DI
API is less informative.

• An ”ODBC -2028” error can occurs in some special situations, such


as after the yearshift, if the periods for the new year have not been
created yet.

• The notorious “-2147024891” error message can arise for a number


of reasons, some of which have been documented in the SDN and in
the Service Marketplace. Typically, this error has something to do
with the license server. However, if you do get this error message in
DocEngine, it is likely that you can not log in to SAP Business One
either from the same workstation.

• The “100000008” error message occurs, if you don’t have the


Compatibility license installed in SAP Business One 2004. In this
case, you will also be unable to use other applications that rely on the
DI API (such as the Data Transfer Workbench).

20
8 Suggested Readings

The following documents are valuable material for understanding and


unleashing the true power of DocEngine:

• Velocity Template Language Reference Guide

http://jakarta.apache.org/velocity/vtl-reference-guide.html

• SAP Business One Data Interface API (DI API) Reference

• Any document describing the use of XPath, for instance:

http://www.developer.com/net/net/article.php/3383961

For more information about the Finvoice standard and ebXML, please
see the following websites:

• Finvoice www-pages provided by the Finnish Bankers’ Association

http://www.fba.fi/finvoice/

• The ebXML site hosted by OASIS:

http://www.ebxml.org

21
Appendix A – the Apache Software License

DocEngine includes software components developed by the Apache


Software Foundation (http://www.apache.org/)." These components are
being distributed under the following license statement:
The Apache Software License, Version 1.1

Copyright (c) 2000-2001 The Apache Software Foundation. All rights


reserved.

Redistribution and use in source and binary forms, with or without


modification, are permitted provided that the following conditions
are met:

1. Redistributions of source code must retain the above copyright


notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright


notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.

3. The end-user documentation included with the redistribution, if


any, must include the following acknowledgement:
"This product includes software developed by the
Apache Software Foundation (http://www.apache.org/)."
Alternately, this acknowledgement may appear in the software itself,
if and wherever such third-party acknowledgements normally appear.

4. The names "The Jakarta Project", "Velocity", and "Apache Software


Foundation" must not be used to endorse or promote products derived
from this software without prior written permission. For written
permission, please contact apache@apache.org.

5. Products derived from this software may not be called "Apache",


"Velocity" nor may "Apache" appear in their names without prior
written permission of the Apache Group.

THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED


WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.

This software consists of voluntary contributions made by many


individuals on behalf of the Apache Software Foundation. For more
information on the Apache Software Foundation, please see
<http://www.apache.org/>.

22

Das könnte Ihnen auch gefallen