Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Neolane v5.1
This document, and the software it describes, are provided subject to a License Agreement and may not be used or copied outside
of the provisions of the License Agreement. No part of this publication may be reproduced, stored in a retrieval system, or transmitted,
in any form or by any means, electronic, mechanical, photocopying, recording or otherwise, without the prior written permission of
Neolane.
This document may be revised without notice. Neolane does not guarantee the accuracy nor the completeness of the information
contained within this document. References to company names are intended to be ficticious and for illustrative purposes only and do
not refer to any real-world company.
Any brands cited are the property of their respective owners. Windows is the registered trademark of Microsoft Corporation in the
United States and other countries. Java and Solaris are trademarks of Sun Microsystems, Inc. in the United States and in other
countries. Linux is the registered trademark of Linus Torvalds in the United States and in other countries. This product includes
software developed by Apache Software Foundation (http://www.apache.org/).
For any questions or queries, please send a message to the following address: doc@neolane.com.
Unless mentioned otherwise, company names, logos, brands and logos cited in this document are the property of Neolane S.A. or its
subsidiaries. They may not be used without prior written authorization from Neolane.
Table of Contents
4 | © Neolane 2010
Neolane v5.1 - Configuration Guide | 5
Neolane
6 | © Neolane 2010
Neolane v5.1 - Configuration Guide | 7
Neolane
8 | © Neolane 2010
CHAPTER 1
Neolane data model
Table of Contents
Accessing the data schemas in Neolane . . . . . . . . . . . . . . . . . 10
General information . . . . . . . . . . . . . . . . . . . . . . . 11
Physical and logical data . . . . . . . . . . . . . . . . . . . . . 11
Working tables . . . . . . . . . . . . . . . . . . . . . . . . 11
Table structure . . . . . . . . . . . . . . . . . . . . . . . . 11
Auto-incrementing primary keys . . . . . . . . . . . . . . . . . . 11
Zero-ID record . . . . . . . . . . . . . . . . . . . . . . . . 12
"Deleted" field . . . . . . . . . . . . . . . . . . . . . . . . 12
Track changes . . . . . . . . . . . . . . . . . . . . . . . . 12
Description of the main tables . . . . . . . . . . . . . . . . . . . . 14
Simplified diagram . . . . . . . . . . . . . . . . . . . . . . . 14
NmsRecipient . . . . . . . . . . . . . . . . . . . . . . . . . 14
NmsGroup and NmsRcpGrpRel . . . . . . . . . . . . . . . . . . . 15
NmsService, NmsSubscriptions and NmsSubHisto . . . . . . . . . . . . 15
NmsDelivery . . . . . . . . . . . . . . . . . . . . . . . . . 16
NmsBroadLog . . . . . . . . . . . . . . . . . . . . . . . . . 17
NmsTrackingLog and NmsTrackingUrl . . . . . . . . . . . . . . . . . 19
XtkFolder . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Description of Neolane's main modules . . . . . . . . . . . . . . . . . 21
Delivery and tracking . . . . . . . . . . . . . . . . . . . . . . 21
Delivery to mobile channels . . . . . . . . . . . . . . . . . . . . 22
Response management . . . . . . . . . . . . . . . . . . . . . 23
Offer management . . . . . . . . . . . . . . . . . . . . . . . 26
Campaign management . . . . . . . . . . . . . . . . . . . . . 29
10 | © Neolane 2010
General information
Before dealing with the data model as such, we will cover some general information.
Working tables
Working tables are created, then destroyed during application phases. The name and structure
of some tables are defined at run time (data management, targeting workflows, etc.), while
others are persistent dynamic tables (lists, answers to a survey, simulation results).
Table structure
Some table structures can be complex. For example:
self-referent tables that point to themselves, such as campaign and budget tables;
hierarchical tables such as xtkFolder for which access to information requires using the
full name (fullname).
Note:
The keys of the NmsBroadLog and NmsTrackingLogXXX tables have their own sequence.
Tip:
Within workflows, you can configure the management of additional data and disable filtering. To do
this, edit additional data (in the Query or Enrichment boxes, for example), click the Advanced
settings link and check the Disable the automatic filtering of records with 0 IDs option.
"Deleted" field
Certain tables contain an iDeleteStatus field (NmsDelivery, NmsService and NmsSubscription
in particular). This field is used for managing the and performing time-consuming
deletions during the night.
The value 1 means that the record will be deleted by the clean up workflow (cleanup) next time it
is executed (mostly scheduled to be executed every night). Records linked with integrity own are
also deleted (refer to Extending schemas [page 37]).
As a consequence, you should consider these records as destroyed even if they have not yet been
physically deleted from their tables.
In all the queries configured in the application, an iDeleteStatus = 0 clause is added implicitly.
However, when writing queries directly in SQL, you must take this field into consideration.
In the case of deliveries (NmsDelivery table), the value 2 means that the record is in the
. Deleted deliveries are placed there by default and can be restored by the user if necessary. By
default, the cleanup task deletes the delivery after seven days. In this case, the tsDelete field gives
the date on which the record was moved to the recycle bin.
Track changes
Certain reserved field names enable you to track the creation and modification of certain records:
tsCreated contains the creation date,
tsLastModified contains the last modification date,
12 | © Neolane 2010
iCreatedById contains the identifier of the operator who created the record (foreign key
of a link to XtkOperator),
iModifiedById contains the ID of the last operator who modified the record (foreign key
of a link to XtkOperator).
These fields are added in the schemas using the auditTrail aggregate. Other schemas only
use certain fields. For example NmsRecipient contains tsCreated and tsLastModified only.
These fields are populated automatically for all creations and modifications made by the
application: input interface, imports, web forms, etc.
Warning:
The name of each field in the XML schema triggers this behavior, not the SQL names.
Creation and modification dates can only be changed via the Neolane console. Updates, deletions
or insertions carried out in the database and not via the console will have no effect on these
dates.
Simplified diagram
The following is a diagram showing the joins between the main business tables of the Neolane data
model with the main fields shown for each.
NmsRecipient
This table coincides with the nms:recipient schema.
It is the default table used for the recipients of deliveries. As a result, it contains the information
required for deliveries via the various channels:
14 | © Neolane 2010
sEmail: email address.
iEmailFormat: preferred format for emails (1 for Text, 2 for HTML and 0 if undefined).
sAddrAdditionnalGeo, sAddrAdditionnalRcp, sAddrStreet, sAddrSpecial,
sAddrZipCode, sCity are used to build the postal address (in keeping with the XPZ 10-011
AFNOR standard from May 1997).
sPhone, sMobilePhone, sFax contain the phone, mobile phone and fax numbers
respectively.
iBlackList is the default opt-out flag used for the profiles (1 means "unsubscribed", 0
otherwise).
The iFolderId field is the foreign key that links the recipient to its execution folder. Refer to
the description of the XtkFolder table below for further details.
The sCountryCode field is the 3166-1 Alpha 2 ISO code (2 characters) of the country
associated with the recipient. This field is actually a foreign key on the country reference table
(NmsCountry), which contains the country labels and other country code data. If the country
is not populated, the value 'XX' is stored (and is used in place of a zero ID record).
sAccount and sOrigin are indexed description fields. They are designed to contain an external
recipient ID (for example, a customer identifier) and a trace of the origin of the profile data.
Note:
For further information on this topic, refer to the User Guide.
There is a unique index on the field representing the internal name of the sName service.
The service is linked to a folder (The key is iFolderId. See the description of the XtkFolder
table below). Finally, the iType field specifies the delivery channel of this service (0 for email,
1 for SMS, 2 for telephone, 3 for direct mail and 4 for fax).
The NmsSubscription relationship table is similar to NmsRcpGrpRel but may contain other
information in addition to the relationship. In particular, the sAddressSpecific and
NmsDelivery
This table coincides with the nms:delivery schema.
Each record in this table represents a delivery action or a delivery template. It contains all the
necessary parameters for performing deliveries (the target, the content, etc.). Delivery (broadcast)
logs (NmsBroadLog) and associated tracking URLs (NmsTrackingUrl) are created during the
analysis phase (see below for further details on both of these tables).
There is a unique index on the field representing the internal name of the sInternalName delivery
or scenario. The delivery is linked to an execution folder (The foreign key is iFolderProcessId. See
the description of the XtkFolder table below).
The table contains several foreign keys, including in particular:
iDeliveryProviderId: Routing service provider to be used. This is an external "Routing" account
(NmsExtAccount table, iType = 3).
iMappingId: Delivery mapping (NmsDeliveryMapping table. Refer to the Using an existing
recipient table [page 151] section)
iTypologyId: Campaign typology (NmsCampaignTypology table), which is a set of rules to
verify the delivery parameters and exclusions of recipients to be applied.
The iState field gives the current status of the delivery. The possible statuses are as follows:
0 - "Being edited": the delivery is being created by the user (only possible value for a scenario).
11 - "Targeting pending": the delivery analysis was requested by a user but is not yet effective.
12 - "Count in progress": delivery preparation in progress.
13 - "Arbitration in progress": application of typology rules for a delivery in progress.
15 - "Target ready": target estimation complete.
21 - "Personalization pending": calculation of the personalization blocks for the delivery taken
into account. In the Distributed Marketing application, child-campaigns keep this state as long
as the calculation of their campaign personalization is in progress.
22 - "Personalization in progress": calculation of personalization blocks in progress for an email/SMS
delivery or file export with personalization data for a direct mail delivery.
25 - "Finalized message": delivery ready to be sent.
37 - "Count or personalization fail": the target was not specified or the personalization blocks
could not be inserted into the message.
45 - "Ready for delivery": analysis finished without errors, messages prepared. Delivery awaiting
confirmation.
51 - "Start pending": send request for the deferred delivery taken into account.
55 - "In progress": sendings are in progress.
61 -"Recovery pending": sending was attempted at least once for each message, but some failed.
One or more recoveries are scheduled (tsNextRetry shows the next recovery date).
62 - "Recovery in progress": recovery is in progress on failed messages.
16 | © Neolane 2010
71 - "Pause requested": delivery paused by an operator.
72 -"Pause in progress": a pause has been requested by a user but is not yet effective.
75 -"Paused": sendings have been paused by a user.
81 -"Stop requested": delivery stopped by an operator.
82 -"Stop in progress": stopping has been requested by a user but is not yet effective.
85 -"Stopped": the delivery has been stopped (and may not be started again).
87 -"Failed": the delivery could not be sent.
95 -"Finished": the delivery is finished. It may be edited but not altered.
100 -"Deleted": only used in mid-sourcing mode to extend destruction to the mid-sourcing
server.
Statuses up to and including 15 deal with deliveries that have not yet started. Once the delivery
has been validated with success, the status moves to a value higher than 15. Statuses 0, 2,
3, 5, 6 and 15 enable the user to edit the delivery parameters and start the analysis.
The iIsModel field indicates whether it is a template or a delivery action (1 for a scenario, 0
otherwise). In case of a template, the iFolderProcessId field is the identifier of the folder to
which the template belongs and iCampaignProcessId that of the execution folder in which
the deliveries created from this template are placed.
Below is a list of other important fields:
iMessageType - Delivery medium: 0 for e-mail, 1 for SMS, 2 for telephone, 3 for direct
mail and 4 for fax.
iDeliveryMode - Delivery mode: 0 when performed by a third-party router (the delivery
creates a file of the messages to be sent), 1 if the execution is handled directly by the
platform, 3 if the delivery is handled by another remote Neolane platform in "mid-sourcing"
mode.
iFCP -message type: 1 if it is a "proof", 0 otherwise.
iMidSourcing - mid-sourcing: 1 if it is a slave version of a delivery on the mid-sourcing
server.
sDeliveryCode - Indexed text field to associate an external identifier with the delivery.
Below is a list of the most important date fields used in deliveries:
tsCreated - Creation date of the delivery (or of the scenario).
tsLastModified - Date of the last modification (manual or via an automatic process).
tsExpiration - Start date.
tsValidity - Validity end date: Beyond this date no more messages will be sent or retries
made.
tsWebValidity - Validity end date for online resources: For email deliveries, mirror pages
expire after this date.
NmsBroadLog
This table coincides with the nms:broadLog schema.
It contains one record per targeted recipient for each delivery. The records are created
when the delivery is analyzed. The table contains the messages sent, the failed messages,
the messages to be processed and the ignored addresses (blacklisted, quarantined, etc.)
18 | © Neolane 2010
2 - a "hard" error (hard bounce) with an explicit message (such as "unknown user"). The
address will be quarantined and there will be no retries.
3 - an "ignored" error. The error is ignored by the quarantine mechanism.
sAddress indicates the address used for the delivery (e-mail, mobile number, etc.), in other
words, its value at analysis time. In case of a direct mail delivery, the postal address lines are
stored in the NmsBroadLogPostalAddress table (whose foreign key is
iBroadLogPostalAddressId).
The tsEvent field gives the date of the event coinciding with the log (for example, delivery
date of the message) and tsLastModified gives the date of its last modification in the database.
In the case of deliveries on tables other than NmsRecipient, please refer to Using an existing
recipient table [page 151].
XtkFolder
This table coincides with the xtk:folder schema.
The tree is managed by the iParentId and iChildCount fields. The sFullName field gives the full
path of the folder in the tree. Finally, there is a unique index on the field representing the internal
name of the sName folder.
20 | © Neolane 2010
Description of Neolane's main modules
NmsRecipient
This table coincides with the nms:recipient schema.
Refer to NmsRecipient [page 14].
NmsDelivery
This table coincides with the nms:delivery schema.
Refer to NmsDelivery [page 16].
NmsBroadLogMsg
This table coincides with the nms:broadLogMsg schema.
It is an extension of the delivery log table.
Refer to NmsBroadLog [page 17].
NmsTrackingUrl
Refer to NmsTrackingLog and NmsTrackingUrl [page 19].
NmsTrackingLog
Refer to NmsTrackingLog and NmsTrackingUrl [page 19].
NmsTrackingStats
This table coincides with the nms:trackingStats schema.
It contains the aggregates on tracked logs.
22 | © Neolane 2010
Error code Values in nms:broad- NetSize values
LogMsg
20 Rejected Blacklisted number
Response management
NmsRemaHypothesis
This table coincides with the nms:remaHypothesis schema.
It contains the definition of the measurement hypothesis, namely:
General information
Internal name: sInternalName.
Label: sLabel.
Nature: sNature.
Link folder: iFolderId.
Status: iStatus, with the following values:
- 0 - Edit
- 1 - Pending
- 2 - Execution in progress
- 3 - Cancel in progress
- 4 - Canceled
- 5 - Finished
- 6 - Finished with errors
24 | © Neolane 2010
Total revenue of the hypothesis control group.
Average revenue of control group: dProofReactedAvgAmount.
Total revenue of the hypothesis control group.
Total margin of contacts: dContactReactedTotalMargin.
Total margin of contacts targeted in the hypothesis.
Average margin per contact: dContactReactedAvgMargin.
Total margin of contacts targeted in the hypothesis.
Total margin of control group: dProofReactedTotalMargin.
Total margin of control group targeted in the hypothesis.
Average margin of control group: dProofReactedAvgMargin.
Total margin of control group targeted in the hypothesis.
Additional revenue: dAdditionnalAmount.
(Average revenue of contacted-Average revenue of control group)*Number of contacted
Additional margin: dAdditionnalMargin.
(Average margin of contacted-Average margin of control group) / number of contacted
Average cost per contact (SQL expression).
Calculated cost of the delivery / Number of contacted.
ROI (SQL expression)
Calculated cost of the delivery / Total margin of contacted
Effective ROI (SQL expression)
Calculated cost of the delivery / Additional margin.
Significance: iSignificativy(SQL expression).
Contains values 0 to 3 depending on the significance of the campaign.
NmsRemaMatchRcp
NmsRemaMatchRcp This table coincides with the nms:remaMatchRcp schema.
It contains a record representing an individual's reaction to a given hypothesis. These records
were created during hypothesis execution.
The following data is contained in this table:
Hypothesis ID: iHypothesisId.
Delivery log ID: iBroadLogId.
Proposition ID: iPropositionId.
Control group: iControlGroupId.
For further information, refer to Response management [page 229].
NmsOffer
This table coincides with the nms:offer schema.
It contains the definition of each marketing offer.
General information
Internal name: sName.
Label: sLabel.
Offer code: sCode.
ID of the linked category (XtkFolder): iCategoryId
Validity
Activity flag: iActive.
Start of the validity period: tsStart.
End of the validity period: tsEnd.
26 | © Neolane 2010
NmsPropositionRcp
This table coincides with the nms:propositionRcp schema.
It contains the cross-channel log of marketing propositions sent to each individual. The record
is created when a proposition is prepared or effectively made to an individual.
General information
Offer ID: iOfferId.
Recipient ID: iRecipientID.
Event date: tsEvent.
Status: iStatus, with the following values:
- 0 - Generated
- 1 - Presented
- 2 - Interesting
- 3 - Accepted
- 4 - Delayed
- 5 - Rejected
Interaction ID: iInteractionId
Location ID: iOfferSpaceId
ID of the associated delivery log: iBroadLogId
Weight of the proposition: dWeight
Rank of the proposition: iRank.
NmsOfferSpace
This table coincides with the nms:offerSpace schema.
It contains the definition of locations on which propositions are made.
Internal name: sName
Label: sLabel
Channel: iChannel
Name of the interaction schema: sInputSchema
Name of the representation schema: sOutputSchema
Environment ID (XtkFolder): iEnvId
Linked folder ID: iFolderId
Value of the initial proposition status: iDefaultStatus
NmsOfferContext
This table coincides with the nms:offerContext schema.
It contains additional criteria on the applicability of the proposition as well as the definition of
the weight calculation formula.
General information
Internal name: sName
Label: sLabel
Proposition ID: iOfferId
NmsOfferView tables
There is one table per channel:
Website: NmsWebOfferView (nms:webOfferView schema)
Call center: NmsCallCenterOfferView (nms:callCenterOfferView schema)
Email: NmsEmailOfferView (nms:emailOfferView schema)
Direct mail: NmsPaperOfferView (nms:paperOfferView schema)
Mobile: NmsMobileOfferView (nms:mobileOfferView schema)
Each table contains representations of the propositions on a channel.
General information
Offer ID: iOfferId
Location ID: iSpaceId
Activity flag: iActive
28 | © Neolane 2010
Campaign management
NmsOperation
this table coincides with the nms:operation schema. It contains the data of marketing
campaigns.
General information
Single numerical internal primary key: iOperationId.
Unique internal name: sInternalName.
Label: sLabel.
Nature: sNature.
Linked program: iProgramId. This field is a link towards the nms:operation table.
Status (calculated expression), with the following values:
-0- Being edited (name="edition" value="0"/>)
-1- Started
-2- Finished
-3- Cancel in progress
-4- Canceled
-5- Evaluation
Assigned operator: iOwnerId. This field is a link towards the XtkOperator table.
NmsDeliveryOutline
This table coincides with the nms:delivryoutline schema. It contains the extended properties of
the delivery (delivery outline).
Unique internal primary key: iDeliveryOutlineId.
Unique internal name: sName.
Label: sLabel.
30 | © Neolane 2010
Description (xml memo).
Linked campaign: iOperationId. This field is a link towards the NmsOperation table.
Message type: iMessageType.
Estimated provisional cost: dEstimatedCost.
Breakdown of the estimated provisional cost (xml structure).
This table contains the attributes of one or more deliveries.
NmsDlvOutlineItem
This table coincides with the nms:dlvOutlineItem schema. It contains the articles of a
delivery outline.
Numerical internal primary key: iDlvOutlineItemId.
Unique internal name: sName.
Label: sLabel.
Delivery outline: iDeliveryOutlineId. This field is a link towards the NmsDeliveryOutline
table.
Offer: iOfferId. This field is a link towards the NmsOffer table.
Marketing resource: iAssetId.
Type of item: iType, with the following values:
-0- Item
-1- Personalization fields
-2- Resource
-3- Offer
-100- Channel information
NmsDeliveryCustomization
NmsDeliveryCustomization This table coincides with the nms:deliveryCustomization schema.
It contains the personalization fields of a delivery.
Unique internal primary key: iDeliveryCustomizationId.
Unique internal name: sName.
Label: sLabel.
Outline item: iDlvOutlineItemId. This field is a link towards the NmsDlvOutlineItemI
table.
Delivery outline: iDeliveryOutlineId. This field is a link towards the NmsDeliveryOutline
table.
Associated folder: iFolderId. This field is a link towards the XtkFolder table.
Value: sValue.
Type of value: iType, with the following values:
-3- Integer
-5- Floating point
-6- Text
-7- Date + time
NmsBudget
This table coincides with the nms:budget schema. It contains the data of a budget on a campaign,
a plan, a program, a task and/or deliveries.
Unique internal primary key: iBudgetId.
Unique internal name: sName.
Label: sLabel.
Budget schedule: tsStart and tsEnd.
Linked budget: iAttachedBudgetId. this field is a link towards the NmsBudget table.
Associated folder: iFolderId. This field is a link towards the XtkFolder table.
Amounts with the following values:
Allocated: dAllocated.
Spent: dExpensed.
Invoiced: dInvoiced.
Reserved: dReserved.
Planned: dPlanned.
Committed: dCommitted.
NmsDocument
NmsDocument This table coincides with the nms:document schema. It contains the marketing
documents of the campaign in the form of files (images, excel or word files, etc.)
Unique internal primary key: iDocumentId.
Unique internal name: sInternalName.
Label: sLabel.
Campaign: iOperationId. This field is a link towards the NmsOperation table.
XtkWorkflow
This table coincides with the xtk:workflow schema. It contains campaign targeting.
Unique internal primary key: iWorkflowId.
Unique internal name: sInternalName.
Label: sLabel.
Associated folder: iFolderId. This field is a link towards the XtkFolder table.
Status: iState, with the following values:
-0- Being edited
-9- Request to start in simulation mode
-10- Start requested
-11- Started
-12- Pause requested
-13- Paused
-14- Resume requested
32 | © Neolane 2010
-15- Stop requested
-16- Stop in progress
-17- Restart requested
-18- Restarting
-20- Finished
Campaign: iOperationId. This field is a link towards the NmsOperation table.
XtkFolder
This table coincides with the xtk:folder schema. It contains the properties of a campaign
program.
Unique internal primary key: iWorkflowId.
Unique internal name: sName.
Label: sLabel.
NmsTask
This table coincides with the nms:task schema. It contains the definition of a marketing task.
Unique internal primary key: iTaskId.
Unique internal name: sName.
Label: sLabel.
Nature: sNature.
Task schedule: tsStart and tsEnd.
Status: iStatus, with the following values:
-0- Being edited
-1- Scheduled
-2- In progress
-3- Finished
-4- Canceled
Type: iType, with the following values:
-0- Task
-1- Checkpoint
-2- Grouping
Progress (as a %): iProgress.
Priority: iPriority.
Duration: iDuration
Realized load: tsRealizedDuration.
Planned load: tsPlannedDuration
Description (xml memo).
Approval type: iValidationType, with the following values:
-0- Target validation
-1- Content validation
-2- Budget validation
NmsAsset
This table coincides with the nms:asset schema. It contains the definition of a marketing resource.
Unique internal primary key: iAssetId.
Unique internal name: sInternalName.
Label: sLabel.
Nature: sNature.
Status: iStatus, with the following values:
-0- Being edited
-1- Pending approval
-2- Approval in progress
-3- Approved
-4- Rejected
-5- Pending publication
-6- Publication in progress
-7- Published
-8- Canceled
Publication date: tsPublication.
Availability date: tsAvailability
Associated folder: iFolderId. This field is a link towards the XtkFolder table.
Owner: iOwnerId. This field is a link towards the XtkOperator table.
NmsRemaHypothesis
This table coincides with the nms:remaHypothesis schema. It contains the definition of a
measurement hypothesis.
You may also refer to Response management [page 23].
Unique internal primary key: iRemaHypothesisId.
34 | © Neolane 2010
Unique internal name: sInternalName.
Label: sLabel.
Nature: sNature.
Delivery: iDeliveryId. This field is a link towards the NmsDelivery table.
Campaign: iOperationId. This field is a link towards the NmsOperation table.
Proposition: iOfferId. This field is a link towards the NmsOffer table.
Associated folder: iFolderId. This field is a link towards the XtkFolder table.
Indicators
Number of reactions: iTransaction.
Number contacted iContactReacted.
Control group count: iProofReacted.
Contacted response rate: dContactReactedRate.
Response rate of the control group: dProofReactedRate.
Total revenue of population contacted: dContactReactedTotalAmount.
Total revenue of the control group: dProofReactedTotalAmount.
Total margin of contacted: dContactReactedTotalMargin.
Total margin of control group: dProofReactedTotalMargin.
NmsOffer
This table coincides with the nms:offer schema. It contains the properties of a marketing
offer.
You may also refer to Offer management [page 26].
Unique internal primary key: iOfferId.
Unique internal name: sName.
Label: sLabel.
Offer schedule: tsStartDate and tsEndDate.
Activated: iActive.
Associated category: iCategoryId. This field is a link towards the XtkFolder table.
Table of Contents
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Basic principles . . . . . . . . . . . . . . . . . . . . . . . . 38
Syntax of schemas . . . . . . . . . . . . . . . . . . . . . . . 38
Identifying a schema . . . . . . . . . . . . . . . . . . . . . . 39
Schema structure . . . . . . . . . . . . . . . . . . . . . . . . 40
Description . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Data types . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Properties . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Collections . . . . . . . . . . . . . . . . . . . . . . . . . 45
Referencing with XPath . . . . . . . . . . . . . . . . . . . . . 45
Building a string via the compute string . . . . . . . . . . . . . . . . 46
Database mapping . . . . . . . . . . . . . . . . . . . . . . . . 47
Description . . . . . . . . . . . . . . . . . . . . . . . . . . 47
XML fields . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Calculated fields . . . . . . . . . . . . . . . . . . . . . . . . 49
Feature fields . . . . . . . . . . . . . . . . . . . . . . . . . 49
Indexed fields . . . . . . . . . . . . . . . . . . . . . . . . . 50
Management of keys . . . . . . . . . . . . . . . . . . . . . . 51
Links: relation between tables . . . . . . . . . . . . . . . . . . . 54
Editing schemas . . . . . . . . . . . . . . . . . . . . . . . . . 59
Presentation . . . . . . . . . . . . . . . . . . . . . . . . . 59
Example: creating a contract table . . . . . . . . . . . . . . . . . 60
Schema of an existing table or a view . . . . . . . . . . . . . . . . . 64
Presentation . . . . . . . . . . . . . . . . . . . . . . . . . 64
Implementation . . . . . . . . . . . . . . . . . . . . . . . . 64
Introduction
This chapter describes how to configure extension schemas in order to extend the conceptual data
model of the Neolane database.
Basic principles
The physical and logical structure of the data carried in the application is described in XML. It obeys
a grammar specific to Neolane, called a schema.
A schema is an XML document associated with a database table. It defines data structure and describes
the SQL definition of the table:
The name of the table,
Fields,
Indexes,
Links with other tables,
It also describes the XML structure used to store data:
Elements and attributes,
Hierarchy of elements,
Element and attribute types,
Default values,
Labels, descriptions, and other properties.
Syntax of schemas
The root element of the schema is <srcSchema>. It contains the <element> and <attribute>
sub-elements.
38 | © Neolane 2010
The first <element> sub-element coincides with the root of the entity.
Note:
The root element of the entity has the same name as the schema.
The <element> tags define the names of entity elements. <attribute> tags of the schema
define the names of the attributes in the <element> tags which they have been linked to.
Identifying a schema
A data schema is identified by its name and its namespace.
A namespace lets you group a set of schemas by area of interest. For example, the cus
namespace is used for customer-specific configuration (customers).
Warning:
As a standard, the name of the namespace must be concise and must contain only authorized
characters in accordance with XML naming rules.
Identifiers must not begin with numeric characters.
Certain namespaces are reserved for descriptions of the system entities required for the
operation of the Neolane application:
xtk: concerning platform system data,
Schema structure
The XML document of a data schema must contain the <srcSchema> root element with the name
and namespace attributes in order to populate the schema name and its namespace.
Let us use the following XML content to illustrate the structure of a data schema:
Description
The point of entry of the schema is its main element. It is easy to identify because it has the same
name as the schema, and it should be the child of the root element. The description of the content
begins with this element.
In our example, the main element is represented by the following line:
The elements <attribute> and <element> that follow the main element enable you to define the
locations and names of the data items in the XML structure.
In our sample schema, these are:
40 | © Neolane 2010
The following rules must be adhered to:
Each <element> and <attribute> must be identified by name via the name attribute.
Warning:
The name of the element should be concise, preferably in English, and include only
authorized characters in accordance with XML naming rules.
Only <element> elements can contain <attribute> elements and <element> elements
in the XML structure.
An <attribute> element must have a unique name within an <element>.
The use of <elements> in multi-line data strings is recommended.
Data types
The data type is entered via the type attribute in the <attribute> and <element> elements.
When this attribute is not populated, string is the default data type unless the element contains
child elements. If it does, it is used only to structure the elements hierarchically (<location>
element in our example).
The following data types are supported in schemas:
string: character string. Examples: a first name, a town, etc.
The size can be specified via the length attribute (optional, default value "255").
boolean: Boolean field. Example of possible values: true/false, 0/1, yes/no, etc.
byte, short, long: integers (1 byte, 2 bytes, 4 bytes). Examples: an age, an account
number, a number of points, etc.
double: double-precision floating point number. Examples: a price, a rate, etc.
date, datetime: dates and dates + times. Ecamples: a birth date, a purchase date, etc.
timespan: durations. Example: seniority.
memo: long text fields (multiple lines). Examples: a description, a comment, etc.
uuid: "uniqueidentifier" fields to support a GUID (supported in SQL Server only).
Note:
To contain a uuid field in engines other than SQL Server, the "newuuid()" function must
be added and completed with its default value.
Note:
The label is associated with the current language of the instance.
Example:
The label can be seen from the Neolane client console input form:
Note:
The description is associated with the current language of the instance.
Example:
Default values
The default property lets you define an expression returning a default value on content creation.
The value must be an expression compliant with XPath language. For more on this, refer to Referencing
with XPath [page 45].
Example:
Current date:
Counter:
In this example, the default value is constructed using the concatenation of a string and calling
the CounterValue function with a free counter name. The number returned is incremented by
one at each insertion.
42 | © Neolane 2010
Note:
In the Neolane client console, the Administration>Counters node is used to manage
counters.
Enumerations
Free enumeration
The userEnum property lets you define a free enumeration to memorize and display the
values entered via this field. The syntax is as follows:
The name given to the enumeration can be chosen freely and shared with other fields.
These values are shown in a drop-down list from the input form:
Note:
In the Neolane client console, the Administration>Enumerations node is used to manage
enumerations.
Set enumeration
The enum property lets you define a fixed enumeration used when the list of possible values
is known in advance.
The enum attribute refers to the definition of an enumeration class populated in the schema
outside the main element.
Enumerations allow the user to select a value from a drop-down list instead of entering the
value in a regular input field:
dbenum enumeration
The dbenum property lets you define an enumeration whose properties are similar to those of
the enum property.
However, the name attribute does not store the value internally, it stores a code which lets you
extend the concerned tables without modifying their schema.
The values are defined via the Administration>Enumerations node.
This enumeration is used for specifying the nature of campaigns, for example.
Example
Here is our example schema with the properties filled in:
44 | © Neolane 2010
Collections
A collection is a list of elements with the same name and the same hierarchical level.
The unbound attribute with the value "true" lets you populate a collection element.
Example: definition of the <group> collection element in the schema.
It is also possible to define complex expressions, such as the following arithmetic operations:
: adds 1 to the content of the gender attribute,
: constructs a string by taking the value of the e-mail address
added to the creation date between parentheses (for the string type, put the constant in quotes).
High-level functions have been added to the expressions in order to enrich the potential of this
language.
You can access the list of available functions via any expression editor in the Neolane client console:
Example:
: returns the current date
: returns the year of the date contained in the "created" attribute.
: returns the domain of the e-mail address.
46 | © Neolane 2010
Result of the computed string for a recipient:
Note:
If the schema does not contain a Compute string, a Compute string is populated by default
with the values of the primary key of the schema.
Database mapping
The SQL mapping of our example schema gives the following XML document:
Description
The root element of the schema is no longer <srcSchema>, but <schema>.
This takes us to another type of document, which is generated automatically from the source
schema, simply referred to as the schema. This schema will be used by the Neolane application.
The SQL names are determined automatically based on element name and type.
The SQL naming rules are as follows:
table: concatenation of the schema namespace and name
In our example, the name of the table is entered via the main element of the schema in
the sqltable attribute:
field: name of the element preceded by a prefix defined according to type ('i' for integer,
'd' for double, 's' for string, 'ts' for dates, etc.)
Note:
SQL names can be overloaded from the source schema. To do this, populate the "sqltable" or "sqlname"
attributes on the element concerned.
The SQL script to create the table generated from the extended schema is as follows:
XML fields
By default, any typed <attribute> and <element> element is mapped onto an SQL field of the
data schema table. You can, however, reference this field in XML instead of SQL, which means that
the data is stored in a memo field ("mData") of the table containing the values of all XML fields. The
storage of these data is an XML document that observes the schema structure.
To populate a field in XML, you must add the xml attribute with the value "true" to the element
concerned.
Example: here are two examples of XML field use.
Multi-line comment field:
The "html" type lets you store the HTML content in a CDATA tag and display a special HTML edit
check in the Neolane client interface.
The use of XML fields lets you add fields without needing to modify the physical structure of the
database. Another advantage is that you use less resources (size allocated to SQL fields, limit on the
number of fields per table, etc.).
The main disadvantage is that it is impossible to index or filter an XML field.
48 | © Neolane 2010
Calculated fields
A calculated field is not stored physically in the table; it is a data item that is calculated
dynamically when the query is submitted.
There are two types of calculated fields: SQL calculated fields and XML calculated fields.
1 SQL calculated field: the data is calculated by the database engine from a simple
expression. This type of field is well suited to extracting a substring in order to display the
domain of an e-mail address or to calculate the age by subtracting the date of birth from
the current date.
Note:
SQL expressions can be used directly via the [SQLDATA[expression_sql]] escape
sequence. This syntax must be used with care, however, because the populated SQL
depends on the engine of the current database.
2 XML calculated field: lets you use a more complex expression with XML fields or
conditional tests. The expression is evaluated by the application layer on receipt of the
query data.
The disadvantage of using XML calculated fields is that not all SQL functions of the XPath
expressions are supported.
A calculated field must populate the expr attribute containing the expression to be submitted.
A calculated field is SQL type by default. To declare an XML calculated field, add the xml
attribute (with the value set to "true").
Example:
Returns the e-mail domain:
Feature fields
Feature fields are used to extend the data of an existing table, but with remote storage in an
ancillary table.
This type of field can be very useful when the table to be extended has a high volume. The
space allocated to the data is then used on demand.
There are two types of feature fields:
1 simple fields: only one possible value for the feature,
2 multiple choice fields: the feature is associated with a collection element and can
therefore contain several possible values.
To declare a feature field, add the feature attribute (with value "true") to an <element> or
an <attribute> of the schema.
Note:
The name of the table containing the feature is:
Indexed fields
Indexes let you optimize the performance of the SQL queries used in the application.
An index is declared from the main element of the data schema.
Note:
As a standard, indexes are the first elements declared from the main element of the schema.
Example:
Adding an index to the e-mail address and city:
50 | © Neolane 2010
Adding a unique index to the "id" name field:
Management of keys
A table must have at least one key for identifying a record in the table.
A key is declared from the main element of the data schema.
Example:
Adding a key to the e-mail address and city:
52 | © Neolane 2010
The extended schema generated:
Auto-incremental key
The primary key of most Neolane tables is a 32-bit long integer auto-generated by the database
engine. The calculation of the key value depends on a sequence (by default, the XtkNewId
SQL function) generating a number that is unique in the entire database. The content of the
key is automatically entered on insertion of the record.
The advantage of an incremental key is that it provides a non-modifiable technical key for the
joins between tables. In addition, this key does not occupy much memory because it uses a
double-byte integer.
From version 4.05 onwards, in the source schema you can specify the name of the sequence
to be used with the pkSequence attribute. If this attribute is not given in the source schema,
the XtkNewId default sequence will be used. The application uses dedicated sequences for
the nms:broadLog and nms:trackingLog schemas (NmsBroadLogId and
NmsTrackingLogId respectively) because these are the tables that contain the most records.
To declare an auto-incremental key, populate the autopk attribute (with value "true") on the main
element of the data schema.
Example:
Declaring an incremental key in the source schema:
In addition to the definition of the key and its index, a numeric field called "id" has been added to
the extended schema in order to contain the auto-generated primary key.
Important:
A record with a primary key set to 0 is automatically inserted on creation of the table. This record is
used to avoid outer joins, which are not effective on volume tables. By default, all foreign keys are
initialized with value 0 so that a result can always be returned on the join when the data item is not
populated.
54 | © Neolane 2010
The various types of associations (known as "cardinalities") are as follows:
Cardinality 1-1: one occurrence of the source table can have at most one corresponding
occurrence of the target table.
Cardinality 1-N: one occurrence of the source table can have several corresponding
occurrences of the target table, but one occurrence of the target table can have at most
one corresponding occurrence of the source table.
Cardinality N-N: one occurrence of the source table can have several corresponding
occurrences of the target table, and vice-versa.
A link must be declared in the schema containing the foreign key of the table linked via the
main element:
Note:
As a standard, links are the elements declared at the end of the schema.
Example 1
1-N relation to the "cus:company" schema table:
The link definition is supplemented by the fields making up the join, i.e. the primary key with its
XPath ("@id") in the destination schema, and the foreign key with its XPath ("@company-id") in the
schema.
The foreign key is added automatically in an element that uses the same characteristics as the
associated field in the destination table, with the following naming convention: name of target schema
followed by name of associated field ("company-id" in our example).
Extended schema of the target ("cus:company"):
56 | © Neolane 2010
A reverse link to the "cus:recipient" table was added with the following parameters:
name: automatically deduced from the name of the source schema (can be forced with
the "revLink" attribute in the link definition on the source schema)
revLink: name of reverse link
target: key of linked schema ("cus:recipient" schema)
unbound: the link is declared as a collection element for a 1-N cardinality (by default)
integrity: "define" by default (can be forced with the "revIntegrity" attribute in the link
definition on the source schema).
Example 2
In this example, we will declare a link towards the "nms:address" schema table. The join is
an outer join and is populated explicitly with the recipient's e-mail address and the "@address"
field of the linked table ("nms:address").
Example 3
1-1 relation to the "cus:extension" schema table:
Example 4
Link to a folder ("xtk:folder" schema):
The default value returns the identifier of the first eligible parameter type file entered in the
"DefaultFolder('nmsFolder')" function.
The definition of the "companyEmail" name key was extended with the foreign key of the "company"
link. This key generates a unique index on both fields.
58 | © Neolane 2010
Editing schemas
Presentation
To edit, create and configure the schemas, click the Administration>Configuration>Data
schemas node of the Neolane client console.
The edit field shows the XML content of the source schema:
Note:
The "Name" edit control lets you enter the schema key made up of the name and namespace.
The "name" and "namespace" attributes of the root element of the schema are automatically
updated in the XML editing zone of the schema.
Note:
When the source schema is saved, generation of the extended schema is automatically launched.
60 | © Neolane 2010
2 Choose the Create a new table in the data model option and click Next.
4 Create the content of the table. We recommend using the entry wizard to make sure no settings
are missing. To do this, click the Insert button and choose the type of setting to be added.
Add the type of contract and place an index on the contract number.
62 | © Neolane 2010
Neolane v5.1 - Configuration Guide - Extending schemas | 63
6 Save the schema to generate the structure:
7 Update the database structure to create the table which the schema will be linked to. For more
on this, refer to Updating the physical structure of the database [page 69].
Presentation
When the application needs to access the data of an existing table, an SQL view, or data from a
remote database, create its schema in Neolane with the following data:
Name of table: enter the name of the table (with its alias when a dblink is used) with the "sqltable"
attribute,
schema key: reference the reconciliation field(s),
indexes: used to generate queries,
The fields and their location in the XML structure: fill in only the fields used in the application,
links: if there are joins with the other tables of the base.
Implementation
To create the corresponding schema, apply the following stages:
64 | © Neolane 2010
1 Edit the Administration>Configurations>Data schemas of the Neolane tree and click
New.
2 Select the Access data from an existing table or an SQL view option and click Next.
Important:
The schema must be populated with the view="true" attribute on the <srcSchema> root
element in order not to generate a table creation SQL script.
Example:
66 | © Neolane 2010
2 Select the Access external data option and click Next.
3 Select the external account and choose the table you want.
Warning:
Some out-of-the-box schemas must not be extended: mainly those for which the following settings
are defined:
and .
The following schemas must not be extended: , ,
, , , , , ,
, , , , ,
, , , , , ,
, , , , .
This list is not exhaustive.
68 | © Neolane 2010
The root element of the schema must contain the extendedSchema attribute with the
name of the schema to be extended as its value.
An extension schema does not have its own schema: the schema generated from the
source schema will be filled in with the fields of the extension schema.
Example: extension of the nms:recipient schema.
The nms:recipient extended schema is filled in with the field populated in the extension
schema:
The dependingSchemas attribute on the root element of the schema references the
dependences on the extension schemas.
The belongsTo attribute on the field fills in the schema where it is declared.
Important:
Do not modify the standard schemas of the application, but rather the schema extension
mechanism. Otherwise, modified schemas will not be updated at the time of future upgrades
of the application. This can lead to malfunctions in the use of Neolane.
The Add stored procedures and Import initialization data options are used to launch the initial
SQL scripts and the data packages executed when the database is created.
You can import a set of data from an external data package. To do this, select Import a package
and enter the XML file of the package.
70 | © Neolane 2010
Follow the steps and view the database update SQL script:
Note:
This is in an editing field and can be modified in order to delete or add SQL code.
72 | © Neolane 2010
2 The next page lets you enter the properties of the field to be added.
Note:
By default, the added fields are declared with the property user (with the value "true"). This
lets you display and edit the field in the input form of the extended schema using a
"treeEdit"-type control (refer to Input forms [page 83]).
As a standard, the fields are displayed first (Active, Activated, etc.) and in alphabetical order. The
structuring elements come next (Postal address, Location), and finally the links (E-mail information,
Folder, etc.).
Primary keys are identified by a red key, and foreign keys are identified by a yellow key.
Links are distinguished graphically depending on whether they belong to the table. Those that start
from the table, i.e. that have the foreign key in the table, are displayed first (E-mail information,
Folder, Country). "Reverse" collection links (Subscription, Orders, etc.) are displayed at the end.
You must then reboot the Neolane application server and reconnect to the client console.
74 | © Neolane 2010
Examples
Extending a table
To extend the nms:recipient schema recipient table, apply the following procedure:
1 Create the extension schema (cus:extension) using the following data:
In this example, an indexed field (fidelity) is added, and the location element (which
already existed in the nms:recipient schema) is supplemented with an enumerated field
(area).
Warning:
Remember to add the extendedSchema attribute to reference the extension schema.
2 Check that the extended schema is the nms:recipient schema and that the additional
data is present:
The table type is autopk in order to create an auto-generated primary key to be used by the join
of the link to the recipient table.
Schema generated:
76 | © Neolane 2010
The table creation SQL script is as follows:
Note:
The SQL command INSERT INTO at the end of the script lets you insert an identifier record
set to 0 in order to simulate outer joins.
Extension table
An extension table lets you extend the content of an existing table in a linked table of cardinality
1-1.
The purpose of an extension table is to avoid limitations on the number of fields supported in
a table, or to optimize the space occupied by the data, which is consumed on demand.
Note:
This type of table can be replaced by feature fields. For further information, refer to Feature
fields [page 49].
Note:
The definition of the link between the recipient table and the extension table must be populated from
the schema containing the foreign key.
Overflow table
An overflow table is an extension table (cardinality 1-1), but the declaration of the link to the table
to be extended is populated in the schema of the overflow table.
The overflow table contains the foreign key to the table to be extended. The table to be extended
is therefore not modified. The relation between the two tables is the value of the primary key of the
table to be extended.
Creating the overflow table schema (cus:overflow):
78 | © Neolane 2010
Note:
The primary key of the overflow table is the link to the table to be extended ("nms:recipient"
schema in our example).
Relationship table
A relationship table lets you link two tables with cardinality N-N. This table contains only the
foreign keys of the tables to be linked.
Example of a relationship table between groups (nms:group) and recipients (nms:recipient).
Source schema of the relationship table:
80 | © Neolane 2010
This element must contain the fields required to export the campaigns. These fields should
have the same name as the corresponding fields in the custom schema. For example, if the
schema is company:customer, the seedMember schema should be extended as follows:
Expression placeholders
You may need to export data that is not stored in a single field but calculated at export time.
Such data cannot be calculated for the seed records, however a placeholder for the expression
can be used. Add a new field in the seedMember schema and then populate the seeds with
a fixed value.
Example of implementation:
When exporting expressions, the application generates aliases that must be replaced. The
export model must be changed and the column containing the expression changed to reference
the field:
and
and
and
82 | © Neolane 2010
CHAPTER 3
Input forms
Table of Contents
Identifying a form . . . . . . . . . . . . . . . . . . . . . . . . 83
Form structure . . . . . . . . . . . . . . . . . . . . . . . . . 84
Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Containers . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Editing a link . . . . . . . . . . . . . . . . . . . . . . . . . 89
List of links . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Memory list controls . . . . . . . . . . . . . . . . . . . . . . 93
Non-editable fields . . . . . . . . . . . . . . . . . . . . . . . 95
Radio button . . . . . . . . . . . . . . . . . . . . . . . . . 95
Checkbox . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Navigation hierarchy edit . . . . . . . . . . . . . . . . . . . . . 96
Expression field . . . . . . . . . . . . . . . . . . . . . . . . 96
Context of forms . . . . . . . . . . . . . . . . . . . . . . . . 96
Wizards . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Editing forms . . . . . . . . . . . . . . . . . . . . . . . . . . 99
An input form lets you edit an instance associated with a data schema from the Neolane client
console.
Identifying a form
An input form is identified by its name and namespace.
Form structure
The description of a form is a structured XML document that observes the grammar of the form
schema xtk:form.
The XML document of the input form must contain the <form> root element with the name and
namespace attributes to populate the form name and namespace.
By default, a form is associated with the data schema with the same name and namespace. To
associate a form with a different name, set the entity-schema attribute of the <form> element to
the name of the schema key.
To illustrate the structure of an input form, let us describe an interface using the "cus:recipient"
example schema:
The description of the edit controls starts from the <form> root element.
84 | © Neolane 2010
An edit control is entered in an <input> element with the xpath attribute containing the
path of the field in its schema.
The edit control automatically adapts to the corresponding data type and uses the label defined
in the schema.
Note:
You can overload the label defined in its data schema by adding the label attribute to the
<input> element:
By default, each field is displayed on a single line and occupies all available space depending
on the type of data.
Formatting
The layout of the controls looks like the layout used in HTML tables, with the possibility of
dividing a control into several columns, interlacing elements, or specifying the occupation of
available space. Remember, however, that formatting only lets you divide the area up by
proportions; you cannot specify fixed dimensions for an object.
To display the controls of the above example in two columns:
The <container> element with the colcount attribute lets you force the display of child
controls onto two columns.
The colspan attribute on a control extends the control by the number of columns entered in
its value:
The <static> tag with the separator type lets you add a separator bar with a label contained in
the label attribute.
A help text was added using the <static> tag with a help type. The content of the text is entered
in the label attribute.
Containers
Containers let you group a set of controls. They are represented by the <container> element. They
were used above to format controls over several columns.
The xpath attribute on a <container> lets you simplify the referencing of child controls. The
referencing of controls is then relative to the parent <container> parent.
Example of a container without "xpath":
86 | © Neolane 2010
Example with the addition of "xpath" to the element called "location":
Types of container
Containers are used to construct complex controls using a set of fields formatted in pages.
Tab container
A tab container formats data in pages that are accessible from tabs.
The main container is defined by the type="notebook" attribute. Tabs are declared in the
child containers, and the label of the tabs is populated from the label attribute.
Note:
A style="down|up(by default)" feature forces the vertical positioning of tab labels below
or above the control. This feature is optional.
The main container is defined by the type="iconbox" attribute. The pages associated with the
icons are declared in the child containers. The label of the icons is populated from the label attribute.
The icon of a page is populated from the img="<image>" attribute, where <image> is the name
of the image corresponding to its key made up of the name and namespace (e.g.,
"xtk:properties.png").
The images are available from the Administration > Configuration > Images node.
Visibility container
You can mask a set of controls via a dynamic condition.
This example illustrates the visibility of controls on the value of the "Gender" field:
88 | © Neolane 2010
Enabling container
This container lets you enable or disable a set of data from a dynamic condition. Disabling a
control prevents it from being edited. The following example illustrates the enabling of controls
from the value of the "Gender" field:
Editing a link
Remember that a link is declared in the data schema as follows:
Target selection is accessible via the edit field. Entry is assisted by type-ahead so that a target
element can easily be found from the first few characters entered. The search is then based
on the Compute string defined in the targeted schema. If the schema does not exist after
validation in the control, a confirmation message of on-the-fly target creation is displayed. The
confirmation creates a new record in the target table and associates it with the link.
A drop-down list is used to select a target element from the list of records already created.
The Modify the link (folder) icon launches a selection form with the list of targeted elements
and a filter zone:
You can also sort the list with the <orderBy> element:
Control properties
noAutoComplete: disables type-ahead (with the value "true")
createMode: creates the link on the fly if it does not exist. Possible values are:
none: disables creation. An error message is displayed if the link does not exist
inline: creates the link with the content in the edit field
edition: displays the edit form on the link. When the form is validated, the data is saved
(default mode)
noZoom: no edit form on the link (with the value "true")
form: overloads the edit form of the targeted element
List of links
A link entered in the data schema as a collection element (unbound "true") must go through a list in
order to view all the elements associated with it.
The principle consists in displaying the list of linked elements with optimized data loading (downloading
by data batch, execution of the list only if it is visible).
Example of a collection link in a schema:
90 | © Neolane 2010
List control is defined by the type="linklist" attribute. The list path must refer to the collection
link.
The columns are declared via the <input> elements of the list. The xpath attribute refers
to the path of the field in the target schema.
A toolbar with a label (defined on the link in the schema) is automatically placed above the
list.
The list can be filtered via the Filters button and configured to add and sort the columns.
The Add and Delete buttons let you add and delete collection elements on the link. By default,
adding an element launches the edit form of the target schema.
The Detail button is automatically added when the zoom="true" attribute is completed on
the <input> tag of the list: it lets you launch the edit form of the selected line.
Filtering and sorting can be applied when the list is being loaded:
Relationship table
A relationship table lets you link two tables with N-N cardinality. The relationship table contains
only the links to the two tables.
Adding an element to the list should therefore let you complete a list from one of the two links
in the relationship table.
Example of a relationship table in a schema:
The xpathChoiceTarget attribute lets you launch a selection form from the link entered. Creating
the relationship table record will automatically update the link to the current recipient and the selected
service.
Note:
The xpathEditTarget attribute lets you force editing of the selected line on the link entered.
List properties
noToolbar: hides the toolbar (with value "true")
toolbarCaption: overloads the toolbar label
toolbarAlign: modifies the vertical or horizontal geometry of the toolbar (possible values:
"vertical"|"horizontal")
img: displays the image associated with the list
form: overloads the edit form of the targeted element
zoom: adds the Zoom button to edit the targeted element
xpathEditTarget: sets editing on the link entered
xpathChoiceTarget: for addition, launches the selection form on the link entered
92 | © Neolane 2010
Memory list controls
Memory lists let you edit the collection elements using list data preloading. This list cannot be
filtered or configured.
These lists are used on XML mapped collection elements or on low-volume links.
Column list
This control displays an editable column list with a toolbar containing Add and Delete buttons.
The list control must be filled in with the type="list" attribute, and the path of the list must
refer to the collection element.
The columns are declared in the child <input> tags of the list. Column label and size can be
forced with the label and colSize attributes.
Note:
Sort-order arrows are added automatically when the ordered="true" attribute is added to
the collection element in the data schema.
Zoom in a list
Insertion and editing of the data in a list can be entered in a separate edit form.
The edit form is completed from the <form> element under list definition. Its structure is identical
to that of an input form.
The Detail button is added automatically when the zoom="true" attribute is completed on the
<input> tag of the list. This attribute lets you launch the edit form of the selected line.
Note:
Adding the zoomOnAdd="true" attribute forces the edit form to be called on insertion of a list
element.
94 | © Neolane 2010
zoom: adds the Zoom button to edit the targeted element
zoomOnAdd: launches the edit form on the addition
xpathChoiceTarget: for addition, launches the selection form on the completed link
Non-editable fields
To display a field and prevent it from being edited, use the <value> tag or complete the
readOnly="true" attribute on the <input> tag.
Example on the "Gender" field:
Radio button
A radio button lets you choose from several options. The <input> tags are used to list the
possible options, and the checkedValue attribute specifies the value associated with the
choice.
Example on the "Gender" field:
Checkbox
A checkbox reflects a Boolean state (selected or not). By default, this control is used by
"Boolean" (true/false) fields. A variable taking a default value of 0 or 1 can be associated with
this button. This value can be overloaded via the checkValue attributes.
Expression field
An expression field updates a field dynamically from an expression; the <input> tag is used with
an xpath attribute to enter the path of the field to be updated and an expr attribute containing the
update expression.
Context of forms
The execution of an input form initializes an XML document containing the data of the entity being
edited. This document represents the context of the form, and can be used as a workspace.
96 | © Neolane 2010
: sets the value of the "boolean1" field to
"true"
: updates with the content of the
"lastName" attribute
The context of the form can be updated when initializing and closing the form via the <enter>
and <leave> tags.
Note:
The <enter> and <leave> tags can be used on the <container> of pages ("notebook" and
"iconbox" types).
Expression language
A macro-language can be used in form definition in order to perform conditional tests.
The tag executes the instructions specified under the tag if
the expression is verified:
Wizards
A wizard guides you through a set of data entry steps in the form of pages. The data entered
is saved when you validate the form.
A wizard has the following structure:
SOAP methods
SOAP method execution can be launched from a populated <leave> tag at the end of a page.
The <soapCall> tag contains the call for the method with the following input parameters:
The name of the service and its implementation schema are entered via the name and service
attributes of the <soapCall> tag.
The input parameters are described on the <param> elements under the <soapCall> tag.
The parameter type must be specified via the type attribute. The possible types are as follows:
string: character string
boolean: Boolean
byte: 8-bit integer
98 | © Neolane 2010
short: 16-bit integer
long: 32-bit integer
short: 16-bit integer
double: double-precision floating point number
DOMElement: element-type node
The exprIn attribute contains the location of the data to be passed as a parameter.
Example:
Editing forms
The input form creation and configuration screen is accessible from the Administration >
Configuration > input forms folder of the Neolane client console:
Table of Contents
Presentation . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Definition of Neolane APIs . . . . . . . . . . . . . . . . . . . . 102
Using Neolane APIs . . . . . . . . . . . . . . . . . . . . . . 102
SOAP calls . . . . . . . . . . . . . . . . . . . . . . . . . 103
Data oriented API . . . . . . . . . . . . . . . . . . . . . . . . 106
Overview of the datamodel . . . . . . . . . . . . . . . . . . . . 106
Description of the model . . . . . . . . . . . . . . . . . . . . 106
Query and Writer . . . . . . . . . . . . . . . . . . . . . . . 106
Example . . . . . . . . . . . . . . . . . . . . . . . . . . 107
ExecuteQuery (xtk:queryDef) . . . . . . . . . . . . . . . . . . . 107
Write / WriteCollection (xtk:session) . . . . . . . . . . . . . . . . 116
Business oriented APIs . . . . . . . . . . . . . . . . . . . . . . 119
JavaScript example of the insertion of a resource in Neolane . . . . . . . . 120
Subscribe (nms:subscription) . . . . . . . . . . . . . . . . . . . 120
Unsubscribe (nms:subscription) . . . . . . . . . . . . . . . . . . 122
SubmitDelivery (nms:delivery) . . . . . . . . . . . . . . . . . . 123
Implementing SOAP methods in JavaScript . . . . . . . . . . . . . . . 124
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 124
Definition of a method library . . . . . . . . . . . . . . . . . . . 124
Current limitations . . . . . . . . . . . . . . . . . . . . . . . 126
Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Use SOAP methods in JavaScript . . . . . . . . . . . . . . . . . . . 126
Static methods . . . . . . . . . . . . . . . . . . . . . . . . 127
Non-static methods . . . . . . . . . . . . . . . . . . . . . . 127
Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Presentation
Warning:
The use of APIs in Neolane is reseved for power users and should be carried out with care. For
optimized use, we recommend that you restrict the number of API calls to make sure they operate
efficiently. We also encourage batch use. the max. number of calls per second is 10, unless your
architecture was designed for more.
Note:
The WSDL description of this service is completed in the example shown here: Web service
description: WSDL [page 130].
SOAP query
SOAP response
Error management
Example SOAP error response:
Important:
All Neolane Web services handle errors. It is therefore strongly recommended to test each call
in order to handle returned errors.
Example of error handling in C#:
Write
Write commands let you write simple or complex documents, with entries in one or more tables of
the base.
Example
Example in JavaScript of Writer use for inserting a recipient in the database.
ExecuteQuery (xtk:queryDef)
This method lets you perform queries from data associated with a schema. It takes an
authentication string (login/password or session token) and an XML document describing the
query to be submitted as parameters. The return parameter is an XML document containing
the result of the query in the format of the schema to which the query refers.
Definition of the "ExecuteQuery" method in the "xtk:queryDef" schema:
Note:
This is a "const" method. The input parameters are included in an XML document in the format
of the "xtk:queryDef" schema.
Expressions can be simple fields or complex expressions such as arithmetic operations or the
concatenation of strings.
It is possible to enter SQL code instead of XPath expressions using the sql attribute.
To limit the number of records to be returned, add the lineCount attribute to the <queryDef>
element.
To limit the number of records returned by the query to 100:
To retrieve the next 100 records, run the same query again, adding the startLine attribute.
Data grouping
To retrieve e-mail addresses referenced more than once:
The query can be simplified by adding the groupBy attribute directly to the field to be grouped:
Note:
It is no longer necessary to populate the <groupBy> element.
Bracketing in conditions
Here are two examples of bracketing on the same condition.
The simple version in a single expression:
This syntax simplifies the query when more than two data are used in the condition.
Examples on links
Links 1-1 or N1: when the table has the foreign key (the link starts from the table), the
fields of the linked table can be filtered or retrieved directly.
Example of a filter on the folder label:
Collection links (1N): the filtering on the fields of a collection table must be performed via
the EXISTS or NOT EXISTS operator.
To filter the recipients who have subscribed to the 'Newsletter' information service:
Direct retrieval of the fields of a collection link from the <select> clause is not recommended
because the query returns a cardinal product. It is used only when the linked table contains
only one record (example <node expr="").
Example on the "subscription" collection link:
To avoid binding a parameter, the "noSqlBind" attribute must be populated with the value 'true'.
Query-building tip:
To help with the syntax of a query, you can write the query using the generic query editor in the
Neolane client console (Tools/ Generic query editor... menu). To do this:
Returns:
Instead of:
Response:
Note:
This is a "static" method. The input parameters are included in an XML document in the format of
the schema to be updated.
Operating principle
Data reconciliation operates based on the definition of the keys entered in the associated schema.
The write procedure looks for the first eligible key based on the data entered in the input document.
The entity is inserted or updated based on its existence in the database.
The key of the schema of the entity to be updated is completed based on the xtkschema attribute.
Deleting a recipient:
Note:
For a deletion operation, the input document must contain only the fields that make up the
reconciliation key.
Note:
The name of the first <recipient-collection> element does not matter.
Example on links
Example 1
Associating the folder with a recipient based on its internal name (@name).
Note:
The operation "none" entered on the folder element defines a reconciliation on the folder without
update or insert.
Example 2
Updating the company (linked table in "cus:company" schema) from a recipient:
Example 3
Adding a recipient to a group with the group relation table ("nms:rcpGrpRel"):
Note:
The definition of the key is not entered in the <rcpGroup> element because an implicit key based
on the group name is defined in the "nms:group" schema.
Subscribe (nms:subscription)
This service lets you subscribe a recipient to an information service and update the recipient profile.
The following parameters are required in order to call the service:
a session token (for authentication),
internal name of the subscription service,
an XML document containing the recipient information (from the "nms:recipient" schema),
a Boolean for recipient creation.
Description of the "subscribe" method in the "nms:subscription" schema:
The definition of the reconciliation key must be entered via the _key attribute on the <recipient>
element of the XML document. The content of this attribute is a comma-separated XPath list.
This call does not return any data, except errors.
Important:
In the definition of the key, the referenced XPaths do not distinguish between elements and
attributes, and the XPath of the e-mail address is therefore "email" instead of "@email".
Response:
The definition of the reconciliation key must be entered via the _key attribute on the <recipient>
element of the XML document. The content of this attribute is a comma-separated XPath list.
If the recipient is not present in the database or is not subscribed to the concerned information
service, the service performs no action and does not generate an error.
The call does not return any data, except errors.
Response:
A delivery scenario must be created from the Neolane client console. It contains the parameters
common to all deliveries (sender address or duration of validity of the message).
The input XML document is a delivery scenario fragment that obeys the structure of the
"nms:delivery" schema. It will contain all additional data that could not be defined statically
in the scenario (e.g., list of recipients to target).
The call does not return any data, except errors.
Introduction
It is possible to create SOAP methods in JavaScript. This function simply enables applicative processes,
it can avoid developing JSPs and their calling in the forms.
These SOAP methods behave in the same way as those defined natively in the application. The same
attributes are supported: static, key only and const.
Warning:
The methods implemented in JavaScript must be defined based on out-of-the-box methods.
Example:
The testLog(msg) method is declared in an nms:recipient extension
Note:
The namespace and the name used for the library are independent from the namespace and
schema name where the declaration is found.
Definition
SOAP methods are implemented in the form of JavaScript function grouped in a script
representing a library.
Note:
A method library can group functions for various schemas or vice versa, the functions of one
schema can be defined in separate libraries.
The script can contain code to be executed during initial library loading.
1. Name
The name of the function must comply with the following format:
Example:
The following JavaScript function is the implementation of the method described above. It
shall be defined in the 'JavaScript Code' type entity using the 'cus:test' name.
2. Signature
Current limitations
These methods are not visible in WSDL.
Glossary
Method library
A set of JavaScript functions contained in a 'JavaScript Code' type entity.
Method declaration
XML entity <method> in the schema.
Method definition
Definition of the JavaScript function in the 'JavaScript Code' entity.
Signature
The list of arguments in a function and their type.
Response
Non-static methods
To use non-static SOAP methods, it is necessary first to retrieve an entity using the "get" or
"create" methods on the corresponding schemas.
The following example invokes the ExecuteQuery method of the "xtk:queryDef" schema:
General information
All API methods are presented in the form of Web services. This enables you to manage all
Neolane functions via SOAP calls, which are the native entry point of the Neolane application
server. The Neolane console itself only uses SOAP calls.
Web services let you create many applications from a third-party system:
Synchronous alerts, notification, and real-time scenario execution from a back office or
transaction system,
Development of special interfaces with simplified functionality (Web interfaces, etc.),
Feeding and lookup of data in the database while observing trade rules and remaining
isolated from the underlying physical model.
The input parameter of this method is an XML document in the format of the "xtk:queryDef" schema.
Types
Type definitions are based on XML schemas. In our example, the "ExecuteQuery" method takes an
"s:string" string and an XML document (<s:complexType>) as parameters. The return value of the
method ("ExecuteQueryResponse") is an XML document (<s:complexType>).
PortType
Associates the messages on the "ExecuteQuery" operation triggered by the query ("input")
generating a response ("output").
Binding
Specifies the SOAP communication protocol (<soap:binding>), data transport in HTTP (value
of the "transport" attribute) and the data format for the "ExecuteQuery" operation. The body
of the SOAP envelope contains the message segments directly without transformation.
Connectivity
When you use external SOAP APIs, you need to use a session token that conveys the login used and
ensures authentication.
There are two possible authentication modes:
via a logon: login + Neolane password which creates a session token. The session token expires
automatically after a certain amount of time,
or
via the login + password stored in the application: this operating mode requires an https connection
to secure exchanges.
It is also possible to use an authentication via the IP address (trust), which enables you to sidestep
the password.
For more on this, refer to Safety: authentication mechanism [page 132]
Tip:
To retrieve a session token associated with a login, you must connect to the client console using the
desired login and retrieve the session token value ("__sessiontoken") from the page properties of
the home page.
When the authentication string is not completed in the SOAP call, an intermediate page is
automatically displayed. This enables you to enter a login and password to return a valid session
token.
Note:
You can use the "HTTPS" protocol to secure exchanges so that unencrypted data is not sent
through the network. You must then configure the Web server that hosts the Neolane Web
services.
Java
PHP examples
Writing to the database
Writing to the database with the "Write" method from an input form:
Source code:
Note:
A drop-down list displays the services that are active in the database.
Source code:
Queries
The first step consists in collecting the data from the profile. To achieve this, you must use
the ExecuteQuery method of :
This method involves two parameters:
sessiontoken: identifier/password
document: XML document defining the query
The following is an example of an XML document defining the query:
This query must be made using the /nl/jsp/soaprouter.jsp URL of your Neolane application server:
http://myserver.neolane.net/nl/jsp/soaprouter.jsp
To recover the next 100 records, use the same query again and add the attribute.
Example:
In our example, we find the requested data from the profile (account, email, format and
mobilePhone) and the list of active subscriptions.
Submitting modifications
To submit the modifications made to the profile, you must create a Web form, then call the
ValidateForm method of the nms:webForm schema on this form.
This method involves three parameters:
sessiontoken: identifier/password,
formName: name of the form,
recipients: modified data of the profile.
Example of a SOAP call for modifying a profile:
Table of Contents
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
View attribute . . . . . . . . . . . . . . . . . . . . . . . . 152
Names of tables and columns . . . . . . . . . . . . . . . . . . . 152
Indexed fields . . . . . . . . . . . . . . . . . . . . . . . . 153
Calculated fields . . . . . . . . . . . . . . . . . . . . . . . 153
Automated schema generation . . . . . . . . . . . . . . . . . . 154
Setting up a delivery mapping . . . . . . . . . . . . . . . . . . . . 155
Configuring the schemas linked to the recipient table . . . . . . . . . . . 155
Creating a delivery mapping . . . . . . . . . . . . . . . . . . . 162
Using delivery mapping . . . . . . . . . . . . . . . . . . . . . 163
Group-type list and filter configuration . . . . . . . . . . . . . . . . . 163
Group-type lists . . . . . . . . . . . . . . . . . . . . . . . . 163
Application filters . . . . . . . . . . . . . . . . . . . . . . . 165
Introduction
This section describes how Neolane exploits data stored in an existing database, separate from
the application database, without duplication of data; and how it uses this data as the basis
for profiles for deliveries. This functionality provides several advantages:
No update stream to and from the Neolane database,
No changes in the processes operating on the existing database,
Overview
The characteristics of a schema that references an existing table are as follows:
Neolane must not modify SQL objects relative to existing tables,
The names of tables and columns must be specified explicitly,
Indexes must be handled in a particular way.
View attribute
Source schemas accept the view attribute for the srcSchema root element. The view="true"
attribute tells the database structure update wizard to ignore this schema. The application is therefore
prohibited from synchronizing the table, its columns and its indexes with the corresponding schema.
When this attribute is set to true, the schema is used only to generate SQL queries to access the
data of this table.
Indexed fields
When sorting the records of a list from the client console, better performance is obtained by
sorting on indexed fields. Declaring an index in a schema makes the console display the indexed
fields with a red line under the sort-order arrow to the left of the column label, as in the screen
below:
An index is implicitly declared for each key and link declaration of the source schema. Declaration
of the index can be prevented by specifying the attribute noDbIndex="true":
Example:
Calculated fields
It is still possible to define calculated fields in the context of a mapping. You can use the
predefined expressions and functions of Neolane by referencing other fields with XPath
expressions. You can also use SQL expressions directly using the [SQLDATA[expression_sql]]
escape sequence.
Example:
Using Neolane expressions with XPath expressions:
If the database to be explored does not host a Neolane instance, a new instance should be declared
in the command line.
Instance creation:
These commands do not trigger the creation of SQL objects specific to the Neolane application; they
only define a way of connecting to the database.
The XML file produced will look like this:
In our example, we will create a customer schema, which will be a very simple table
containing the following fields: registration number, first name, last name, e-mail address,
mobile phone number. The target is to be able to send e-mail or SMS alerts to the persons
stored in this table.
Example schema (cus:customer)
3 If you need to add a postal address, please use the following type of structure:
4 Change the content of the home page so that it points towards the new recipient schema.
For further information, refer to Home page [page 177].
5 Create a new schema for the tables of the delivery logs, exclusion logs and tracking logs based
on the out-of-the-box nms:broadLog schema.
Example schema for customer delivery logs:
Note:
Creating schemas for exclusion logs isn't mandatory. However, it is recommended in the
case of large delivery volumes.
8 Next, launch the database structure update wizard to create the table. Also insert a few records
for test purposes.
Hypothesis configuration
If you are using the Response management module, you must extend the nms:remaMatch
schema in order to create a link towards the new delivery log schema.
For further information, refer to Response management with a recipient table outside of Neolane
[page 231].
Coupon configuration
In order to use the coupon management module on a schema other than nms:recipient, you
need to create an extension schema of nms:couponvalue.
There are two possibilities:
1 If you only need one targeting dimension, simply change the target in the link. For example,
to add a link related to a customer, add the following code:
2 However, to define two links, simply make the same change and add the following lines
of code:
2 Change the nms:webApp form to specify the recipient table outside of Neolane and disable the
zoom.
Example schema for form modification:
In the response list, webAppLogRcp occurences are replaced with webAppLogClt and
recipient occurrences are replaced with customer to specify the new recipient table.
The zoom attribute is added and its value set to false to disable zooming in surveys.
Group-type lists
Presentation
A group-type list is a fixed selection of existing unique recipients (unique primary key). A
group-type list is normally used to record the result of a targeting, in which case the list is a
snapshot of the result of a query or an advanced segmentation. It is not updated when the
database evolves. The user can manually add or remove certain profiles from the list: this type
of operation does not create new profiles or delete existing profiles.
Note in particular the definitions of integrity on the links (integrity and revIntegrity properties): the
deletion of a customer-list relationship must not lead to the deletion of a list or a customer. On the
other hand, the deletion of a customer or list must lead to the deletion of the relationship.
One final detail is, however, missing from this adjustment: as soon as it is possible to have lists of
recipients or customers, it becomes necessary to specify which of these two tables a list refers to.
We will therefore extend the nms:group schema to add an indicator of the table used. To do this,
we use the targetSchema enumeration of nms:broadLog (see above: Extension of the delivery log
schema "nms:broadLog"):
Application filters
Once the schema corresponding to the table of profiles to be used has been created, application
filters can be created, as for any schema, making sure the Nms_defaultRcpSchema option
is modified to declare the new profile table. These filters will be available in the target selection
screen in the same way and with the same functionality as the segments for the recipients
(possibility of using parameter input forms, hierarchical folder organization, etc.).
It is recommended that you re-create the main existing recipient filters for specific schemas
(subject to the filters being applicable to these schemas), in particular:
Recipients of a delivery action,
Recipients of a campaign,
To give it priority in the filter selectors, select the "Main filter" option in the advanced filter parameters.
Table of Contents
Navigation hierarchy . . . . . . . . . . . . . . . . . . . . . . . 168
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Configuration . . . . . . . . . . . . . . . . . . . . . . . . 170
Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Home page . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Structure . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Configuration . . . . . . . . . . . . . . . . . . . . . . . . 181
Rendering of the Neolane console . . . . . . . . . . . . . . . . . . 182
Home page . . . . . . . . . . . . . . . . . . . . . . . . . 183
Email notifications . . . . . . . . . . . . . . . . . . . . . . . 184
Dashboards and schedules . . . . . . . . . . . . . . . . . . . . 186
Web applications . . . . . . . . . . . . . . . . . . . . . . . 187
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Creating a Web application . . . . . . . . . . . . . . . . . . . . 188
Creating a filter on a folder . . . . . . . . . . . . . . . . . . . . 191
Creating a button to configure a new Web application . . . . . . . . . . 193
Adding a detail . . . . . . . . . . . . . . . . . . . . . . . . 193
Filtering and updating the list . . . . . . . . . . . . . . . . . . . 195
Integrating a Web application on the home page . . . . . . . . . . . . 200
Overview
The navigation hierarchy works like a file browser (e.g. Windows Explorer). Folders may contain
sub-folders. Selecting a node displays the view corresponding to the node.
To add a new folder to the tree, right-click the folder in the branch where you wish to insert
a folder, and select Add new folder. In the shortcut menu, select the type of file to be created.
The XML document contains the <navtree> root element with the name and namespace attributes
to specify the document name and namespace. The name and namespace make up the document
identification key.
The global commands of the application are declared in the document from the <commands>
element.
The declaration of file types is structured in the document with the following elements: <model>
and <nodeModel>.
Global commands
A global command lets you launch an action. This action can be an input form or a SOAP call.
Global commands are accessible from the main Tools menu.
The description of a global command is entered in the <command> element with the following
properties:
name: internal name of the command: the name must be entered and unique
label: label of the command.
desc: description visible from the status bar of the main screen.
form: form to be launched: the value to be entered is the identification key of the input
form (e.g. "cus:recipient")
rights: list of named rights (separated by a comma) allowing access to this command.
The list of available rights is accessible from the Administration/Access
management/Named rights folder.
promptLabel: displays a confirmation box before execution of the command
A <command> element can contain <command> sub-elements. In this case, the parent
element lets you display a sub-menu made up of these child elements.
The commands are displayed in the same order as they are declared in the XML document.
A command separator lets you display a separation bar between commands. It is identified by
the '-' value contained in the command label.
The optional presence of the <soapCall> tag with its input parameters defines the call of a
SOAP method to be executed. For further information on the SOAP API, refer to the jsapi.chm
online help section.
The form context can be updated on initialization from the <enter> tag. For further information
on this tag, refer to the documentation on input forms.
Example:
Declaration of a global command to launch the "xtk:import" form:
Folder type
A folder type lets you give access to the data of a schema. The view associated with the folder consists
of a list and an input form.
The folder type configuration structure is as follows:
The folder type declaration must be entered under a <model> element. This element lets you define
a hierarchical organization visible from the Add new folder menu. A <model> element must
contain <nodeModel> elements and other <model> elements.
The name and label attributes populate the internal name of the element and the label displayed
in the Add new folder menu.
Note:
The name of the input form can be overloaded by entering the form attribute in the <view>
element.
The default configuration of the list columns is entered via the <columns> element. A column
is declared on a <node> element containing the xpath attribute with the field to be referenced
in its schema as its value.
Example: declaration of a folder type on the "nms:recipient" schema.
Shortcut commands
A shortcut command lets you launch an action on selecting the list. The action can be an input form
or a SOAP call.
Commands are accessible from the Action menu of the list or the associated menu button.
The command configuration structure is as follows:
The description of a command is entered on the <command> element with the following properties:
name: internal name of the command: the name must be entered and unique.
label: label of the command.
desc: description visible from the status bar of the main screen.
form: form to be launched: the value to be entered is the identification key of the input form
(e.g. "cus:recipient").
rights: list of named rights (separated by a comma) allowing access to this command. The list
of available rights is accessible from the Administration/Access management/Named rights
folder.
promptLabel: displays a confirmation box before execution of the command.
Linked folder
There are two types of folder management operations:
1 The folder is a view: the list displays all records associated with the schema, with the
possibility of system filtering entered in the folder properties.
2 The folder is linked: the records in the list are implicitly filtered on the folder link.
For a linked folder, the folderLink attribute on the <nodeModel> element must be populated.
This attribute contains the name of the link on the folder configured in the data schema.
Example of declaration of a linked folder in the data schema:
The configuration of the <nodeModel> on the link of the folder named "folder" is as follows:
The navigation hierarchy configuration is divided over several XML documents. It operates on a similar
principle to schema extension: all documents are merged to generate a single document containing
the whole configuration. This document cannot be edited, and is displayed via the "Preview" tab.
The edit field provides the content of the XML document:
The preview automatically generates the merged document containing the complete
configuration:
Home page
During connection to the client interface, the Neolane home page is displayed by default. It
enables the user to access the various Neolane modules available in the application. This home
page may however be customized to change its content and aspect. The following section
describes how to configure the Neolane home page based on your needs, including for displaying
applications other than those provided by Neolane.
Structure
The home page is made up of several sections that coincide with the various Neolane modules
or with each user application installed on your workstation.
The content of the home page is configured in XML documents available via
Administration/Configuration/Navigation hierarchies.
For each out-of-the-box module or installed application, there is a document that obeys the grammar
of the xtk:navtree schema.
For example, the out-of-the-box file coincides with the Delivery module, the
file coincides with the Campaign module, and the file with the MRM module, etc.
For more information on the xtk:navtree schema, refer to Navigation hierarchy [page 168].
The following document coincides with the following home page:
webApp matches a Neolane Web application. Refer to the Advanced user guide for further
information.
Example of a view pointing towards the Web application for recipient overview:
url refers to the object to be edited and lets you display a jssp, form or page.
Example of a URL that lets you open the package import form:
Example of a URL that lets you open the plan schedule page:
Configuration
You can tailor the existing home page, change it altogether or create an additional page.
Warning:
Remember that you must not modify the out-of-the-box files. The Neolane console will not let
you do so since the files are in read-only format. However, if the files were modified, the
console could no longer be updated automatically.
The <windows> element lets you create a tab container, the <window> element lets you
create a tab and the url attribute lets you reference the jssp document of the home page.
You may then insert <application> and <view> elements to reference your applications and
your views.
If you wish to replace the default Neolane home page, create a new file with your own content.
Create a xtk:navtree document and point it towards the new file.
To obtain the home page shown above, apply the following steps:
1 Create a style sheet ( in our example) and overload the styles of the HTML
rendering.
Email notifications
Here is an example of a rendered email notification.
To customize a notification, you can replace the images provided by default and modify the
header to match.
Simply modify this image to customize your dashboards with your own company logo for example.
Simply modify this image to customize your overviews with your own company logo for example.
Overview
In the following example, we will create an overview-type Web application to display all the
Web applications in your database. Configure the following elements:
a filter on the folder (refer to Creating a filter on a folder [page 191]),
a button for creating a new Web application (refer to Creating a button to configure a new
Web application [page 193]),
detail display for each entry in the list (refer to Adding a detail [page 193]),
one filter per link editing tool (refer to Creating a filter using a link editor [page 196]),
For further information on web applications, refer to Web applications [page 201].
4 Open the Page activity of your web application and open a list (Static element>List).
5 In the Data tab of your list, select the type of Web applications document and the
Label, Created on and Type output columns.
Note:
The name of your variable must match the name of the element linked to the folder (defined
in the schema), i.e. in this case. You must re-use this name when you reference
the table.
6 Place your cursor on your list, and in the Advanced tab, reference the variable previously created
in the XPath folder filter tab of the list. You must use the name of the element concerned by
the folder link, i.e. .
Note:
At this stage, the Web application is not within its application context, the filter can therefore not
be tested on the folder.
Adding a detail
When you configure a list in your overview, you can choose to display additional details for
each entry on your list.
1 Place your cursor on the previously created list element.
3 In the Data tab, add the Primary key, Internal name and Description column and select
the Hidden field option for each one.
This way, this information will only be visible in the detail of each entry.
For more information on adding details to the overview, refer to Adding details [page 214].
For information on element layout, refer to "Web applications and online surveys" in the Advanced
user guide.
3 Apply dottedFilter.
This style is referred to in the Single-page Web application template selected previously.
4 In the Storage tab, click the Edit variables link and create an XML variable for filtering
data.
5 Place your cursor on the list element and create a filter via the Data>Filter tab.
Warning:
To access the informaiton, the operator of the Web application must be identified in Neolane. This
type of configuration will not work in case of anynomous Web applications.
For comprehensive information on Web applications, refer to the Advanced user guide.
The APPxx attribute must coincide with the internal name of your Web application.
For further information on how to configure the home page, refer to Home page [page 177]
Table of Contents
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Presentation . . . . . . . . . . . . . . . . . . . . . . . . . 201
Configuration . . . . . . . . . . . . . . . . . . . . . . . . 202
Web applications . . . . . . . . . . . . . . . . . . . . . . . . 203
Presentation . . . . . . . . . . . . . . . . . . . . . . . . . 203
Implementation . . . . . . . . . . . . . . . . . . . . . . . 203
Examples of overview configuration . . . . . . . . . . . . . . . . . 207
Example of an editing form configuration . . . . . . . . . . . . . . . 224
Introduction
Presentation
Neolane incorporates a graphical module for defining and publishing web applications. This is
used to create pages, such as an editing form on an extranet, or notification forms including
data from the database with tables, charts, input forms, etc. This functionality lets you design
and post web pages where users can look up or enter information.
This chapter presents Web application management.
Main functionality
The web applications in Neolane give access to the following functionality:
Note:
Surveys and Web forms in Neolane are presented in the Advanced user guide.
Implementation steps
To create and post a web application, you must:
1 Create the content (fields, lists, tables, graphs, etc.).
You can also view the section presenting the available fields for surveys: all these fields are also
available for Web applications. this information is available in the Advanced user guide.
2 As required, you can add preloading, test, and saving steps, and configure the access control
system (mainly within the framework of an extranet publication).
3 Publishing the web application to make it available on an extranet or in Neolane.
Configuration
Web applications are stored in the Campaign execution>Resources>Web forms node of the
Neolane tree. The configurations are divided over the following folders:
Administration>Configuration>Form renderings: contains the rendering templates for the
web form presentation (applications and surveys). The template enables you to generate the
form. It also uses a CSS stylesheet. This stylesheet can be overloaded at the template level. For
more on this, refer to the Advanced user guide.
Campaign execution>Resources>Web forms>Web application templates: contains
form templates. To create a form, you must start with a template.
Web applications
Presentation
Neolane lets you create dynamic and interactive web applications with data from the database
and with content adapted to the rights of the connected user.
There are two types of web applications:
1 Overviews
Web applications are used in Neolane v5 to display information in the form of dashboards,
e.g. the list of recipients, status of deliveries, list of campaigns, stock management window,
etc. They then mainly allow data to be viewed and added. You can add data via the Neolane
interface, but this requires integration and appropriate expertise.
2 Extranet-type editing forms
Neolane lets you create web applications intended to be displayed on a web platform or
in an extranet context, for example. They then let you edit the data and save it in Neolane.
In this case, you can restrict access to authenticated users (via access control) and set up
data preloading based on several criteria.
Implementation
Warning:
It is highly recommended that the configurations applied be continually checked in order to
detect any errors early in the web application construction process. To check the rendering of
a modification, save the application, then click the Preview sub-tab.
Until the web application is published, the changes cannot be seen by the end user.
Tables
Editing forms
Editing form Web applications for an extranet are characterized by:
A preloading box
In most cases, the data to be displayed must be preloaded. Because the users who access these
forms are identified (via an access control), preloading is not necessarily encrypted.
A save box
Adding pages
Whereas "Overview"-type web applications all have a single page, editing forms can offer a
sequence of pages based on specific criteria (tests, selections, profile of connected operator,
etc.).
The operation of this type of web application is similar to Surveys, but without history management
or field archiving. Users usually access it via a login page where they must identify themselves.
Default configuration
By default, the recipients table lists the last 200 recipients who were subject to a modification. This
configuration is saved in the recipients web application, in the following table:
Add columns
You can easily adapt the data offered in this view. To do this, edit the Recipients table and
click the Data tab. You can add or delete columns, change their label, apply special formatting,
etc.
In the following example, the Age and Format columns were added, and the column containing
the account number was re-named.
Specify the size and, if necessary, modify the labels. Save changes, then click the Preview tab in
web applications to view the rendering.
Warning:
If you use the data from one field several times in a page, you must enter two distinct aliases in the
Alias column.
The values entered in the Size column are the length of the corresponding column.
Input the value 0 for the column to occupy the entire remaining length.
You can merge the data from several fields into one column, as in the example below:
To configure the Last name and first name column, the size of the Last name field must
be set to -1 and the label of the First name field must be changed.
You can then group as much information as necessary in a single column. For each one, the size
must be set to -1.
Adding details
By default, when you click a recipient, you access all the data in the recipient's profile in a new
window.
You can add details to be displayed when the user clicks on a recipient, as in the following example:
An additional tab lets you configure the data to be displayed. In order to be displayed, this
data must first be loaded. To do this, you must add it in the Data tab.
For example, to display the date of birth and postal address, as in our example, the following
configuration is used:
In the Additional detail tab, enter the content of the information to be displayed. You can use
existing fields and create additional texts. These texts are defined in the Texts sub-tab and should
be used with the following syntax: $Identifier.
This procedure lets you centralize the texts used in the table and manage translations, as for
HTML texts. The texts created in this sub-tab are used again in the integrated Neolane
translation tool, as in the example below:
Save changes and click the Preview tab to view the rendering of the web application. Additional
details are added to each recipient's profile.
To add this link, edit the Web application in the overall recipient view and select the Recipients
table. In the Additional detail tab, enter the following two lines under the first line:
Data formatting
The last part of this formula lets you indicate the date display mode. The possible formats are as
follows:
"%D %B %4Y" for display in 4 November 1998 format,
"%B %2Y" for display in November 98 format.
You can also use the following values:
false to display 04/11/1998,
true to display Wednesday 4 November 1998.
To do this, add the Quality rating field to the loaded data. Select the Hidden field option
to avoid displaying this information in the columns.
Edit the Additional detail tab and add the following line:
Save and click the Preview tab of the web application to view the rendering.
You can also display this percentage bar in the body of the table. For more on this, refer to
Task overview [page 224].
The value 32 is the maximum number of authorized characters in the Campaign column.
Adding images
This configuration is obtained via the following formatting formula (obtained via a JavaScript inline
condition):
For certain enumeration values, an image is associated by default, e.g. for deliveries or task
statuses. In this case, simply enter the relevant alias in the Alias column to display the label
or image, depending on your requirements:
To do this, display the progress of the task in the table and add the following parameter:
The size of this field is -1 in order to merge this data with the task label.
For the last formatting parameter, you can choose from the following colours:
blue (default color),
brown,
dkgray,
gray,
green,
red.
Note:
In this example, because the progress is expressed as a percentage, you must use the
bargraphPercent function. The bargraph function, on the other hand, must be used when the
data represented is not expressed as a percentage. It must then be between 0 and 1 to be represented
as a percentage in the table. See the representation of address quality in our example on the recipient
view here: Display a percentage bar [page 221].
Once the page has been approved, a test checks that the task is not canceled or finished and
that the data entered in the fields of the page can be saved. The Approval post-processing
script changes the status of the task to Finished when it reaches 100%.
Table of Contents
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Configuring schemas . . . . . . . . . . . . . . . . . . . . . . . 230
Response management with Neolane recipients . . . . . . . . . . . . 230
Response management with a recipient table outside of Neolane . . . . . . 231
Measurement process overload . . . . . . . . . . . . . . . . . . . 232
Introduction
Response management lets you measure transactions from a table, and depending on certain
hypotheses, the reactions of individuals to an offer or a delivery. The aim is to assess the
revenue generated by the action, the profiles of the people who react, the products or services
purchased, etc.
For example, following a delivery promoting an item, we wish to evaluate the revenue generated.
We apply the hypothesis that any recipient who has purchased at least one item in the month
following the triggering of the delivery has reacted to this action. Response management will
determine, based on this hypothesis, which purchase request lines should be assigned to it.
Then, based on this, it will be possible to determine the resulting revenue as the sum of these
lines.
The measurement hypothesis is launched by the operation process workflow (operationMgt).
Each hypothesis represents a separate process executed asynchronously with an execution
status (Being edited, Pending, Finished, Failed, etc.) and controled by a scheduler that manages
Configuring schemas
Application integration is required before using the reaction module, in order to define the various
tables to be measured as well as their relationship with deliveries, offers and individuals.
The out-of-the-box nms:rematch schema contains the reaction log table, i.e. the relation between
individuals, hypothesis and transaction table. This schema shall be used as an inheritance schema
for the reaction logs' final destination table.
The nms:remaMatchRcp schema comes as a standard, it contains the storage of reaction logs for
Neolane recipients (nms:recipient). In order to be used, it will need to be extended to be mapped
to a transaction table (purchases, etc.).
Note:
The transaction table must include links towards individuals. We also highly recommend adding an
event date.
The relationships between the tables concerning response management are presented in Response
management [page 23].
Important:
It is recommended not to modify the standard schemas of the application directly, but to use the
schema extension mechanism. Otherwise, any future upgrades of the application may overwrite the
modified schemas. This could lead to operating malfunctions in Neolane.
The iStep parameter contains the measurement processing step. The constants used have the
following functions:
PROCESS_STEP_INSERT_TMP_REMAMATCH: inserts the transaction of the hypothesis context
in the wkRemaMatch_[Hypothesis ID] temporary table.
PROCESS_STEP_INSERT_REMAMATCH: inserts or updates of the response logs in the
NmsRemaMatch[XXX] table.
PROCESS_STEP_COMPUTE_INDICATOR: updating of the hypothesis indicators.
The this.eHypothesis XML function contains the hypothesis definition.
The this.remaHypothesis XML object contains the hypothesis to be updated.
The this.strSql string contains the SQL code generated during the
PROCESS_STEP_INSERT_TMP_REMAMATCH and PROCESS_STEP_INSERT_REMAMATCH stages.
2 Create a Text type option via Administration>Options.
3 Assign it the internal name NmsResponse_JavascriptExt and indicate the name of the
JavaScript code in the Value field.
Table of Contents
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Calling of the offer engine by an inbound contact . . . . . . . . . . . . . 234
Integration via HTML . . . . . . . . . . . . . . . . . . . . . . 234
Integration via SOAP . . . . . . . . . . . . . . . . . . . . . . 235
Offer management with a recipient table outside of Neolane . . . . . . . . . 236
New recipient offer proposition schema . . . . . . . . . . . . . . . 236
Offer environment configuration . . . . . . . . . . . . . . . . . . 238
Typology rule configuration . . . . . . . . . . . . . . . . . . . . 238
Interaction schema extension . . . . . . . . . . . . . . . . . . . . 238
Introduction
Offer management lets you determine a set of offers to be targeted towards an individual
using business rules.
An offer is linked to an environment containing the definition of the individuals to be targeted,
the Neolane space where all offer propositions are saved and the offer presentation rules. The
environment includes the various communication channels used and the offer categories.
The offer categories group information on offer eligibility, i.e. the targeting criteria and context
specifying the offer's conditions of application based on channel and weighting. At this level
of the tree, it is possible to create personalized content depending on the desired channel.
This chapter deals with using a table of recipients outside of Neolane and on configuring the
search engine for offering and updating one or more offers.
In response to the query contained in the URL, the various offers are returned in the form of an
HTML table.
Note:
Context parameters are not supported and cannot be integrated into the URL.
Only spaces with a web representation are supported.
We recommend using a SOAP service to sidestep these limitations. Refer to Integration via SOAP
[page 235].
Offer proposition
For an offer proposition via SOAP, add the nms:proposition#Propose command followed
by the following parameters:
targetId: string type, primary key of the recipient (can be a composite key).
maxCount: string type, indicates the number of offer propositions for the contact.
context: XML element, lets you add context information in the schema of the location. If
the schema used is nms:interaction, <empty/> should be added.
In response to the query, the SOAP service will return the following parameters:
interactionId: ID of the interaction.
propositions: XML element, contains the list of propositions, each with their own ID and
HTML representation.
Offer update
Add the nms:interaction#UpdateStatus command to the URL, followed by these parameters:
propositions: XML element, contains the list of propositions given in output during an
offer proposition. Refer to Offer proposition [page 235].
status: string type, indicates the new status of the offer.
context: XML element, lets you add context information on the offer in the location schema.
If the schema used is nms:interaction, <empty/> should be added.
When configuring SOAP calls, insert the context XML element to reference context information
added in the interaction schema. For further information, refer to Integration via SOAP [page 235].
Table of Contents
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Web tracking tag: definition . . . . . . . . . . . . . . . . . . . . 242
Format of the data to be sent . . . . . . . . . . . . . . . . . . . 242
Data transmission methods . . . . . . . . . . . . . . . . . . . . 244
Setup stages . . . . . . . . . . . . . . . . . . . . . . . . . 244
Additional web tracking parameters . . . . . . . . . . . . . . . . . . 245
Definition of parameters . . . . . . . . . . . . . . . . . . . . . 245
Redirection server configuration . . . . . . . . . . . . . . . . . . 245
Creating web tracking tags . . . . . . . . . . . . . . . . . . . . . 246
Defining the URLs to be tracked in the application . . . . . . . . . . . . 247
On-the-fly creation of URLs to be tracked . . . . . . . . . . . . . . . 247
Inserting tags in your site . . . . . . . . . . . . . . . . . . . . . 248
Simple method . . . . . . . . . . . . . . . . . . . . . . . . 248
Optimum method . . . . . . . . . . . . . . . . . . . . . . . 250
Collecting all visits to a site . . . . . . . . . . . . . . . . . . . . . 252
Server configuration . . . . . . . . . . . . . . . . . . . . . . 253
Configuring a default matching campaign . . . . . . . . . . . . . . . 253
In addition to standard tracking that shows the behavior of an internet user clicking on a link
in an e-mail message, the Neolane platform lets you collect information on how internet users
browse your web site. This data collection is performed by the web tracking module.
The following table gives a list of special parameters supported by the redirection server.
A recipient is sent to the home page. This information will be stored in the delivery with
identifier 230 (i.e. e6 in base 16) unless a session cookie containing a delivery identifier is
sent with this query.
Note:
All values sent to the redirection server via URL parameters must be URL encoded. In the
examples given, note that the characters '=' and '|' are encoded as '%3D' and '%7C'
respectively.
Setup stages
The basic principle is the insertion of web tracking tags in certain pages of your web site.
There are two types of tags:
WEB: this tag tells you if the page has been visited,
TRANSACTION: operates like a Web tag, but with the possibility of adding information on the
business volume generated, for example (transaction amount, number of items purchased, etc.).
Apply the following steps to set up these tags:
1 Identify the pages you wish to track and determine their type (WEB or TRANSACTION).
2 Determine which additional information you wish to collect, and extend the nms:webTrackingLog
schema with the description of this information. By default, this schema can store the transaction
amounts and number of items per transaction.
3 Creating the web tracking tags. There are two ways of doing this:
Insert the URLs corresponding to these pages in your Neolane platform, then generate and
extract the associated web-tracking tags (from the Campaign execution>Resources>Web
tracking tags node of the client console).
Create the web-tracking tags yourself in "on-the-fly creation" mode: the URLs corresponding
to these pages will be automatically inserted in your Neolane platform.
4 Add these tags statically or dynamically in the pages you wish to track.
Note:
All WEB-type tags can be added as they are to the pages of your site. TRANSACTION tags must
be modified or added dynamically in order to contain the additional information (amount, items,
etc.).
Example:
Definition of parameters
Your Neolane platform offers two TRANSACTION-type web-tracking parameters as a standard:
amount: represents the amount of a transaction,
article: represents the number of items in a transaction.
These parameters are defined in the nms:webTrackingLog schema, and are some of the
indicators seen in reporting.
To define additional parameters, you must extend this schema. for further information, refer
to Extending schemas [page 37].
Example:
You can display the values of these parameters by configuring the tracking log list (of a delivery
or recipient).
Warning:
The correct calculation of the number of characters to be taken into account is important for
optimizing the web tracking performance of your platform.
Warning:
Remember to encode the value of the tagid parameter when it is used as a URL parameter.
Simple method
This method consists of sending an HTTP call to the redirection server by inserting an HTML
tag in the HTML source code of the web page you wish to track.
Warning:
This method uses the cookies sent by the web browser to identify the recipient, and is not 100%
reliable.
Example:
When you define a page to be tracked in the console, you can generate a sample web tracking tag
to copy and paste into the source code of your web page.
Optimum method
If you wish to control the information sent to the redirection server, the most reliable way is to
perform the HTTP query synchronously yourself using a page generating language.
Note:
Redirection and web tracking use cookies, and it is important that the web server performing
the synchronous HTTP call be in the same domain as the redirection server. The various HTTP
exchanges must convey the 'id', 'uuid', and 'uuid230' cookies.
Example: Dynamic generation in Java, with recipient authentication using their account
number.
Warning:
The Neolane platform is not intended for use as a web site tracking tool beyond the context of visiting
the site following a click in a message. When this option is enabled, it can cause very high use of
resources on the machines hosting your servers (redirection, application, and database). You are
advised to ensure that your hardware architecture can support this load, and to avoid placing web
tracking tags in the most frequently visited pages, such as the home page.
Redirection server
For the redirection server, set the trackWebVisitors attribute of the element
to true.
Application server
For the application server, set the logWebVisitors attribute of the element to
true.
Table of Contents
Purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Advantages . . . . . . . . . . . . . . . . . . . . . . . . . 256
Constraints . . . . . . . . . . . . . . . . . . . . . . . . . 256
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Implementation . . . . . . . . . . . . . . . . . . . . . . . . 257
Content configuration . . . . . . . . . . . . . . . . . . . . . . 260
Data schemas . . . . . . . . . . . . . . . . . . . . . . . . . 261
Identification of a schema . . . . . . . . . . . . . . . . . . . . 262
Schema structure . . . . . . . . . . . . . . . . . . . . . . . 263
Categorizing data by type . . . . . . . . . . . . . . . . . . . . 264
Properties . . . . . . . . . . . . . . . . . . . . . . . . . 264
Collection elements . . . . . . . . . . . . . . . . . . . . . . 266
Element referencing . . . . . . . . . . . . . . . . . . . . . . 267
Compute string . . . . . . . . . . . . . . . . . . . . . . . . 267
Edit schemas . . . . . . . . . . . . . . . . . . . . . . . . 268
Input forms . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Identifying a form . . . . . . . . . . . . . . . . . . . . . . . 269
Form structure . . . . . . . . . . . . . . . . . . . . . . . . 269
Formatting . . . . . . . . . . . . . . . . . . . . . . . . . 270
List type controls . . . . . . . . . . . . . . . . . . . . . . . 272
Containers . . . . . . . . . . . . . . . . . . . . . . . . . 275
Editing forms . . . . . . . . . . . . . . . . . . . . . . . . 278
Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Stylesheets . . . . . . . . . . . . . . . . . . . . . . . . . 279
JavaScript templates . . . . . . . . . . . . . . . . . . . . . . 284
Purpose
Warning:
The content management module (Neolane Content Manager) is an optional Neolane module.
The content management module is used to create recurrent newsletters (frequent delivery with a
defined graphical charter) or web sites (special event mini-sites, marketing campaigns).
It can help you to create, validate, and publish your messages.
Content management incorporates working group, workflow and content aggregation functionality.
This allows a message to be formatted automatically (e-mail, mail, SMS, MMS, fax, call center, web,
etc.).
Advantages
Content management provides the following advantages:
Structured message editing via input interfaces,
Separation of data content and how it is presented (generated in XML format),
Generating documents in multiple formats (html, txt, XML, etc.) from stylesheets to guarantee
compliance with graphical charters,
Recovery and automatic aggregation of external content flows,
Collaboration with workflow for data validation and checking.
Constraints
This mode of content creation does however involve a few constraints; including in particular:
Restricted freedom concerning the final document design,
The analysis of requirements must be rigorous so that end users will not be inconvenienced by
a missing function.
Overview
A data model, also known as a publication template, is defined for each content.
A content block is structured in an XML document for data storage. An edit interface is used to input
the content from the Neolane client console or via a web browser. The content can also be entered
automatically via the capture of XML flow or data aggregated in a database.
Implementation
To create content management in Neolane, at least the following elements must be configured:
1 A data schema, see Data schemas [page 261],
2 An input form, see Input forms [page 268],
3 A content building template (JavaScript template or XSL), see Formatting [page 279],
4 A publication template that links the first three elements, see Publication template [page 289].
You may then create content based on this publication template. To do this select the Content
management>Content node of the tree and right-click. Select Properties.
You can now create new content using the New button above the content list.
Content configuration
You can access the content management tree via the Content management node of the Neolane
client console.
Data schemas
A data schema is an XML document associated with content. It describes the XML structure
of the data of this content.
To create a data schema, follow these steps:
1 Click the New icon located above the list of data schemas.
2 Select the Create a schema option for content management, then click Next.
Identification of a schema
A data schema is identified by its name and its namespace.
A namespace lets you group a set of schemas by interest. For example, the "cus" namespace is used
for customer-specific configuration.
Warning:
As a standard, the name of the namespace must be concise and contain only authorized characters
in accordance with XML naming rules.
The following namespaces are reserved for descriptions of the system entities required for the
operation of the Neolane application:
xtk: concerning platform system data,
nl: concerning global use of the application,
nms: concerning delivery (recipient, delivery, tracking, etc.),
ncm: concerning content management.
The identification key of a schema is a string formed by the namespace and the name separated by
a colon; for example: cus:book.
To illustrate the structure of a data schema, we will start from the following XML content:
The point of entry of the schema is its main element. It is easy to identify because it has the
same name as the schema, and it must be the child of the root element. The description of
the content begins with this element.
In our example, the main element is represented by the following line:
The template attribute entered in the main element lets you extend the schema with generic
properties to all content definitions such as name, creation date, author, associated string,
etc.
These properties are described in the ncm:content schema.
Note:
The presence of the xmlChildren attribute indicates that the data structure entered via the
main element is stored in an XML document of the content instance.
The <attribute> and <element> elements following the main element let you define the
location and name of data in the XML structure.
The following rules must be applied:
Warning:
The name of the element must be concise and should include only authorized characters in
compliance with XML naming rules.
Only an <element> can contain an <attribute> or <element> element in the XML structure.
An <attribute> element must have a unique name in an <element>.
It is recommended to use an <element> for a multiple-line data string.
Properties
Various properties can be used to enrich the <element> and <attribute> elements of the data
schema.
The main properties used in content management are as follows:
label: short description,
desc: long description,
Note:
In the client console, the Administration>Counters node is used to manage the
counters.
userEnum: free enumeration to store and display the values entered via this field. The
syntax is as follows:
The name of the enumeration is a free choice and can be shared with other fields.
In the Neolane client console, these values are displayed in a drop-down list from the input
form:
Note:
In the client console, enumerations are managed using the
Administration>Enumerations node.
enum: fixed enumeration used when the list of possible values is known in advance.
The "enum" attribute refers to the definition of an enumeration class entered in the schema
outside the main element.
Enumerations let the user select a value from a drop-down list instead of entering it in a
classic input field:
Collection elements
A collection is a list of elements with the same name and at the same hierarchical level.
The unbound attribute with the value "true" lets you populate a collection element.
In our example, the <chapter> and <page> elements are collection elements. The "unbound"
attribute must therefore be added to the definition of these elements:
Element referencing
Element referencing is used a great deal in content schemas. It enables you to factorize the
definition of an <element> element so that it can be referenced on other elements with the
same structure.
The ref attribute on the element to be referenced must be completed with the path (XPath)
of the reference element.
Example: adding of an Appendix section with the same structure as the <chapter> element
of our example schema.
The chapter structure is moved to the element with the name "section" outside the main
element. The chapter and section reference the "section" element.
Compute string
A Compute string is an XPath expression used to construct a string representing a content
instance.
The Compute string of a content schema must be:
The preview generates the extended schema. For further information about extended schemas, refer
to Extending schemas [page 37].
When the source schema is saved, extended schema generation is launched automatically.
Note:
The Name edit control lets you enter the key of the schema, consisting of the name and namespace.
The name and namespace attributes of the schema root element are automatically updated in the
XML edit field of the schema.
Input forms
An input form lets you edit a content instance via an input interface from the Neolane client console.
Identifying a form
An input form is identified by its name and namespace, just like data schemas.
The identification key of a form is a string formed by the namespace and the name separated
by a colon; for example: cus:book.
Form structure
The XML document of an input form must contain the <form> root element with the name
and namespace attributes to populate the form name and its namespace, respectively.
By default, a form is associated with the data schema that has the same name and namespace.
To associate a form with a different name, enter the schema key in the entity-schema
attribute of the <form> element.
To illustrate the structure of an input form, we describe an interface based on our example
schema "cus:book":
The description of the edit elements begins with the <form> root element.
An edit control is entered in an <input> element with the xpath attribute containing the
path of the field in its schema.
The edit control automatically adapts to the corresponding data type and uses the label defined in
the schema.
By default, each field is displayed on one line and occupies all of the available space, depending on
the type of data.
Important:
The input form must reference a type="contentForm" attribute on the <form> element to
automatically add the frame required for content to be input.
Note:
By adding the label attribute to the <input> element, you can overload the label defined in its data
schema; for example:
Formatting
The arrangement of the controls relative to each other looks like the arrangement used in HTML
tables, with the possibility of dividing a control into several columns, of interlacing elements, or of
specifying the occupation of available space. Bear in mind, however, that formatting authorizes the
distribution of proportions only; you cannot specify fixed dimensions for an object.
Example: we return to the previous example, displaying the controls in two columns:
Note:
The <static> element occupies an empty area in a column.
The colspan attribute on a control extends the control by the number of columns indicated
as its value:
Note:
The <static> element was removed because the "Language" control occupies all columns.
The type="frame" attribute adds a frame around the child controls, with the label indicated
in the label attribute:
A separator bar with a label was added with a separator-type <static> element.
The <static> elements also let you display help text in the form with the help type.
Note:
The "colcount" attribute was added to the <form> element to force the display of the child controls
in two columns.
The list control must be filled in with the type="list" attribute, and the path of the list must
refer to the collection element.
The columns are declared by the child <input> elements of the list.
Note:
The up and down ordering arrows are added automatically when the ordered="true" attribute
is completed for the collection element in the data schema.
By default, the toolbar buttons are aligned vertically. They can also be aligned horizontally:
The toolbarCaption attribute forces horizontal alignment of the toolbar and fills in the title
above the list.
Note:
For the collection element label not to be displayed to the left of the control, add the
nolabel="true" attribute.
The definition of the edit form is specified via the <form> element under the list element. Its
structure is identical to the structure of an input form.
A Detail button is automatically added when the zoom="true" attribute is entered in the list
definition. This lets you open the edit form on the selected line.
Note:
Adding the zoomOnAdd="true" attribute forces the edit form to be called on insertion of an element
of the list.
The list control must be filled in with the type="notebooklist" attribute, and the path of the
list must refer to the collection element.
The title of the tab contains the value of the data entered via the xpath-label attribute.
The edit controls must be declared under a <container> element that is a child of the list
control.
Use the toolbar buttons to add or delete list elements.
Note:
The left and right ordering arrows are added automatically when the ordered="true" attribute
is populated for the collection element in the data schema.
Containers
Containers let you group a set of controls. They exist via the <container> element. They
have already been used to format controls in several columns and for the control of the tab
list.
They are also used to simplify the referencing of controls with the xpath attribute. Control
referencing is then relative to the parent <container> element.
Example of a container without "xpath":
Types of containers
Containers are used to construct complex controls using a set of fields formatted in pages.
Tab container
A tab container formats data in pages that are accessible from tabs.
The main container is defined with the type="notebook" attribute. Tabs are declared in the child
containers, and the label of the tabs is entered via the label attribute.
Icon list
This container displays a vertical iconbox used to select pages.
The main container is defined with the type="iconbox" attribute. The pages associated with
the icons are declared in the child containers. The label of the icons is entered via the label
attribute.
An image can be displayed for each page with the img="<image>" attribute, where
<image> is the name of an image corresponding to its key constructed with the name and
namespace (e.g. "ncm:article.png"). Images are accessible via the Administration >
Configuration > Images node.
Visibility container
You can mask a set of controls via a dynamic condition.
This example illustrates the visibility of controls on the value of the "language" field:
Activation container
This container lets you enable or disable a set of data via a dynamic condition. Disabling a control
makes it non-editable. The following example illustrates the enabling of controls via the value of the
"language" field:
An activation container is defined with the type="enabledGroup" attribute. The enabledIf attribute
contains the enabling condition.
Editing forms
The edit zone lets you enter the XML content of the input form:
Formatting
Stylesheets
The XSLT language lets you transform an XML document into another output document. This
transformation is described in XML in a document called a stylesheet.
According to the output method of the stylesheet, the resulting document can be generated
in HTML, plain text, or another XML tree.
Identifying a stylesheet
A stylesheet is identified by its name and namespace, just like schemas and forms. It is,
however, recommended that you add the .xsl extension to the name of the stylesheet.
The identification key of a stylesheet is a string formed by the namespace and the name
separated by a colon; for example: cus:book.xsl.
Structure of a stylesheet
Example of an HTML formatting stylesheet based on the example schema "cus:book":
The element specifies the format of the document generated. Specify the desired
set of characters and the output format.
The following instructions describe the configuration of the stylesheet for the formatting of the output
document.
By default, the XSLT processor seeks the that applies to the root or main node of the
input XML document. The construction of the output document begins with this .
In our example, an HTML page is generated from the "cus:book" schema by displaying the name of
the book and the list of chapters.
For more information on the XSLT language, refer to an XSLT reference document.
Image management
The images entered in the stylesheet can be referenced with an absolute or relative reference.
Relative referencing lets you enter the URL of the server containing the images in the
NcmRessourcesDir and NcmRessourcesDirPreview options. These options contain the
location of images for publication and preview in the Neolane client console.
Both options are accessible in the option management screen in the Administration>Options
folder.
Example:
NcmResourcesDir = "http://server/images/"
NcmResourcesDirPreview = "x:/images/"
During stylesheet processing, the _resPath attribute on the main element of the input XML
document is automatically filled in with one or other of the options, according to the context
(preview or publication).
Example of initializing a variable with the content of the image location option and its use with
an image:
Note:
We recommend declaring a variable containing the reference of the server where the images
are stored ("resPath" in our example).
Examples:
To display the date in the 01/10/2009 format:
Including stylesheets
It is possible to build up a library of templates or variables to be shared among several stylesheets.
The "longMonth" , presented above, is a typical example of the advantage of locating a
template remotely in a stylesheet so that it can be reused later.
The <xsl:include> directive indicates the name of the stylesheet to be included in the document.
Example: including the "common.xsl" style sheet.
Editing a stylesheet
The edit zone lets you populate the content of the stylesheet:
Note:
There is no need to save changes in the stylesheet to view the output document preview.
JavaScript templates
A JavaScript template is an HTML or text document that includes JavaScript code. It is constructed
in the same way as an e-mail content in a delivery action.
The attributes and elements of the content are represented as JavaScript objects and respect
the structure of the source document.
Example:
: retrieves the value of the "name" attribute of the main element
: identical to the syntax
: returns the number of elements on the <chapter> collection
element
: retrieves the name of the first <chapter> element
: returns the name of the <chapter> element
: returns the name of the parent element of <chapter>
Important:
Because the '-' character is reserved in the JavaScript language, the recovery of the value of
any attribute or element containing this character must be carried out via the ['<field>'] syntax.
For example: content.@['offer-id'].
All the power of a programming language (variables, loops, conditional tests, functions, etc. )
is available to construct the output document. SOAP APIs are accessible to enrich the output
document.
Examples:
Conditional test:
Function call:
Date formatting
In the XML input document, the dates are stored in internal XML format:
(example 2009/10/01 12:23:30).
To display a date in the desired format, Neolane provides the function that takes
as input the content of the date and a string specifying the output format with the following
syntax:
Examples:
Display the date in the 31/10/2009 format:
Note:
The associated data model schema must be populated for the initialization of JavaScript objects.
Note:
It is not necessary to save the changes in order to preview the output document.
Publication template
The publication template is the identity card of the content to be published. It references the
resources used in the publication process, i.e.:
the data schema,
the input form,
the transformation templates for each output document.
Note:
In practice, it is recommended to use the same key for the schema, the form, and the
publication template.
The configuration of a publication template consists in populating the name of the template (i.e. the
identification key consisting of the name and the namespace), the data schema, and the input form.
The Check status to validate content generation option forces a check on the "Validated" status
of the content instances to authorize generation for a file publication.
Transformation templates
A transformation template must be added for each output document.
The Name of template field is a free label that describes the type of rendering at the output.
The publication parameters are entered in the tabs.
Rendering
The Rendering tab gives the rendering type used for the output document. You must populate the
following fields:
Stylesheet: Select the stylesheet and the output format (HTML, Text, XML, RTF),
JavaScript: Select the JavaScript template and the output format (HTML, Text, XML, RTF).
Publication consists of generating the output document in the form of a file, if the type selected
is File.
The output file encoding character set can be forced via the Encoding field. The Latin 1 (1252)
character set is used by default.
The Multi-file generation option activates a special document publication mode. This option
consists of populating a partitioning tag at the beginning of each page of the output document.
The generation of the content will produce a file for each populated partitioning tag. This mode
is used to generate mini-sites from a content block.
The Location field contains the name of the output file. The name can be made up of variables
in order to generate an automatic filename.
A variable is populated with the following format:
: <path> is the path of a publication template data schema field.
The name of a file can consist of a date-type field. To format this field correctly, use the
function, using the path of the field and the output format as parameters.
Example: building a file name using variables on the "@name" and "@date" fields.
Delivery
This tab lets you select a scenario in order to launch a delivery directly on the content. The
content of the e-mail will be populated automatically according to the output format (HTML
or Text).
Aggregation processing of the data from a JavaScript script or query list can enrich the XML document
with the content data. The principle is to supplement certain information referenced by links or to
add elements from the database.