Wiki source code of DEXTR -- Converting Your Data
Last modified by Admin User on 2025/05/29 16:38
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | = Introduction = | ||
2 | |||
3 | DExTr is ONEcount’s data exchange and transformation engine. This tool enables data exchangs between any data source or third-party vendor. Establish a data map once and, going forward, easily import and export data in and out of ONEcount’s Customer Data Platform. | ||
4 | |||
5 | This tool the capabilities to map and sync first- or third-party data to ONEcount questions/data fields. | ||
6 | |||
7 | If there are multiple databases with similar fields, DExTr can consolidate the similar datapoints into a single ONEcount question or keep the fields separate. | ||
8 | |||
9 | //For Example: if the field for ‘Customer ID’ in a legacy database is “CUST_ID” and the field name in a CRM is “CID”, there is an option to have the data consolidated in to the single ONEcount question that may be named “CustomerID”.// | ||
10 | |||
11 | There are three types of mapping in the Mapper: Demographic Mapping, Transaction Mapping and Engagement Mapping. | ||
12 | |||
13 | * **Demographic Mapping:** Demographic mapping maps external demographic questions/data fields and responses to ONEcount demographic questions and responses. | ||
14 | * **Transaction Mapping:** Transaction mapping maps external transaction data, e.g. product purchase activity, status, and date formats. | ||
15 | * **Engagement Mapping:** Activity mapping maps external activity headers, e.g. time on page, URL, impressions, etc. This mapping is typically used to import and export data from the ad hoc Engagement Metrics. | ||
16 | |||
17 | One or all of these types of mapping may be required for a single file, depending on the type of automated feed you want to generate or the data import you'll be performing. | ||
18 | |||
19 | The easiest way to create a DExTR mapping is to import your data file into the platform, and let the system help you. Or, you can manually enter the demographics, transactions, and activities you wish to map to ONEcount questions/data fields, or do a combination of both. | ||
20 | |||
21 | **Please Note:** | ||
22 | |||
23 | **ONEcount questions, response values, products and packages must be created prior to performing mapping.** | ||
24 | |||
25 | ONEcount maps a CSV file’s COLUMN HEADINGS into demographic questions, transaction data, and enagement data. ONEcount can then map the VALUES from a CSV into multiple-choice ONEcount values for the appropriate data points. | ||
26 | |||
27 | |||
28 | |||
29 | |||
30 | |||
31 | |||
32 | |||
33 | |||
34 | [[image:new-dextr-doc_387f0c278f1e2969.png||height="173" width="665"]] | ||
35 | |||
36 | To get started, go to Data Management → DExTR from the menu on the left side. You’ll see a list of existing DExTR mappings, and have the opportunity to create a new mapping by clicking the button on the upper right side. | ||
37 | |||
38 | [[image:new-dextr-doc_ca0183ab0ec25820.png||height="557" width="665"]] | ||
39 | |||
40 | |||
41 | |||
42 | |||
43 | == Click Create Mapper == | ||
44 | |||
45 | You will be asked to give the mapper a title, and a description if needed. You should plan on creating one mapper per data source, although there may be examples where you need more than one mapper. For example, you may export data from SalesForce, but in two different ways: one for webinar registrations, one for sales data. Each format could require a separate mapper to handle the data. | ||
46 | |||
47 | The easiest way to build a mapper is to upload your file and let DExTR pre-populate the mapping. The file must be in CSV format in order to import into ONEcount, so we recommend using that for building the mapper. | ||
48 | |||
49 | [[image:new-dextr-doc_68c2dcabfcf1448b.png||height="349" width="665"]] | ||
50 | |||
51 | Select the file and hit upload. The system will load all of the column headings from your file into the DExTR UI. | ||
52 | |||
53 | |||
54 | |||
55 | [[image:new-dextr-doc_49c7e86855c5f89f.png||height="554" width="665"]] | ||
56 | |||
57 | DExTR Maps Demographic, Transaction and Engagement Data. The pull-down next to each column heading lets you choose what type of data is in that column. | ||
58 | |||
59 | |||
60 | [[image:new-dextr-doc_fa3f55daf981a1e7.png||height="542" width="665"]] | ||
61 | |||
62 | |||
63 | If you select Demographic, a new column pops up with all of the Demographic Questions you have configured in the ONEcount system. The pull-down only contains the first 20 or so demographic questions. If the one you are looking for is not there, click the back-space button and start typing the demo, and the system will auto-complete as you type. | ||
64 | |||
65 | [[image:new-dextr-doc_eb4c8f499e373c8.png||height="556" width="665"]] | ||
66 | |||
67 | |||
68 | |||
69 | For transactions, DExTR shows the transaction fields that can be mapped into the system. | ||
70 | |||
71 | [[image:new-dextr-doc_df0894c16d4a01b0.png||height="556" width="665"]] | ||
72 | |||
73 | If you select an option in the third column, demo/trans/engagment that has fielded data, like check-box, select, multi-select, etc., a fourth column will automatically appear that says, “Map Values.” Clicking on this link will open a pop-up that allows you to map the column values from your file into the appropriate values in ONEcount. The value from the file will appear in the box on the right, the ONEcount value to map it to will appear in the pull-down on the left. | ||
74 | |||
75 | Please note that when importing files for building a DExTR mapping, DExTR only imports the first 20,000 rows of the file. This means it is possible some of the values to not appear on this screen. If you need to add additional values, just click Add and a new row will appear. | ||
76 | |||
77 | |||
78 | |||
79 | [[image:new-dextr-doc_e3e1a93820e15af4.png||height="313" width="491"]] | ||
80 | |||
81 | |||
82 | |||
83 | |||
84 | |||
85 | |||
86 | |||
87 | |||
88 | |||
89 | |||
90 | |||
91 | |||
92 | |||
93 | |||
94 | |||
95 | |||
96 | |||
97 | |||
98 | These are the responses defined for the ONEcount Question paired to the field from the database. On the right, enter the values that will appear in the import file. It is very important to map all values, because if a value in the input file is not found in ONEcount, the response for that field will be dropped. ONEcount will not allow external imports to add values to its response table. Also, if the values in your import file exactly match the values that ONEcount has (ie., for the State question, both the import/export file and ONEcount use the two-letter abbreviations) then //you do not need to create a mapping.// | ||
99 | |||
100 | Define how ONEcount should translate each response using the fields in the right column, ‘Field Response’. DExTr can use the same responses, or you may choose to translate or ‘transform’ data to another format. | ||
101 | |||
102 | //(Example: states may be abbreviated with 4 letters in a POS database [Conn., Mass.], while the ecommerce database has two letter abbreviations. You can map both to the two-letter abbreviation used by default in ONEcount)// | ||
103 | |||
104 | Finally the fifth column is generally optional. You can add validations for the field to either check for duplicates, require an entry, or verify the format entered to the field. | ||
105 | |||
106 | //**Checking for duplicates is critical, and ONEcount may not import your file if a de-dupe field has not been defined!**// | ||
107 | |||
108 | |||
109 | **Additional notes:** | ||
110 | |||
111 | Transactional Fields** - **if the source/import file has a product field called “PUB_TITLE” and the value for current subscribers is “YES” on the import file, but the ONEcount product is “Active Subscriber”, the Package Status Value from the import file should be matched with the Package Status in ONEcount. | ||
112 | |||
113 | Engagement Fields** - **Map external engagement (activity) headers, e.g. time on page, URL, impressions, email opens, registrations, link clicks, etc. Engagement field mapping is used primarily for exporting feed reports. | ||
114 | If the Engagement Field Value is a metric that is not a count, click the [] icon to map the metric field value to the ONEcount metric //(i.e. if the source/import file has an ‘Engagement Field Name’ that is “NEWSLETTER_ACTIVITY_TYPE” the ‘ONEcount Engagement’ would be “Metric >> Activity Metric Name” and then map the values of metric type [“OPEN”, “CLICK”] to the ONEcount metric [“Email opens”/”Email clicks”]). // | ||
115 | |||
116 | For engagement metrics, you MUST map something to the engagement Name field in ONEcount. This is the unique identifier for that action in the system. | ||
117 | |||
118 | **TRANSACTION ELEMENTS, INCLUDING PRODUCTS, PRODUCT STATUSES, AND SUBSCRIPTION TYPES, SOURCE CODES AND PROMO CODES, MUST BE CREATED PRIOR TO PERFORMING TRANSACTION MAPPING.** | ||
119 | |||
120 | ***__Product Mapping Area__ * | ||
121 | For automated data feed reports, the Third Party Product column shows what the ONEcount product name will be displayed as on output.** | ||
122 | |||
123 | * For example, a user is subscribed to/registered for ABCXY Pharma Aug. Webinar(207) in ONEcount. The third party requires that on the report output show a value of August Webinar rather than ABCXY Pharma Aug. Webinar. Mapping ONEcount's ABCXY Pharma Aug. Webinar(207) product to August Webinar(400) will display the Third Party Product value of August Webinar on the output. | ||
124 | |||
125 | **Product Column Field:** This identifies what to output as the header for the product field. Enter the heading that's required for the report output. | ||
126 | |||
127 | **For imports,** the Third Party Product column identifies the names/values from the import file that will be mapped to the ONEcount product. | ||
128 | |||
129 | * For example, there's "product" column in the import file that identifies what product a particular record is subscribed to or registered for. In the import file, August Webinar in that colum indicates the record is subscribed to/registered for the August Webinar. In ONEcount, the product name is ABCXY Pharma Aug. Webinar. Any record in the import file that has August Webinar in the product column will be subscribed to the ABCYXY Pharma Aug. Webinar product in ONEcount. | ||
130 | |||
131 | **Product Column Field:** This identifies the column header for the product column in the import file. In the above example, you would enter "product". | ||
132 | |||
133 | **__Product Status Mapping Area (Optional)__** | ||
134 | **For automated data feed reports,** the Third Party Product Status column shows what the ONEcount product status will be displayed as on output. | ||
135 | |||
136 | * For example, a user has a product status of "Not Active(405)" in ONEcount. The third party requires that the report output show a value of Inactive, rather than Not Active. Mapping ONEcont's "Not Active(405)" status to "Inactive(203)" will display the Third Party Product Status of Inactive on the output. | ||
137 | |||
138 | **Product Status Column Field:** This identifies what to output as the header for the product status field. Enter the heading that's required for the report output. | ||
139 | |||
140 | **For Imports**, the Third Party Product Status column identifies what name/value from the import file will be mapped to the ONEcount product. | ||
141 | |||
142 | * For example, there's a "product status" column in the import file that identifies the product status a particular record has for a particular product. In the import file, "Inactive(203)"in that column indicates the record has a product status of inactive. In ONEcount, the product status is "Not Active(405)". Any record in the import file that has a product status of "Inactive" in the product status column will have the product status of "Not Active" applied to the record in ONEcount. | ||
143 | |||
144 | **Product Status Column Field:** This identifies the column header for the product status column in the import file. In the above example, you would enter "product status". | ||
145 | |||
146 | **__Subscription Mapping Area__** | ||
147 | **For automated data feed reports,** the Third Party Subscription column shows what the ONEcount subscription type will be displayed as on output. | ||
148 | |||
149 | * For example, a user has a subscription type of "n" in ONEcount. The third party requires that the report output show a value of new, rather than "n". Mapping ONEcont's "n" status to "new(new)" will display the Third Party Product Status of new on the output. | ||
150 | |||
151 | **Subscription Column Field:** This identifies what to output as the header for the subscription type field. Enter the heading that's required for the report output. | ||
152 | |||
153 | **For Imports**, the Third Party Subscription column identifies what name/value from the import file will be mapped to the ONEcount product. | ||
154 | |||
155 | * For example, there's a "Subcription Type" column in the import file that identifies the subscription type a particular record has for a particular product. In the import file, "New" in that column indicates the record has a subscription type of new. In ONEcount, the subscription type is "n". Any record in the import file that has a product status of "New" in the subscription type column will have the product status of "n" applied to the record in ONEcount. | ||
156 | |||
157 | **Subscription Column Field:** This identifies the column header for the subscription type column in the import file. In the above example, you would enter "Subscription Type". | ||
158 | |||
159 | **__Date Mapping Area__** | ||
160 | **For automated data feed reports,** enter the format you would like dates to be exported as. For example MM/dd/yyyy will export as 07/05/2023 and yy/MM/dd will export as 23/07/05. If you want to import time along with date add hh:mm:ss:a along with date. For example MM/dd/yyyy hh:mm:ss:a will be exported as 07/23/2023 11:45:32:AM | ||
161 | |||
162 | MM : months, dd: days, yyyy: years, hh: hours (12 hour format), HH: hours (24 hour format), mm: minutes, ss: seconds, a:AM/PM | ||
163 | |||
164 | **Date Column Field:** This identifies what to output as the header for the date field. Enter the heading that's required for the report output. | ||
165 | |||
166 | **For Imports,** enter the format of dates in the import file. For example, if a date is 07/05/2016, enter the format MM/dd/yyyy. If you want to import time along with date add hh:mm:ss along with date. For example MM/dd/yyyy hh:mm:ss:a will be exported as 07/23/2023 11:45:32:AM | ||
167 | |||
168 | MM : months, dd: days, yyyy: years, hh: hours (12 hour format), HH: hours (24 hour format), mm: minutes, ss: seconds, a:AM/PM | ||
169 | |||
170 | **Date Column Field:** This identifies the column header for the date column in the import file. | ||
171 | |||
172 | When done with mapping, click "Next". | ||
173 | You will then be brought either to Activity Mapping or Save, depending on selection made in 1 – Information.**SAVE MAPPING** | ||
174 | |||
175 | When done with mapping(s), click "Next". | ||
176 | |||
177 | You then have the option to save the mapping (Save) or return to mapping (Previous). | ||
178 | |||
179 | Once mapping is saved, you can find it on the Manage Mapping listing page. | ||
180 | |||
181 | A saved mapping is ready to be used for generating automated feed reports in the Dashboard. See Dashboard Reports – Create Feed Report for more information. | ||
182 | |||
183 | == **MAPPING ENGAGEMENT DATA** == | ||
184 | |||
185 | This section outlines the types of engagement data that DExTr can import/export. Please note that Generic and Engagement data fields can be used for both web, banner and newsletter engagement data. | ||
186 | |||
187 | If you need data points imported or exported that are not on this list, check with the ONEcount team to see if those fields can be accommodated. | ||
188 | |||
189 | Generic Engagement Fields | ||
190 | |||
191 | * Activity Date: Date of the Activity | ||
192 | * Activity Time: Time of the Activity, Mandatory for Import. | ||
193 | * Channel Codes: Codes for Email, Banner and Web page views, CMI needed it in export. | ||
194 | * End Date: End date of export, mainly used in aggregate export. | ||
195 | * Unique External ID: Unique ID for each transaction. | ||
196 | * Month: Month of the Activity. | ||
197 | * OCID: | ||
198 | * OCID Hash: Unique hash of the user. This is the cookie set on user’s browser. | ||
199 | * Platform Viewed: Platform of the user in which Impression or Page view happened. | ||
200 | * Resource Details: This is used for export. It has Page title for Web activity, Banner name for Banner Activity and Message title for Email data. | ||
201 | * Start Date: Start date of export, mainly used in aggregate export. | ||
202 | |||
203 | Metric Engagement Fields | ||
204 | |||
205 | * Activity Metric code: Metric codes for Activity data. It has codes for Email sent, delivered, opened, clicked, banner impression, banner clicked and page view. It is mandatory for Import and export. | ||
206 | * Activity Metric Name: Metric Names for Activity data (CMI report needs Metric code and Name). It has codes for Email sent, delivered, opened, clicked, banner impression, banner clicked and page view. | ||
207 | * Activity Metric count: Mainly used for export. It has counts for each activity. | ||
208 | * Aggregate Metric code: Metric codes for Aggregate data. It has codes for Email sent, delivered, opened, clicked, banner impression, banner clicked and page view. Mandatory for aggregate export. | ||
209 | * Aggregate Metric Name: Metric Names for Aggregate data (CMI report needs Metric code and Name). It has codes for Email sent, delivered, opened, clicked, banner impression, banner clicked and page view. | ||
210 | * Aggregate Metric count: Mainly used for export. It has counts for each activity. | ||
211 | |||
212 | Banner Engagement | ||
213 | |||
214 | * Ad Server Name: Name of the Ad Server, i.e., DFP | ||
215 | * Advertiser ID: ID of the Advertiser | ||
216 | * Advertiser Name: Name of the Advertiser | ||
217 | * Banner ID: ID of the Banner | ||
218 | * Banner Name: Name of the Banner | ||
219 | * Campaign ID: ID of the Campaign | ||
220 | * Campaign Name: Name of the Campaign | ||
221 | * Viewable Impression: If Impression is viewed or not, Boolean (0, 1 accepted) | ||
222 | |||
223 | Newsletter Engagement Fields | ||
224 | |||
225 | * Click URL: URL of the Clicked link. Mandatory for Importing Email clicks. | ||
226 | * List ID: ID of the newsletter List of Group | ||
227 | * List Name: Name of the newsletter list or group | ||
228 | * Message ID: Campaign ID of the newsletter | ||
229 | * Message Name: Campaign name of the newsletter | ||
230 | * Recipient ID: Unique User Id in the Email service provider | ||
231 | * Message Subject: Subject of the Campaign | ||
232 | |||
233 | Web Engagement Fields | ||
234 | |||
235 | * Referrer: Referrer for the page view | ||
236 | * Site name: Website URL | ||
237 | * Page URL: URL of the Page. | ||
238 | |||
239 | == **HOW DExTr MAPS DATA** == | ||
240 | |||
241 | The following information is being provided to help you understand how DExTr will map/transform your data on import. | ||
242 | |||
243 | 1. On import, ONEcount will always check if fields in the DExTr mapping are present in the file or not; if any field is not present in the file, then we fail the job. This is to ensure that we won’t miss mandatory data or dedupe fields and possibly corrupt the data. If you are importing data and the file does not have all of the fields in the DExTr mapping you are using, you can create a blank column with that field name in it–//as long as that field is not a de-dupe field for the import.// | ||
244 | 1. If there are multiple dedupe fields in mapping then we dedupe the data based on order that the fields appear in the mapping. For Example if mapping has dedupe fields as “Email” (1^^st^^ field in order) and “AccountID” (2^^nd^^ field in order) then DExTr will first query the datase for a match on “Email,” if match is not found then it will query on “AccountID”. It always an OR match. You //can not match// on Email AND AccountID. | ||
245 | 1. If OCID is present as a dedupe field, then it always takes precedence irrespective of order. If you import a file with OCID as a dedupe field, and a record does not have an OCID, then a new user will be created in ONEcount and a unique OCID will be generated. | ||
246 | 1. There are a variety of validations which can be added to DExTr mapping like, “Numeric”, “Required” etc.. If any record/row doesn’t satisfy these validations, then that record won’t be imported into ONEcount. It will be saved into a failed record file and mailed to the email address supplied with the import job. | ||
247 | 1. If there are any passwords that are being imported, they should be imported as plain text. ONEcount will encrypt the field based on encrypt function for your installation. | ||
248 | 1. For Package transactions: Term ID, Package status, source code and transaction type are mandatory. | ||
249 | 11. If Term ID is not mapped, then the transaction won’t be imported. | ||
250 | 11. IF Package status is not mapped then default Package status from term will be added. | ||
251 | 11. If source code is not mapped. Then default source code from import job will be selected. | ||
252 | 11. If transaction type is not added, then default type from Import job will be selected. | ||
253 | 1. For Product transaction: Product ID, source code and transaction type are mandatory. | ||
254 | 11. If Product ID is not mapped, then the transaction won’t be imported. | ||
255 | 11. If source code is not mapped. Then default source code from import job will be selected. | ||
256 | 11. If transaction type is not added, then default type from Import job will be selected. | ||
257 | 1. If Request Date is not mapped or not formatted correctly, then current date will be used as request date. | ||
258 | 1. If Expiration date is not mapped or not formatted correctly, then expiration date will be calculated based on the duration of the term and the request date. | ||
259 | 1. For Engagement imports, Activity type is mandatory. | ||
260 | 1. If Engagement date is not formatted, then current date will be used as activity date. | ||
261 | 1. If Data and campaign ID, name, List ID and name then they will be imported as well. | ||
262 | 1. If dedupe is not added/matched for an engagement import then new users will be created in the system just like Users and transaction import. | ||
263 | |||
264 | |||
265 | |||
266 | |||
267 | ~*~**Remember to SAVE the values mapping, and SAVE the DExTR mapping when you are through. |