<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Privacy Broker: Message-Oriented Middleware to implement Privacy Controls in Schibsted&apos;s Ecosystem of Services (Industry Article)</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Narasimha</forename><forename type="middle">Raghavan</forename><surname>Veeraragavan</surname></persName>
							<email>narasimha.raghavan@schibsted.com</email>
							<affiliation key="aff0">
								<orgName type="department">Privacy Engineering Schibsted Products and Technology</orgName>
								<address>
									<settlement>Oslo</settlement>
									<country key="NO">Norway</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Karen</forename><surname>Lees</surname></persName>
							<email>karen.lees@schibsted.com</email>
							<affiliation key="aff1">
								<orgName type="department">Privacy Engineering Schibsted Products and Technology</orgName>
								<address>
									<settlement>Oslo</settlement>
									<country key="NO">Norway</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Privacy Broker: Message-Oriented Middleware to implement Privacy Controls in Schibsted&apos;s Ecosystem of Services (Industry Article)</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">043BCA8140652445C56567C37036AAEC</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T12:17+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Schibsted is a global media and classified ads conglomerate with more than 200 million unique users per month, operating mainly from Europe. The company is currently being transformed away from traditional paper media and siloed sites towards a unified global media giant. As part of this transformation, Schibsted needs to collect a wide variety of datasets such as profile, behavior, location, payment and communication messages about the user in order to provide personalized content and target advertisements to the end users.</p><p>With the new EU General Data Protection Regulations (GDPR) taking effect from May 25 2018, each user using our products has a right to decide how his/her datasets should be governed or used in our products. To this end, we are building some privacy controls for the end users. These privacy controls are realized by a message-oriented middleware.</p><p>In this paper, we present a case study of design of a centralized topic based pub/sub style of middleware towards implementing the privacy controls in Schibsted's ecosystem of services.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>I. INTRODUCTION</head><p>Schibsted is a global media and classifed ads conglomerate in 30 countries with more than 200 million users/month, 20 billion page views/month and collecting more than 700 million events per day.</p><p>Schibsted's ecosystem consists of several hundreds of independent services that have been evolving organically rather than a centralized top-down design. Due to the organic nature, these services work together as many layers of dependencies rather than strict tiers (hierarchical) as used in traditional large scale system design.</p><p>Every service has an owner (a team) responsible for creating, operating, maintaining and deprecating the service. Every service owner is responsible for knowing their clients and also their dependencies on other services. Additionally, service owners justify the existence of their services through its usage and business value.</p><p>An emergent property of Schibsted's ecosystem is neat service layering, where in the services are organized in logical layers of functionality depending upon the scenarios. Figure <ref type="figure" target="#fig_0">1</ref> shows two examples of service layering pattern in Schibsted ecosystem: a) Payment b) Targeted Advertising.  Payment service layering is responsible for payment transactions of end users. The entry point to the payment service layer contains a set of services that handles all the incoming traffic to payment platform, performs authorization and authentication of end users, and delegates invocations to downstream services. The core payment service layer has a bunch of services that handles all payment related operations such as authorize, cancel, capture, reverse, get, search etc. Furthermore, after executing all the necessary steps in the core layer, the call is passed to the next layer of preprocessing payment adapter services where in the appropriate pre-processing payment adapter is used to have request/reply type of communication to the corresponding payment service provider. All these communications are passed to the financial reporting layer of services for financial reporting and tracking reasons.</p><p>Targeted advertising service layering is responsible for providing targeted advertisements to the end user based on their interests and demographics. When the users visit Schibsted's sites, the behavorial and location events are generated and sent to the event processing service layer which process these events and pass the behavorial events to the user modeling layer which predicts the characteristics of users. These characteristics along with the location events from the event processing layers are used to generate the profiles for the anonymous users and complete the profile for identified users with the help of profile service layer. The input from the profile service layer is used to calculate the appropriate ad segment for the user and the calculated segment is served to the 3rd party ad provider.</p><p>For each privacy control to be implemented in the ecosystem of services, it is important to map the corresponding service layering that gets affected. Additionally, within the service layering, the appropriate layers and the services within that layers should also be mapped in order to send the privacy signals to these services.</p><p>For example, the opt-out or opt-in control for targeted advertising shall affect only the targeted advertising service layer and has nothing to do with the other servicing layers within the ecosystem. Furthermore, within the targeted advertising layer, the first three layers of services (event processing, user modeling and user profiling) are also a part of personalized content serving layer (another servicing layer within the ecosystem) where in the personalized content is served to the end users.</p><p>The goal of targeted advertising privacy control is to affect only the targeted advertising scenario and not the other scenarios. Accordingly, whenever a user chooses to opt-out of targeted advertising based on a particular category, the changes include the following: Services in the User Profile Service layer update their ACL permission model, which in turn does not allow the services in the Segment Calculation and Servicing layers to access the attributes associated with the opted out categories. Additionally, all the existing segments calculated and stored based on the opted out categories of the user in the segment calculation and service layers should be deleted.</p><p>A key observation from the above scenario is that there are several services that get affected based on a single privacy event (opt out of targeted advertising based on a category). A similar pattern is observed for other privacy controls. This in turn motivates us to build a centralized platform (similar to the well known communication style of publish/subscribe systems) to map the privacy events to the potential services and track these events to make sure that the users' choice are reflected in the system.</p><p>The rest of the paper is organized as follows: Section II describe the types and constraints of privacy controls. Section III briefly explains the architecture of privacy broker, a centralized publish/subscribe style middleware towards enabling the privacy controls. Then, we discuss how the constraints mentioned in Section II are satisfied in Section III. Furthermore, we present the related work section. Finally, we conclude this paper with the future work.</p><p>Additionally, the following topics are considered outside the scope of this paper: a) verifying whether the backend honors the users' choices in a correct manner and b) security discussions. We believe these topics are complex and worth separate discussions on different papers in the future.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>II. TYPES AND CONSTRAINTS FOR PRIVACY CONTROLS</head><p>We broadly classify the common privacy controls offered to the end users into two types: stateful and stateless.</p><p>Stateful controls represent the opt-out and opt-in type of controls where the users' choices need to be persisted and continuously respected by the corresponding services until the users' change their choices. For example, if the user chose to opt-out of targeted advertising based on his demographics and interests, then this choice must be persisted. Furthermore, the demographic and interests data feeding services reflect this choice by continuously denying the access of opted out users' datasets to the target advertising services which in turn will stop the targeted advertising services to generate any new targeted advertisements for the opted out user.</p><p>Stateless controls represent the data deletion request types of controls where the users' requests are temporarily stored until the relevant services honor the users' requests. The services honor the request exactly once unlike in the case of stateful controls. For example, if the user issues data deletion request for all his personal data, then the relevant services that control the personal data need to execute their corresponding data deletion logic. After the successful completion of the execution, these services do not need to execute the deletion logic again until a new request comes in.</p><p>In order to stick to the privacy by design principles and the guidelines offered by the Schibsted's privacy office, the design and implementation of the stateful controls should satisfy the following constraints:</p><p>A. Constraints for Stateful controls 1) Stateful controls have two states: opt−in and opt−out.</p><p>The user can choose between one of these two states.</p><p>2) The front-end tool that offers the stateful controls to the end users should always display the latest states of the controls persisted in the system. 3) After the relevant services start honoring the latest state of the privacy controls, then the services should continue honoring the last known latest states until the services are aware of next latest states. 4) If the states are not persisted due to failures, then the user should be asked to retry the operation later. These should be kept minimum as it is a bad user experience. 5) If there are multiple states generated via the same stateful control within short time span from the same user, then only the latest persisted state needs to be eventually honored.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>III. ARCHITECTURE OF PRIVACY BROKER</head><p>In this section, we describe the technical architecture of the privacy broker that facilitates the interaction between the different services towards honoring the users' privacy choices. The communication paradigm of the architecture is </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>A. Publishers and Subscribers</head><p>Publishers are the various end user facing front-end tools that are available at Schibsted digital products (sites and apps) in several countries across the world. These front-end tools provide customized privacy controls based on the geographical region and the nature of the digital products.</p><p>For example, the privacy controls offered to the newspaper sites are different in compared to the dating sites due to the inherent nature of content of these two sites.</p><p>Furthermore, even though the GDPR will imply more similar privacy rules across Europe there will still be room for some interpretations by national regulators that we have to take into account. For example, the general GDPR rule is that we can not process data about individuals younger than age 16 without parental consent. However, the regulation leaves room for the countries implementing the GDPR in their national laws to set the bar as low as 13 instead.</p><p>In addition to the age factor, other differences include the following areas,</p><p>• Deletion: When is data sufficiently deleted?</p><p>• Security Measures: What measures need to be in place in order for security to be at sufficient level? • Opt-out/opt-in: When do we need opt-in or opt-out as a default option?</p><p>Moreover, our sites outside Europe have different regulations. Due to these reasons, we require customized privacy controls per geographical region.</p><p>Publishers generate the privacy events whenever users' use the privacy controls. Each privacy event corresponds to a topic in a well known pub/sub model. Publishers introduce new topics (after discussing with the Privacy Office) to the privacy broker console.</p><p>Subscribers are the various proprietary backend services of Schibsted that are part of one or more service layerings as described in the Section I. A subscriber can be a service or a group of services. Subscribers subscribe to the available topics via the privacy broker console. After subscribers receive the appropriate events from the broker, subscribers make appropriate changes to their services towards honoring the users' choices and notify the completion of changes back to the broker (flow #5 in Figure <ref type="figure">2</ref>).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>B. Privacy Broker Console</head><p>The main design goal of the broker console is to be a selfservice portal for the publishers and subscribers to configure the privacy broker towards enabling the privacy controls in the Schibsted ecosystem of services.</p><p>The self-service portal is accessible only to the developers within Schibsted. The common functionalities of the broker console include:</p><p>• Register new publishers and subscribers • Register new privacy controls for a publisher • Update the broker configurations for publishers and subscribers • Delete publishers and subscribers Any communications related to the configurations of publishers and subscribers to the privacy broker happen via the broker console as shown in data flow #1 and flow #2 in Figure <ref type="figure">2</ref> respectively. Additionally, all the configuration details given by the publishers and subscribers are validated in the broker engine and then persisted in the broker database. If there are any incorrect configuration details detected by the broker engine, then appropriate error messages are shown to the corresponding publishers or subscribers.</p><p>The configuration parameters for publishers and subscribers are stored in the broker database as described in the Table I via the Broker API. Sample configurations of the publishers and the subscribers stored in the broker database are shown in Table <ref type="table">II</ref> and Table <ref type="table">III</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>C. Privacy Broker API</head><p>The main design goal for the privacy broker API is to provide endpoints for publishers, subscribers and console to interact with the core broker engine.</p><p>The direct communications of the publisher and subscribers to the privacy broker API endpoints are guarded with the help of SDKs. SDKs ensure the communication from the broker clients (publishers, subscribers) are happening in a consistent (all clients using same protocols and messaging format), secure (all clients are authenticated and authorized) and reliable ways (number of retries in case of not able to reach the broker).</p><p>• Publisher SDKs are responsible for sending synchronous privacy requests when users using stateful privacy controls and asynchronous privacy requests when users using stateless privacy controls from the publishers. • Subscriber SDKs are responsible for sending synchronous status notification that indicates the current status of progress towards honoring the users' choices. Both the SDKs use gRPC protocol <ref type="bibr" target="#b1">[2]</ref> to communicate with the broker endpoints and use protocol buffer <ref type="bibr" target="#b2">[3]</ref> as the messaging format.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>D. Privacy Broker Engine</head><p>The key purposes of the privacy broker engine are the following:</p><p>• Process the incoming requests from broker clients and update the broker configuration and user profile databases. • Match the incoming privacy events from publishers to appropriate subscribers. • Disseminate the events from publishers to subscribers. 1) Processing Logic for the Requests Coming via Console: Developers from Publishers (front-end) and Subscribers (backend services) teams provide configuration parameters via console UI to the broker (flow #1 and flow #2 in Figure <ref type="figure">2</ref>), the parameters of configuration are validated with the help of corresponding configuration schemas and with routine input validation. After validation, the broker configuration database is updated. Sample publisher and subscriber configurations in broker database are shown in Table <ref type="table">II</ref> and Table <ref type="table">III</ref>.</p><p>2) Processing Logic for the Privacy Events Coming via Publisher: The privacy events that are coming via the publisher are classified into stateful and stateless privacy events as described in Section II. For both stateful and stateless privacy events, the broker engine creates privacy requests in the broker database (flows #3 and #3a in Figure <ref type="figure">2</ref>) in order to notify the corresponding subscribers and also track the progress of the subscribers towards honoring the users' choices.</p><p>Table <ref type="table">IV</ref> shows sample privacy requests table in the broker database. There are various status options used with the privacy request to track the request in Table <ref type="table">IV</ref>. These statuses are explained in Table <ref type="table">V</ref>.</p><p>Furthermore, for stateless privacy events, the corresponding publishers are notified that their privacy event will be eventually honored as soon as the requests are written in the broker database (flow #3c in Figure <ref type="figure">2</ref>). This in turn will be helpful for the publisher to display appropriate information to the end users. If it is a stateful privacy event, the broker engine updates the state of the privacy event to the corresponding user's profile in profile database (flow #3b in Figure <ref type="figure">2</ref>) and then notifies the corresponding publisher (flow #3c in Figure <ref type="figure">2</ref>).</p><p>The primary reason for writing to the profile database is two fold: a) Profile database serves as a source of truth for users' profile attributes and settings for all back-end services. Hence, it is relatively easy to implement filtering mechanisms on top of profile attributes based on opt-out preferences when these preferences are stored along with the profile. And, b) we prefer to avoid multi-master complications and keep only one master/source of truth for all opt-out preferences to make it simple.</p><p>For example, if the stateful privacy event is opt-out of targeted advertising based on age and gender, then corresponding privacy request is created in the broker database towards notifying the subscribers and then broker engine updates the corresponding user profile in profile database with his/her optout preferences.</p><p>3) Matching the privacy events with subscribers: For each request available in the Table IV, the target subscribers can     <ref type="table">IV</ref>. Furthermore, when the subscribers send the acknowledgement and completion signals (flow #5 in Figure <ref type="figure">2</ref>) back to the broker, then the engine updates the status to ACKNOWLEDGED and COMPLETED respectively. Moreover, if the broker database has COMPLETED status from all the subscribers, then the broker engine updates the status field of Privacy Event Requests Table <ref type="table">IV</ref> to COMPLETED.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>E. Compliance Monitor</head><p>Compliance Monitor monitors the status column in Table VI and with the help of Table <ref type="table">III</ref>, it scans for the requests that have not been completed within the expected completed time. It sends retries and updates the expected completion time after each retry. After the maximum number of retries, the Compliance Monitor looks up the corresponding contact email and mobile information from the Subscriber Configuration Table <ref type="table">III</ref> and sends alert messages to them (flow #6a in Figure <ref type="figure">2</ref>) and updates the status to FAILED in Table <ref type="table">VI</ref>. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>F. User Notification Module</head><p>User Notification Module monitors the status column in Table IV. For each privacy request that has status COMPLETED, the User Notification Service finds the corresponding publisher ID and its preferred notification type (refer Table <ref type="table">VIII</ref>) and corresponding notification details for that request using Table <ref type="table">II</ref> (flow # 7).</p><p>If the Preferred Notification Type is Email and/or SMS, the corresponding contact attributes are fetched from the profile database using the Unique User ID (flow #8). This contact information in turn will help the Notification Module to deliver the messages to appropriate end users. If the Notification Type is In-client, then the corresponding endpoints are fetched from the Table <ref type="table">II</ref>.</p><p>IV. DISCUSSION ON SATISFYING THE PRIVACY CONTROL CONSTRAINTS A. Discussion on Stateful Privacy Constraints 1) Constraint 1: It is straight forward for front-end tool to provide these settings to the end users. The front-end tool should make sure that there are no intermediate states such as unknown.</p><p>2) Constraint 2: After the request gets persisted in the profile database and broker database, whenever the user logs in to the front-end tool and see the privacy settings/notification pages, then the front-end can lookup for the status field in the Table IV in the broker database to know the status of the privacy request and can display the UX message accordingly. If there are any failures happened before flow #3c in Figure <ref type="figure">2</ref>, then the users are asked to retry the operation.</p><p>3) Constraint 3: The profile database always has latest state from the Privacy Broker. The broker engine sends only notifications to the appropriate backends indicating that there has been a change of state to the subscribed topic type and the relevant backend services are required to fetch the latest state from the profile database and act according to only the latest state.</p><p>4) Constraint 4: This is straightforward in our design. If there are any failures happened before flow #3c in Figure <ref type="figure">2</ref>, then the users are asked to retry the operation. Any failures happened after flow #3c will be resolved without the knowledge of the user. 5) Constraint 5: If there are multiple states persisted within short time span for the same stateful control, the broker sends notification for all the persisted states to the corresponding services, the services will continue fetching the latest state until it stops receiving the notification from the broker. Thus, the latest state will be eventually honored.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>V. RELATED WORK</head><p>Variants of Publish/Subscribe systems <ref type="bibr" target="#b3">[4]</ref> have been studied and used in many applications for several decades. The closest variant to our proposed design is centralized topic based publish/subscribe systems. In the past decades, there have been several topic based publish subscribe systems proposed in academia and industry. Examples for academic focused topic based publish/subscribe systems include Scribe <ref type="bibr" target="#b4">[5]</ref>, Bayeux <ref type="bibr" target="#b5">[6]</ref>, SpiderCast <ref type="bibr" target="#b6">[7]</ref> and PolderCast <ref type="bibr" target="#b7">[8]</ref>. Examples for industry focused topic based publish/subscribe systems include JMS <ref type="bibr" target="#b8">[9]</ref>, Google Pub/Sub <ref type="bibr" target="#b9">[10]</ref>, Spotify Pub/Sub <ref type="bibr" target="#b10">[11]</ref>, and Apache Kafka <ref type="bibr" target="#b11">[12]</ref>.</p><p>However supporting the privacy controls in the services ecosystem like Schibsted require specific set of requirements and constraints to be met. There is a need to distinguish between the stateful and stateless privacy events since stateful privacy events correspond to the settings of users which in turn needs to be continuously honored by the backend services until the next change of settings have occurred. In case of stateless events, after the relevant services honor the user's request exactly once, the request can be removed or archived for legal reasons.</p><p>Furthermore, real-time performance is not very critical (since from a legal perspective we have given some time to honor the privacy requests) in compared to the reliability (able to deliver the messages at least once to the broker from frontend and back-end services and broker to the back-end services) and consistency (always the message displayed in the frontend tool is consistent with the back-end happenings).</p><p>Moreover, the communication mode required by the backend services are different and each service has different configuration parameters that need to be supported by the centralized publish/subscribe system.</p><p>Additionally, we need to keep track of all services involved per privacy event in order to ensure the completeness of the privacy operations associated with that event.</p><p>To the best of our knowledge, this work is the first in using the centralized publish/subscribe design pattern towards enabling the privacy controls as expected by the GDPR regulations in the ecosystem of services. In other words, we present another use case for publish/subscribe system in the context of privacy engineering.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>VI. CONCLUSION</head><p>In this paper, we present our customized design of simple pub/sub style middleware that we are implementing towards enabling the privacy controls required for GDPR regulations. At the time of writing this paper, the design is implemented and matured for integration testing and soon to be in production.</p><p>It is possible that the integration testing may help us in finding new practical challenges with the proposed design, which may require us to adapt the design according to the new findings. For example, if the majority of the teams are not comfortable using SDKs due to legacy reasons or other reasons, then we may provide secure REST APIs instead of SDKs.</p><p>In the future, we also would like to experiment out with the various open source policy based languages such as eXtensible Access Control Markup Language XACML <ref type="bibr" target="#b12">[13]</ref> and PrimeLife Policy Language <ref type="bibr" target="#b13">[14]</ref> to figure out to what extent they are usable, scalable, and adoptable in large scale service oriented architectures such as in Schibsted's ecosystem.</p><p>Last but not least, we have written this paper in the hopes that our work will be helpful to the academic community in giving the context of practical challenges in implementing the privacy controls in the large scale system.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Fig. 1 .</head><label>1</label><figDesc>Fig. 1. Payment and Targeted Advertisement Service Layerings of Schibsted Ecosystem</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Front-end Tool 1 Front-end Tool 2 FrontFig. 2 .</head><label>122</label><figDesc>Fig. 2. Privacy Broker Architecture</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_4"><head></head><label></label><figDesc>a simple lookup on the request topic type on the subscribers configuration TableIII.With the target list of subscribers, broker engine creates a subscription notification progress table as shown in the Table VI with the default status to INIT. The various status options in the subscribers notification progress table and the corresponding definitions are mentioned in the Table VII 4) Disseminating the privacy events to the appropriate subscribers: Using the pairing between Request ID and Subscriber ID in Table VI and the URI, Failure Retry Count and Retry Delay information available in Table III, Broker engine sends the appropriate request to all subscribers available in</figDesc><table><row><cell></cell><cell cols="2">TABLE V</cell><cell></cell></row><row><cell cols="4">STATUS FIELD OPTIONS IN THE PRIVACY EVENT REQUESTS TABLE IN</cell></row><row><cell></cell><cell cols="2">BROKER DATABASE</cell><cell></cell></row><row><cell cols="3">Request Status Options Definition</cell><cell></cell></row><row><cell>INIT</cell><cell></cell><cell cols="2">Progress details are writ-</cell></row><row><cell></cell><cell></cell><cell cols="2">ten to the broker database,</cell></row><row><cell></cell><cell></cell><cell cols="2">privacy event not yet sent</cell></row><row><cell></cell><cell></cell><cell>to the subscriber</cell><cell></cell></row><row><cell cols="2">INPROGRESS</cell><cell cols="2">The request is in progress</cell></row><row><cell></cell><cell></cell><cell cols="2">by the broker engine or by</cell></row><row><cell></cell><cell></cell><cell>the subscribers</cell><cell></cell></row><row><cell cols="2">COMPLETED</cell><cell cols="2">User's choice is honored</cell></row><row><cell></cell><cell></cell><cell cols="2">by all the necessary ser-</cell></row><row><cell></cell><cell></cell><cell>vices</cell><cell></cell></row><row><cell cols="2">SOMEFAILED</cell><cell cols="2">At least one of the nec-</cell></row><row><cell></cell><cell></cell><cell cols="2">essary has failed to either</cell></row><row><cell></cell><cell></cell><cell cols="2">honor or send the comple-</cell></row><row><cell></cell><cell></cell><cell>tion notification</cell><cell></cell></row><row><cell></cell><cell cols="2">TABLE VI</cell><cell></cell></row><row><cell cols="4">SAMPLE SUBSCRIPTION NOTIFICATION PROGRESS TABLE IN THE</cell></row><row><cell></cell><cell cols="2">BROKER DATABASE</cell><cell></cell></row><row><cell cols="3">Request ID Subscriber ID Time to Honor</cell><cell>Progress Status</cell></row><row><cell>123453</cell><cell>12348</cell><cell>1 day</cell><cell>INIT</cell></row><row><cell>123442</cell><cell>12344, 12346</cell><cell>1 day</cell><cell>FAILED</cell></row><row><cell>123461</cell><cell>B1235</cell><cell>1 day</cell><cell>SENT</cell></row><row><cell>123430</cell><cell>12348</cell><cell>1 day</cell><cell>COMPLETED</cell></row><row><cell>be found by</cell><cell></cell><cell></cell><cell></cell></row></table></figure>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><head>ACKNOWLEDGMENT</head><p>We thank the following people for their inputs and support for this paper: Ingvild Naess (Group Privacy Officer, Schibsted ASA) and Sverre Sundsdal (Director of Engineering, Schibsted Products and Technology). Additionally, we are grateful to all the engineers, product managers and legal members of the privacy team who are working towards the success of the Privacy Broker project within Schibsted. Finally, we thank the reviewers for their feedbacks on the submitted version of the paper.</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<author>
			<persName><forename type="first">J</forename><surname>Varia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Mathew</surname></persName>
		</author>
		<title level="m">Overview of amazon web services</title>
				<imprint>
			<publisher>Amazon Web Services</publisher>
			<date type="published" when="2014">2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<title/>
		<author>
			<persName><forename type="first">Grpc</forename><surname>Google</surname></persName>
		</author>
		<ptr target="http://www.grpc.io/" />
		<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<ptr target="https://developers.google.com/protocol-buffers/" />
		<title level="m">Protocol Buffers</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">The many faces of publish/subscribe</title>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">T</forename><surname>Eugster</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">A</forename><surname>Felber</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Guerraoui</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A.-M</forename><surname>Kermarrec</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM computing surveys (CSUR)</title>
		<imprint>
			<biblScope unit="volume">35</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="114" to="131" />
			<date type="published" when="2003">2003</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Scribe: A large-scale and decentralized application-level multicast infrastructure</title>
		<author>
			<persName><forename type="first">M</forename><surname>Castro</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Druschel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A.-M</forename><surname>Kermarrec</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">I</forename><surname>Rowstron</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Journal on Selected Areas in communications</title>
		<imprint>
			<biblScope unit="volume">20</biblScope>
			<biblScope unit="issue">8</biblScope>
			<biblScope unit="page" from="1489" to="1499" />
			<date type="published" when="2002">2002</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Bayeux: An architecture for scalable and fault-tolerant wide-area data dissemination</title>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">Q</forename><surname>Zhuang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><forename type="middle">Y</forename><surname>Zhao</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">D</forename><surname>Joseph</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">H</forename><surname>Katz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">D</forename><surname>Kubiatowicz</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 11th international workshop on Network and operating systems support for digital audio and video</title>
				<meeting>the 11th international workshop on Network and operating systems support for digital audio and video</meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2001">2001</date>
			<biblScope unit="page" from="11" to="20" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Spidercast: a scalable interest-aware overlay for topic-based pub/sub communication</title>
		<author>
			<persName><forename type="first">G</forename><surname>Chockler</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Melamed</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Tock</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Vitenberg</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 2007 inaugural international conference on Distributed event-based systems</title>
				<meeting>the 2007 inaugural international conference on Distributed event-based systems</meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2007">2007</date>
			<biblScope unit="page" from="14" to="25" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Poldercast: fast, robust, and scalable architecture for p2p topic-based pub/sub</title>
		<author>
			<persName><forename type="first">V</forename><surname>Setty</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Van Steen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Vitenberg</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Voulgaris</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 13th International Middleware Conference</title>
				<meeting>the 13th International Middleware Conference</meeting>
		<imprint>
			<publisher>Springer-Verlag New York, Inc</publisher>
			<date type="published" when="2012">2012</date>
			<biblScope unit="page" from="271" to="291" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<monogr>
		<title level="m" type="main">Java message service</title>
		<author>
			<persName><forename type="first">M</forename><surname>Hapner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Burridge</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Sharma</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Fialli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Stout</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2002">2002</date>
			<publisher>Sun Microsystems Inc</publisher>
			<biblScope unit="page">9</biblScope>
			<pubPlace>Santa Clara, CA</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Goops: Pub/sub at google</title>
		<author>
			<persName><forename type="first">J</forename><surname>Reumann</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Lecture &amp; Personal Communications at EuroSys &amp; CANOE Summer School</title>
				<imprint>
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">The hidden pub/sub of spotify:(industry article)</title>
		<author>
			<persName><forename type="first">V</forename><surname>Setty</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Kreitz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Vitenberg</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Van Steen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Urdaneta</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Gimåker</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 7th ACM international conference on Distributed event-based systems</title>
				<meeting>the 7th ACM international conference on Distributed event-based systems</meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2013">2013</date>
			<biblScope unit="page" from="231" to="240" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Kafka: A distributed messaging system for log processing</title>
		<author>
			<persName><forename type="first">J</forename><surname>Kreps</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Narkhede</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Rao</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the NetDB</title>
				<meeting>the NetDB</meeting>
		<imprint>
			<date type="published" when="2011">2011</date>
			<biblScope unit="page" from="1" to="7" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Oasis extensible access control markup language (xacml)</title>
		<author>
			<persName><forename type="first">S</forename><surname>Godik</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Moses</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">OASIS Committee Secification cs-xacml-specification-1</title>
				<imprint>
			<date type="published" when="2002">2002</date>
			<biblScope unit="volume">0</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Ppl: Primelife privacy policy engine</title>
		<author>
			<persName><forename type="first">S</forename><surname>Trabelsi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Sendor</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Reinicke</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE International Symposium on Policies for Distributed Systems and Networks (POLICY)</title>
				<imprint>
			<date type="published" when="2011">2011. 2011</date>
			<biblScope unit="page" from="184" to="185" />
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
