<?xml version="1.0" encoding="utf-8"?>
<ManualTopic ID="/baanerp/da/onlinemanual/000500" xml:lang="en">
	<Header>
		<Title xmlns:HTML="http://www.w3.org/TR/REC-html40">Synchronization Server Overview</Title>
		<Keyword ContextSensitive="No"><Level1>Synchronization Server</Level1>
		</Keyword>
	</Header>
	<GeneralSection><GeneralSection><SectionTitle>Synchronization Server Functions</SectionTitle>
			<Paragraph class="Default">The Synchronization Server implements the publishing of event messages for ERP LN. This is done by creating a synchronization object for a business object. A synchronization object is the selection of a business object, extended with selection of components and attributes and (optionally) a filter. The synchronization object is enables the synchronization at runtime for the selected business object.</Paragraph>
			<Paragraph class="Default">If ERP LN must be synchronized with another application, the data source at the ERP LN side is actually a set of table fields. However the ERP LN tables are not directly accessible. ERP LN tables can be accessed through business objects. To read the fields in a table, you must call a method of a business object. This method handles the attributes of the business objects. The attributes of the business object are mapped to table fields, but formatting or calculation may be involved.</Paragraph>
			<List><ListIntro>The Synchronization Server takes care of the following:</ListIntro>
				<ListItemHead>Event detection</ListItemHead>
				<ListItem>Changes in the underlying back-end components of the business objects are detected. If a change is applied to a certain column in a table and that column is mapped to an attribute of a business object, from which a client wishes to see changes pushed, the Synchronization Server detects that the change has happened. In ERP LN the changes are detected through audit functionality.</ListItem>
				<ListItemHead>Event filtering</ListItemHead>
				<ListItem>Create, change or delete events are filtered based on values of attributes, such as is possible in the List and Show. Create and delete events are either passed on or skipped. But in case of change events it is additionally possible that the event is passed on but altered. If the original values of the attributes (before the change) meet the filter, but the current values (after the change) do not, the event is passed on as a delete event instead of a change event. Similarly, if the original values of the attributes (before the change) do not meet the filter, but the current values (after the change) do, the event is passed on as a create event.</ListItem>
				<ListItemHead>Event aggregation</ListItemHead>
				<ListItem>A change event at database level (table column) is converted into a change event for a business object (component attribute). By default changes in attributes will be aggregated towards pushing out all relevant surrounded component data. So even if one attribute is changed it will push out the contents of the other attributes inside the same component as well. In addition to adding attributes for the changed component(s), the aggregation process also adds parent components with at its attributes. This default behavior can be changed, by specifying at configuration time that only certain attributes need to be pushed instead of all data of the entire component involved, or by specifying that also data from other unchanged child components must be included. For example: A change of a quantity in a sales order lines table, will be transformed into an XML document containing the sales order object consisting of the (unchanged) header and the changed order line.</ListItem>
				<ListItemHead>Event publishing</ListItemHead>
				<ListItem>The XML document that describes the change event is pushed out to an external component that is responsible for handling the event in a correct way. This component is responsible for feeding the data further into a broker product, or saving it in a file on the file system, or simply feeding it into a message queue, for example. The destination is specified via a so-called bus component, which actually refers to the listening party that must receive the event messages.</ListItem>
			</List>
		</GeneralSection>
		<GeneralSection><SectionTitle>Relationship between Publishing Methods and Synchronization Server</SectionTitle>
			<Paragraph class="Default">Technically, a PublishChanges request is translated into a synchronization object in the Synchronization Server. This means that usually, you do not have to set up a synchronization object manually. However, you can use the Synchronization Server user interface to fine-tune the settings for a synchronization object.</Paragraph>
			<Paragraph class="Default">If a PublishChanges request arrives for an already existing synchronization object, the existing settings (selection and filter) are updated.</Paragraph>
			<Paragraph class="Default">If an UnpublishChanges request arrives, the corresponding synchronization object is deleted.</Paragraph>
		</GeneralSection>
	</GeneralSection>
	<GeneralSection><SectionTitle>More information</SectionTitle>
		<List><ListIntro>For more information, refer to:</ListIntro>
			<ListItem><Link href="/baanerp/da/onlinemanual/000500a" role="manual">Synchronization Server - User Interface Overview</Link>
			</ListItem>
			<ListItem><Link href="/baanerp/da/onlinemanual/000500b" role="manual">Synchronization Server - User Tasks</Link>
			</ListItem>
			<ListItem><Link href="/baanerp/da/onlinemanual/000400" role="manual">Event Publishing Overview</Link>
			</ListItem>
			<ListItem><DocRef>Synchronization and Event Publishing Deployment Guide</DocRef> This deployment guide describes among other things: <List><ListItem>The specifications for the PublishList, PublishChanges and UnpublishChanges methods.</ListItem>
					<ListItem>How to use these methods.</ListItem>
					<ListItem>How to use the Synchronization Server to set up, optimize and manage the event publishing.</ListItem>
					<ListItem>Important things to take into account when setting up the synchronization or event handling.</ListItem>
					<ListItem>What to do in case of problems.</ListItem>
				</List>
			</ListItem>
		</List>
	</GeneralSection>
</ManualTopic>
