Index: /main/waeup.kofa/trunk/src/waeup/kofa/applicants/payment.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/applicants/payment.py	(revision 8702)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/applicants/payment.py	(revision 8703)
@@ -27,4 +27,5 @@
 from waeup.kofa.interfaces import MessageFactory as _
 from waeup.kofa.payments import OnlinePayment
+from waeup.kofa.payments.interfaces import IPaymentWebservice
 from waeup.kofa.applicants.interfaces import IApplicantOnlinePayment
 from waeup.kofa.utils.helpers import attrs_to_fields
@@ -74,10 +75,15 @@
         return self.doAfterApplicantPaymentApproval()
 
-    def getOwner(self):
-        """Return applicant.
-        """
-        return self.__parent__
+ApplicantOnlinePayment = attrs_to_fields(ApplicantOnlinePayment)
 
-ApplicantOnlinePayment = attrs_to_fields(ApplicantOnlinePayment)
+class PaymentWebservice(grok.Adapter):
+    """An adapter to publish applicant data through a webservice.
+    """
+    grok.context(IApplicantOnlinePayment)
+    grok.implements(IPaymentWebservice)
+
+    @property
+    def payee(self):
+        return self.context.__parent__.display_fullname
 
 # Applicant online payments must be importable. So we might need a factory.
Index: /main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_browser.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_browser.py	(revision 8702)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_browser.py	(revision 8703)
@@ -35,4 +35,5 @@
 from waeup.kofa.testing import FunctionalLayer, FunctionalTestCase
 from waeup.kofa.app import University
+from waeup.kofa.payments.interfaces import IPaymentWebservice
 from waeup.kofa.configuration import SessionConfiguration
 from waeup.kofa.applicants.container import ApplicantsContainer
@@ -730,6 +731,6 @@
         self.assertEqual(payment.p_category,'application')
         self.assertEqual(payment.amount_auth,200.0)
-        # Applicant is owner of the payment ticket.
-        self.assertEqual(payment.getOwner(), self.applicant)
+        # Applicant is payee of the payment ticket.
+        self.assertEqual(IPaymentWebservice(payment).payee, 'John Tester')
         # The pdf payment slip can't yet be opened
         #self.browser.open(payment_url + '/payment_receipt.pdf')
Index: /main/waeup.kofa/trunk/src/waeup/kofa/payments/interfaces.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/payments/interfaces.py	(revision 8702)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/payments/interfaces.py	(revision 8703)
@@ -93,8 +93,4 @@
         )
 
-    def getOwner():
-        "Payments usually have an owner."
-
-
 class ISCPayment(IPayment):
     """A scratch card payment.
@@ -144,2 +140,10 @@
     def approve():
         "Approve an online payment and set to paid."
+
+class IPaymentWebservice(IKofaObject):
+    """An interface for a webservice.
+
+    """
+
+    def payee():
+        "Payments are usually paid by a payee."
Index: /main/waeup.kofa/trunk/src/waeup/kofa/payments/payment.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/payments/payment.py	(revision 8702)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/payments/payment.py	(revision 8703)
@@ -52,8 +52,4 @@
         return payment_categories.getTermByToken(self.p_category).title
 
-    def getOwner(self):
-        "Payments usually have an owner."
-        return None
-
 # not used
 class SCPayment(Payment):
Index: /main/waeup.kofa/trunk/src/waeup/kofa/students/payments.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/students/payments.py	(revision 8702)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/students/payments.py	(revision 8703)
@@ -26,4 +26,5 @@
     IStudentPaymentsContainer, IStudentNavigation, IStudentOnlinePayment)
 from waeup.kofa.payments import PaymentsContainer, OnlinePayment
+from waeup.kofa.payments.interfaces import IPaymentWebservice
 from waeup.kofa.utils.helpers import attrs_to_fields
 from waeup.kofa.accesscodes import create_accesscode
@@ -59,7 +60,4 @@
         except AttributeError:
             return None
-
-    def getOwner(self):
-        return self.getStudent()
 
     def doAfterStudentPayment(self):
@@ -132,4 +130,14 @@
 StudentOnlinePayment = attrs_to_fields(StudentOnlinePayment)
 
+class PaymentWebservice(grok.Adapter):
+    """An adapter to publish student data through a webservice.
+    """
+    grok.context(IStudentOnlinePayment)
+    grok.implements(IPaymentWebservice)
+
+    @property
+    def payee(self):
+        return self.context.getStudent().display_fullname
+
 # Student online payments must be importable. So we might need a factory.
 class StudentOnlinePaymentFactory(grok.GlobalUtility):
Index: /main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py	(revision 8702)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py	(revision 8703)
@@ -36,4 +36,5 @@
 from waeup.kofa.testing import FunctionalLayer, FunctionalTestCase
 from waeup.kofa.app import University
+from waeup.kofa.payments.interfaces import IPaymentWebservice
 from waeup.kofa.students.student import Student
 from waeup.kofa.students.studylevel import StudentStudyLevel
@@ -1473,6 +1474,7 @@
         self.assertEqual(self.student['payments'][value].p_level, 200)
 
-        # Student is owner of the payment ticket.
-        self.assertEqual(self.student['payments'][value].getOwner(), self.student)
+        # Student is the payee of the payment ticket.
+        self.assertEqual(IPaymentWebservice(
+            self.student['payments'][value]).payee, 'Anna Tester')
 
         # We simulate the approval
