Index: main/waeup.kofa/trunk/src/waeup/kofa/applicants/interfaces.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/applicants/interfaces.py	(revision 13971)
+++ main/waeup.kofa/trunk/src/waeup/kofa/applicants/interfaces.py	(revision 13972)
@@ -628,2 +628,30 @@
         """Approve payment and process applicant.
         """
+
+class IApplicantRefereeReport(IKofaObject):
+    """A referee report.
+    """
+
+    r_id = Attribute('Report identifier')
+
+    name = schema.TextLine(
+        title = _(u'Name'),
+        required = True,
+        )
+
+    email = schema.ASCIILine(
+        title = _(u'Email Address'),
+        required = False,
+        constraint=validate_email,
+        )
+
+    phone = PhoneNumber(
+        title = _(u'Phone'),
+        description = u'',
+        required = False,
+        )
+
+    report = schema.Text(
+        title = _(u'Report'),
+        required = False,
+        )
Index: main/waeup.kofa/trunk/src/waeup/kofa/applicants/refereereport.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/applicants/refereereport.py	(revision 13972)
+++ main/waeup.kofa/trunk/src/waeup/kofa/applicants/refereereport.py	(revision 13972)
@@ -0,0 +1,59 @@
+## $Id: applicant.py 13968 2016-06-22 04:39:50Z henrik $
+##
+## Copyright (C) 2016 Uli Fouquet & Henrik Bettermann
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+##
+import os
+import grok
+from zope.component import getUtility, createObject, getAdapter
+from zope.component.interfaces import IFactory
+from zope.event import notify
+from zope.securitypolicy.interfaces import IPrincipalRoleManager
+from zope.interface import implementedBy
+from zope.schema.interfaces import RequiredMissing, ConstraintNotSatisfied
+from hurry.workflow.interfaces import IWorkflowInfo, IWorkflowState
+from waeup.kofa.interfaces import IKofaUtils
+from waeup.kofa.interfaces import MessageFactory as _
+from waeup.kofa.utils.helpers import attrs_to_fields
+from waeup.kofa.applicants.interfaces import IApplicantRefereeReport
+
+
+class ApplicantRefereeReport(grok.Model):
+    """This is referee report.
+    """
+    grok.implements(IApplicantRefereeReport)
+    grok.provides(IApplicantRefereeReport)
+
+    def __init__(self):
+        super(ApplicantRefereeReport, self).__init__()
+        self.r_id = None
+        return
+
+ApplicantRefereeReport = attrs_to_fields(ApplicantRefereeReport)
+
+
+class ApplicantRefereeReportFactory(grok.GlobalUtility):
+    """A factory for applicant online payments.
+    """
+    grok.implements(IFactory)
+    grok.name(u'waeup.ApplicantRefereeReport')
+    title = u"Create a new referee report.",
+    description = u"This factory instantiates new referee report instances."
+
+    def __call__(self, *args, **kw):
+        return ApplicantRefereeReport()
+
+    def getInterfaces(self):
+        return implementedBy(ApplicantRefereeReport)
Index: main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_refereereport.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_refereereport.py	(revision 13972)
+++ main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_refereereport.py	(revision 13972)
@@ -0,0 +1,75 @@
+## $Id: test_payment.py 10030 2013-03-17 08:40:59Z henrik $
+##
+## Copyright (C) 2011 Uli Fouquet & Henrik Bettermann
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+##
+"""Tests for application payments.
+
+"""
+import unittest
+from zope.interface import verify
+from zope.component import createObject
+from waeup.kofa.applicants.refereereport import (
+    ApplicantRefereeReport, ApplicantRefereeReportFactory)
+from waeup.kofa.applicants.interfaces import IApplicantRefereeReport
+from waeup.kofa.testing import (FunctionalLayer, FunctionalTestCase)
+
+
+class ApplicantRefereeReportTest(FunctionalTestCase):
+
+    layer = FunctionalLayer
+
+    def setUp(self):
+        super(ApplicantRefereeReportTest, self).setUp()
+        self.report = createObject(u'waeup.ApplicantRefereeReport')
+        self.report.r_id = 'my_report'
+        self.applicant = createObject(u'waeup.Applicant')
+        self.applicant[self.report.r_id] = self.report
+        return
+
+    def tearDown(self):
+        super(ApplicantRefereeReportTest, self).tearDown()
+        return
+
+    def test_interfaces(self):
+        # Make sure the correct interfaces are implemented.
+        self.assertTrue(
+            verify.verifyClass(
+                IApplicantRefereeReport, ApplicantRefereeReport)
+            )
+        self.assertTrue(
+            verify.verifyObject(
+                IApplicantRefereeReport, ApplicantRefereeReport())
+            )
+        return
+
+    def test_report(self):
+        self.assertEqual(self.applicant['my_report'], self.report)
+        return
+
+
+class ApplicantRefereeReportFactoryTest(unittest.TestCase):
+
+    def setUp(self):
+        self.factory = ApplicantRefereeReportFactory()
+        return
+
+    def test_factory(self):
+        obj = self.factory()
+        assert isinstance(obj, ApplicantRefereeReport)
+
+    def test_getInterfaces(self):
+        implemented_by = self.factory.getInterfaces()
+        assert implemented_by.isOrExtends(IApplicantRefereeReport)
