gd_bam 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,579 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Graph author="radektomasek" created="Tue Mar 12 17:22:22 CET 2013" guiVersion="3.3.2" id="1363132448535" licenseType="Commercial" modified="Thu Mar 21 16:26:58 PDT 2013" modifiedBy="?" name="test" revision="1.255" showComponentDetails="true">
3
+ <Global>
4
+ <Metadata id="Metadata13" previewAttachmentCharset="ISO-8859-1">
5
+ <Record fieldDelimiter="," name="I_OpportunityCreatedDate" previewAttachmentCharset="ISO-8859-1" recordDelimiter="\n" recordSize="-1" type="delimited">
6
+ <Field eofAsDelimiter="false" name="Id" nullable="true" shift="0" size="0" type="string"/>
7
+ <Field eofAsDelimiter="false" name="CreatedDate" nullable="true" shift="0" size="0" type="string"/>
8
+ </Record>
9
+ </Metadata>
10
+ <Metadata id="Metadata9" previewAttachmentCharset="ISO-8859-1">
11
+ <Record fieldDelimiter="," name="I_SFDC_Amount" previewAttachmentCharset="ISO-8859-1" recordDelimiter="\n" recordSize="-1" type="delimited">
12
+ <Field eofAsDelimiter="false" name="Amount" nullable="true" shift="0" size="0" type="decimal"/>
13
+ <Field eofAsDelimiter="false" name="SystemModstamp" nullable="true" shift="0" size="0" type="string"/>
14
+ <Field eofAsDelimiter="false" name="Id" nullable="true" shift="0" size="0" type="string"/>
15
+ </Record>
16
+ </Metadata>
17
+ <Metadata id="Metadata8" previewAttachmentCharset="ISO-8859-1">
18
+ <Record fieldDelimiter="," name="I_SFDC_CloseDare" previewAttachmentCharset="ISO-8859-1" recordDelimiter="\n" recordSize="-1" type="delimited">
19
+ <Field eofAsDelimiter="false" name="CloseDate" nullable="true" shift="0" size="0" type="string"/>
20
+ <Field eofAsDelimiter="false" name="SystemModstamp" nullable="true" shift="0" size="0" type="string"/>
21
+ <Field eofAsDelimiter="false" name="Id" nullable="true" shift="0" size="0" type="string"/>
22
+ </Record>
23
+ </Metadata>
24
+ <Metadata id="Metadata10" previewAttachmentCharset="ISO-8859-1">
25
+ <Record fieldDelimiter="," name="I_SFDC_Probability" previewAttachmentCharset="ISO-8859-1" recordDelimiter="\n" recordSize="-1" type="delimited">
26
+ <Field eofAsDelimiter="false" name="Probability" nullable="true" shift="0" size="0" type="decimal"/>
27
+ <Field eofAsDelimiter="false" name="SystemModstamp" nullable="true" shift="0" size="0" type="string"/>
28
+ <Field eofAsDelimiter="false" name="Id" nullable="true" shift="0" size="0" type="string"/>
29
+ </Record>
30
+ </Metadata>
31
+ <Metadata id="Metadata7" previewAttachmentCharset="ISO-8859-1">
32
+ <Record fieldDelimiter="," name="I_SFDC_StageName" previewAttachmentCharset="ISO-8859-1" recordDelimiter="\n" recordSize="-1" type="delimited">
33
+ <Field eofAsDelimiter="false" name="StageName" nullable="true" shift="0" size="0" type="string"/>
34
+ <Field eofAsDelimiter="false" format="joda:yyyy-MM-dd'T'HH:mm:ss.SSSZ" name="SystemModstamp" nullable="true" shift="0" size="0" type="string"/>
35
+ <Field name="Id" type="string"/>
36
+ </Record>
37
+ </Metadata>
38
+ <Metadata id="Metadata11">
39
+ <Record fieldDelimiter="," name="IO_Metadata" recordDelimiter="\n" recordSize="-1" type="delimited">
40
+ <Field eofAsDelimiter="false" name="Field" nullable="true" shift="0" size="0" type="string"/>
41
+ <Field eofAsDelimiter="false" name="NewValue" nullable="true" shift="0" size="0" type="string"/>
42
+ <Field eofAsDelimiter="false" format="joda:yyyy-MM-dd'T'HH:mm:ss.SSSZ" name="CreatedDate" nullable="true" shift="0" size="0" type="date"/>
43
+ <Field eofAsDelimiter="false" name="OpportunityId" nullable="true" shift="0" size="0" type="string"/>
44
+ </Record>
45
+ </Metadata>
46
+ <Metadata id="Metadata5" previewAttachmentCharset="ISO-8859-1">
47
+ <Record fieldDelimiter="," name="IO_OpportunityStage" previewAttachmentCharset="ISO-8859-1" recordDelimiter="\n" recordSize="-1" type="delimited">
48
+ <Field eofAsDelimiter="false" name="MasterLabel" nullable="true" shift="0" size="0" type="string"/>
49
+ <Field eofAsDelimiter="false" name="IsWon" nullable="true" shift="0" size="0" type="string"/>
50
+ <Field eofAsDelimiter="false" name="IsClosed" nullable="true" shift="0" size="0" type="string"/>
51
+ </Record>
52
+ </Metadata>
53
+ <Metadata id="Metadata3" previewAttachmentCharset="ISO-8859-1">
54
+ <Record fieldDelimiter="," name="O_Amount" previewAttachmentCharset="ISO-8859-1" recordDelimiter="\n" recordSize="-1" type="delimited">
55
+ <Field eofAsDelimiter="false" format="joda:yyyy-MM-dd HH:mm:ss" name="Timestamp" nullable="true" shift="0" size="0" type="date"/>
56
+ <Field eofAsDelimiter="false" name="Id" nullable="true" shift="0" size="0" type="string"/>
57
+ <Field eofAsDelimiter="false" length="12" name="Amount" nullable="true" scale="2" shift="0" size="0" type="decimal"/>
58
+ </Record>
59
+ </Metadata>
60
+ <Metadata id="Metadata2" previewAttachmentCharset="ISO-8859-1">
61
+ <Record fieldDelimiter="," name="O_CloseDate" previewAttachmentCharset="ISO-8859-1" recordDelimiter="\n" recordSize="-1" type="delimited">
62
+ <Field eofAsDelimiter="false" format="joda:yyyy-MM-dd HH:mm:ss" name="Timestamp" nullable="true" shift="0" size="0" type="date"/>
63
+ <Field eofAsDelimiter="false" name="Id" nullable="true" shift="0" size="0" type="string"/>
64
+ <Field eofAsDelimiter="false" name="CloseDate" nullable="true" shift="0" size="0" type="string"/>
65
+ </Record>
66
+ </Metadata>
67
+ <Metadata id="Metadata14" previewAttachmentCharset="ISO-8859-1">
68
+ <Record fieldDelimiter="," name="O_CreatedDate" previewAttachmentCharset="ISO-8859-1" recordDelimiter="\n" recordSize="-1" type="delimited">
69
+ <Field eofAsDelimiter="false" format="yyyy-MM-dd HH:mm:ss" name="Timestamp" nullable="true" shift="0" size="0" type="date"/>
70
+ <Field eofAsDelimiter="false" name="OpportunityId" nullable="true" shift="0" size="0" type="string"/>
71
+ <Field eofAsDelimiter="false" name="CreatedDate" nullable="true" shift="0" size="0" type="string"/>
72
+ </Record>
73
+ </Metadata>
74
+ <Metadata id="Metadata12" previewAttachmentCharset="ISO-8859-1">
75
+ <Record fieldDelimiter="," name="O_CreatedDate" previewAttachmentCharset="ISO-8859-1" recordDelimiter="\n" recordSize="-1" type="delimited">
76
+ <Field eofAsDelimiter="false" format="joda:yyyy-MM-dd HH:mm:ss" name="Timestamp" nullable="true" shift="0" size="0" type="date"/>
77
+ <Field eofAsDelimiter="false" name="Id" nullable="true" shift="0" size="0" type="string"/>
78
+ <Field eofAsDelimiter="false" name="CreatedDate" nullable="true" shift="0" size="0" type="string"/>
79
+ <Field name="OpportunityId" type="string"/>
80
+ </Record>
81
+ </Metadata>
82
+ <Metadata id="Metadata4" previewAttachmentCharset="ISO-8859-1">
83
+ <Record fieldDelimiter="," name="O_Probability" previewAttachmentCharset="ISO-8859-1" recordDelimiter="\n" recordSize="-1" type="delimited">
84
+ <Field eofAsDelimiter="false" format="joda:yyyy-MM-dd HH:mm:ss" name="Timestamp" nullable="true" shift="0" size="0" type="date"/>
85
+ <Field eofAsDelimiter="false" name="Id" nullable="true" shift="0" size="0" type="string"/>
86
+ <Field eofAsDelimiter="false" name="Probability" nullable="true" shift="0" size="0" type="decimal"/>
87
+ </Record>
88
+ </Metadata>
89
+ <Metadata id="Metadata1" previewAttachmentCharset="ISO-8859-1">
90
+ <Record fieldDelimiter="," name="O_StageName" previewAttachmentCharset="ISO-8859-1" recordDelimiter="\n" recordSize="-1" type="delimited">
91
+ <Field eofAsDelimiter="false" format="joda:yyyy-MM-dd HH:mm:ss" name="Timestamp" nullable="true" shift="0" size="0" type="date"/>
92
+ <Field eofAsDelimiter="false" name="Id" nullable="true" shift="0" size="0" type="string"/>
93
+ <Field eofAsDelimiter="false" name="StageName" nullable="true" shift="0" size="0" type="string"/>
94
+ <Field eofAsDelimiter="false" name="IsWon" nullable="true" shift="0" size="0" type="string"/>
95
+ <Field eofAsDelimiter="false" name="IsClosed" nullable="true" shift="0" size="0" type="string"/>
96
+ <Field name="field6" type="string"/>
97
+ </Record>
98
+ </Metadata>
99
+ <Metadata id="Metadata15" previewAttachmentCharset="ISO-8859-1">
100
+ <Record fieldDelimiter="|" name="recordName1" previewAttachmentCharset="ISO-8859-1" recordDelimiter="\n" type="delimited">
101
+ <Field name="Id" type="string"/>
102
+ <Field name="Timestamp" type="date"/>
103
+ <Field name="IsDeleted" type="string"/>
104
+ </Record>
105
+ </Metadata>
106
+ <Metadata id="Metadata0" previewAttachmentCharset="ISO-8859-1">
107
+ <Record fieldDelimiter="," name="sfdc_metadata" previewAttachmentCharset="ISO-8859-1" recordDelimiter="\n" recordSize="-1" type="delimited">
108
+ <Field eofAsDelimiter="false" name="Id" nullable="true" shift="0" size="0" type="string"/>
109
+ <Field eofAsDelimiter="false" name="CreatedDate" nullable="true" shift="0" size="0" type="string"/>
110
+ <Field eofAsDelimiter="false" name="StageName" nullable="true" shift="0" size="0" type="string"/>
111
+ <Field eofAsDelimiter="false" name="CloseDate" nullable="true" shift="0" size="0" type="string"/>
112
+ <Field eofAsDelimiter="false" length="12" name="Amount" nullable="true" scale="2" shift="0" size="0" type="decimal"/>
113
+ <Field eofAsDelimiter="false" name="Probability" nullable="true" shift="0" size="0" type="string"/>
114
+ </Record>
115
+ </Metadata>
116
+ <Metadata id="Metadata6" previewAttachmentCharset="ISO-8859-1">
117
+ <Record fieldDelimiter="," name="X_metadata" previewAttachmentCharset="ISO-8859-1" recordDelimiter="\n" recordSize="-1" type="delimited">
118
+ <Field eofAsDelimiter="false" name="Id" nullable="true" shift="0" size="0" type="string"/>
119
+ <Field eofAsDelimiter="false" format="joda:yyyy-MM-dd'T'HH:mm:ss.SSSZ" name="CreatedDate" nullable="true" shift="0" size="0" type="string"/>
120
+ <Field eofAsDelimiter="false" name="StageName" nullable="true" shift="0" size="0" type="string"/>
121
+ <Field eofAsDelimiter="false" name="CloseDate" nullable="true" shift="0" size="0" type="string"/>
122
+ <Field eofAsDelimiter="false" length="12" name="Amount" nullable="true" scale="2" shift="0" size="0" type="decimal"/>
123
+ <Field eofAsDelimiter="false" name="Probability" nullable="true" shift="0" size="0" type="string"/>
124
+ <Field name="IsWon" type="string"/>
125
+ <Field name="IsClosed" type="string"/>
126
+ </Record>
127
+ </Metadata>
128
+ <Connection clientId="${SFDC_CLIENT_ID}" id="SFDC" loginHostname="${SFDC_LOGIN_HOSTNAME}" name="${SFDC_NAME}" password="${SFDC_PASSWORD}" passwordEncrypted="true" token="${SFDC_TOKEN}" type="SFDC" username="${SFDC_USERNAME}"/>
129
+ <Property id="GraphParameter0" name="SFDC_CLIENT_ID" value="gooddata/gooddata/"/>
130
+ <Property id="GraphParameter1" name="SFDC_LOGIN_HOSTNAME" value="test.salesforce.com"/>
131
+ <Property id="GraphParameter2" name="SFDC_NAME" value="Test"/>
132
+ <Property id="GraphParameter3" name="SFDC_PASSWORD" value="IJKC+Up9aa0WVg4u51L3Cg=="/>
133
+ <Property id="GraphParameter4" name="SFDC_TOKEN" value="n3xnliHf2Vvd4n2ekEDusAos"/>
134
+ <Property id="GraphParameter5" name="SFDC_USERNAME" value="r1293350@ge.com.gd.test"/>
135
+ <Property fileURL="workspace.prm" id="GraphParameter6"/>
136
+ <LookupTable id="LookupTable0" initialSize="512" key="MasterLabel" metadata="Metadata5" name="L_OpportunityStage" type="simpleLookup"/>
137
+ <Dictionary/>
138
+ </Global>
139
+ <Phase number="0">
140
+ <Node enabled="enabled" guiHeight="65" guiName="LookupTableReaderWriter" guiWidth="177" guiX="1872" guiY="122" id="LOOKUP_TABLE_READER_WRITER0" lookupTable="LookupTable0" type="LOOKUP_TABLE_READER_WRITER"/>
141
+ <Node enabled="enabled" fieldsMapping="{&quot;xmlFieldsMapping&quot;:{&quot;xmlFields&quot;:[{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;MasterLabel&quot;,&quot;label&quot;:&quot;Master Label&quot;,&quot;xmlPath&quot;:&quot;MasterLabel&quot;,&quot;metadataField&quot;:&quot;MasterLabel&quot;}},{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;IsWon&quot;,&quot;label&quot;:&quot;Won&quot;,&quot;xmlPath&quot;:&quot;IsWon&quot;,&quot;metadataField&quot;:&quot;IsWon&quot;}},{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;IsClosed&quot;,&quot;label&quot;:&quot;Closed&quot;,&quot;xmlPath&quot;:&quot;IsClosed&quot;,&quot;metadataField&quot;:&quot;IsClosed&quot;}}]}}" guiHeight="65" guiName="SF Reader" guiWidth="128" guiX="188" guiY="122" id="SF_READER1" sfdcConnection="SFDC" soql="Select MasterLabel, IsWon, IsClosed From OpportunityStage" type="SF_READER"/>
142
+ <Edge debugMode="true" fromNode="SF_READER1:0" guiBendpoints="" guiRouter="Manhattan" id="Edge2" inPort="Port 0 (in)" metadata="Metadata5" outPort="Port 0 (output)" toNode="LOOKUP_TABLE_READER_WRITER0:0"/>
143
+ </Phase>
144
+ <Phase number="1">
145
+ <Node enabled="enabled" guiHeight="77" guiName="ExtSort" guiWidth="128" guiX="1656" guiY="280" id="EXT_SORT0" sortKey="Timestamp(a)" type="EXT_SORT"/>
146
+ <Node enabled="enabled" entityFieldsMapping="{&quot;entityName&quot;:&quot;Opportunity&quot;,&quot;fieldsMapping&quot;:{&quot;IsClosed&quot;:{&quot;name&quot;:&quot;IsClosed&quot;,&quot;type&quot;:&quot;attribute&quot;},&quot;IsWon&quot;:{&quot;name&quot;:&quot;IsWon&quot;,&quot;type&quot;:&quot;attribute&quot;},&quot;StageName&quot;:{&quot;name&quot;:&quot;StageName&quot;,&quot;type&quot;:&quot;attribute&quot;},&quot;Id&quot;:{&quot;name&quot;:&quot;Id&quot;,&quot;type&quot;:&quot;recordid&quot;},&quot;Timestamp&quot;:{&quot;name&quot;:&quot;Timestamp&quot;,&quot;type&quot;:&quot;timestamp&quot;}}}" guiHeight="65" guiName="GD Eventstore Writer" guiWidth="150" guiX="1872" guiY="280" id="GD_ESTORE_WRITER0" store="${GDC_EVENTSTORE}" timezone="${GDC_EVENTSTORE_TIMEZONE}" type="GD_ESTORE_WRITER"/>
147
+ <Node enabled="enabled" guiHeight="77" guiName="LookupJoin" guiWidth="128" guiX="535" guiY="280" id="LOOKUP_JOIN0" joinKey="StageName" leftOuterJoin="true" lookupTable="LookupTable0" type="LOOKUP_JOIN">
148
+ <attr name="transform"><![CDATA[//#CTL2
149
+
150
+ // Transforms input record into output record.
151
+ function integer transform() {
152
+ $out.0.Id = $in.0.Id;
153
+ $out.0.CreatedDate = $in.0.CreatedDate;
154
+ $out.0.StageName = $in.0.StageName;
155
+ $out.0.CloseDate = $in.0.CloseDate;
156
+ $out.0.Amount = $in.0.Amount;
157
+ $out.0.Probability = $in.0.Probability;
158
+ $out.0.IsWon = $in.1.IsWon;
159
+ $out.0.IsClosed = $in.1.IsClosed;
160
+
161
+ return OK;
162
+ }
163
+
164
+ // Called during component initialization.
165
+ // function boolean init() {}
166
+
167
+ // Called during each graph run before the transform is executed. May be used to allocate and initialize resources
168
+ // required by the transform. All resources allocated within this method should be released
169
+ // by the postExecute() method.
170
+ // function void preExecute() {}
171
+
172
+ // Called only if transform() throws an exception.
173
+ // function integer transformOnError(string errorMessage, string stackTrace) {}
174
+
175
+ // Called during each graph run after the entire transform was executed. Should be used to free any resources
176
+ // allocated within the preExecute() method.
177
+ // function void postExecute() {}
178
+
179
+ // Called to return a user-defined error message when an error occurs.
180
+ // function string getMessage() {}
181
+ ]]></attr>
182
+ </Node>
183
+ <Node enabled="enabled" guiHeight="77" guiName="LookupJoin" guiWidth="128" guiX="1289" guiY="383" id="LOOKUP_JOIN1" joinKey="StageName" leftOuterJoin="true" lookupTable="LookupTable0" type="LOOKUP_JOIN">
184
+ <attr name="transform"><![CDATA[//#CTL2
185
+ import 'trans/DateFunctions.ctl';
186
+
187
+ // Transforms input record into output record.
188
+ function integer transform() {
189
+ $out.0.StageName = $in.0.StageName;
190
+ $out.0.IsWon = $in.1.IsWon;
191
+ $out.0.IsClosed = $in.1.IsClosed;
192
+ $out.0.Timestamp = $out.0.Timestamp = timestampParsing($in.0.SystemModstamp, "${GDC_EVENTSTORE_TIMEZONE}"):null;
193
+ $out.0.Id = $in.0.Id;
194
+
195
+ return OK;
196
+ }
197
+
198
+ // Called during component initialization.
199
+ // function boolean init() {}
200
+
201
+ // Called during each graph run before the transform is executed. May be used to allocate and initialize resources
202
+ // required by the transform. All resources allocated within this method should be released
203
+ // by the postExecute() method.
204
+ // function void preExecute() {}
205
+
206
+ // Called only if transform() throws an exception.
207
+ // function integer transformOnError(string errorMessage, string stackTrace) {}
208
+
209
+ // Called during each graph run after the entire transform was executed. Should be used to free any resources
210
+ // allocated within the preExecute() method.
211
+ // function void postExecute() {}
212
+
213
+ // Called to return a user-defined error message when an error occurs.
214
+ // function string getMessage() {}
215
+ ]]></attr>
216
+ </Node>
217
+ <Node enabled="enabled" guiHeight="65" guiName="Reformat" guiWidth="128" guiX="974" guiY="280" id="REFORMAT0" type="REFORMAT">
218
+ <attr name="transform"><![CDATA[//#CTL2
219
+ import 'trans/DateFunctions.ctl';
220
+
221
+ // Transforms input record into output record.
222
+ function integer transform()
223
+ {
224
+ $out.0.Id = $in.0.Id;
225
+ $out.0.StageName = $in.0.StageName;
226
+ $out.0.IsWon = $in.0.IsWon;
227
+ $out.0.IsClosed = $in.0.IsClosed;
228
+ $out.0.Timestamp = timestampParsing($in.0.CreatedDate, "${GDC_EVENTSTORE_TIMEZONE}"):null;
229
+
230
+ return OK;
231
+ }
232
+
233
+ // Called during component initialization.
234
+ // function boolean init() {}
235
+
236
+ // Called during each graph run before the transform is executed. May be used to allocate and initialize resources
237
+ // required by the transform. All resources allocated within this method should be released
238
+ // by the postExecute() method.
239
+ // function void preExecute() {}
240
+
241
+ // Called only if transform() throws an exception.
242
+ // function integer transformOnError(string errorMessage, string stackTrace) {}
243
+
244
+ // Called during each graph run after the entire transform was executed. Should be used to free any resources
245
+ // allocated within the preExecute() method.
246
+ // function void postExecute() {}
247
+
248
+ // Called to return a user-defined error message when an error occurs.
249
+ // function string getMessage() {}
250
+ ]]></attr>
251
+ </Node>
252
+ <Node enabled="enabled" fieldsMapping="{&quot;xmlFieldsMapping&quot;:{&quot;xmlFields&quot;:[{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;OpportunityId&quot;,&quot;label&quot;:&quot;Opportunity ID&quot;,&quot;xmlPath&quot;:&quot;OpportunityId&quot;,&quot;metadataField&quot;:&quot;Id&quot;}},{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;CreatedDate&quot;,&quot;label&quot;:&quot;Created Date&quot;,&quot;xmlPath&quot;:&quot;CreatedDate&quot;,&quot;metadataField&quot;:&quot;CreatedDate&quot;}},{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;StageName&quot;,&quot;label&quot;:&quot;Stage Name&quot;,&quot;xmlPath&quot;:&quot;StageName&quot;,&quot;metadataField&quot;:&quot;StageName&quot;}},{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;CloseDate&quot;,&quot;label&quot;:&quot;Close Date&quot;,&quot;xmlPath&quot;:&quot;CloseDate&quot;,&quot;metadataField&quot;:&quot;CloseDate&quot;}},{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;Amount&quot;,&quot;label&quot;:&quot;Amount&quot;,&quot;xmlPath&quot;:&quot;Amount&quot;,&quot;metadataField&quot;:&quot;Amount&quot;}},{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;Probability&quot;,&quot;label&quot;:&quot;Probability&quot;,&quot;xmlPath&quot;:&quot;Probability&quot;,&quot;metadataField&quot;:&quot;Probability&quot;}}]}}" guiHeight="65" guiName="SF Reader" guiWidth="128" guiX="188" guiY="280" id="SF_READER0" sfdcConnection="SFDC" soql="Select CreatedDate, OpportunityId, StageName, CloseDate, convertCurrency(Amount), Probability From OpportunityHistory" type="SF_READER"/>
253
+ <Node enabled="enabled" fieldsMapping="{&quot;xmlFieldsMapping&quot;:{&quot;xmlFields&quot;:[{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;StageName&quot;,&quot;label&quot;:&quot;Stage&quot;,&quot;xmlPath&quot;:&quot;StageName&quot;,&quot;metadataField&quot;:&quot;StageName&quot;}},{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;SystemModstamp&quot;,&quot;label&quot;:&quot;System Modstamp&quot;,&quot;xmlPath&quot;:&quot;SystemModstamp&quot;,&quot;metadataField&quot;:&quot;SystemModstamp&quot;}},{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;Id&quot;,&quot;label&quot;:&quot;Opportunity ID&quot;,&quot;xmlPath&quot;:&quot;Id&quot;,&quot;metadataField&quot;:&quot;Id&quot;}}]}}" guiHeight="65" guiName="SF Reader" guiWidth="128" guiX="1114" guiY="383" id="SF_READER2" sfdcConnection="SFDC" soql="Select StageName, SystemModstamp, Id From Opportunity" type="SF_READER"/>
254
+ <Node enabled="enabled" guiHeight="84" guiName="SimpleCopy" guiWidth="128" guiX="781" guiY="286" id="SIMPLE_COPY0" type="SIMPLE_COPY"/>
255
+ <Node enabled="enabled" guiHeight="72" guiName="SimpleGather" guiWidth="128" guiX="1468" guiY="283" id="SIMPLE_GATHER0" type="SIMPLE_GATHER"/>
256
+ <Edge debugMode="true" fromNode="EXT_SORT0:0" guiBendpoints="" guiRouter="Manhattan" id="Edge16" inPort="Port 0 (in)" metadata="Metadata1" outPort="Port 0 (out)" toNode="GD_ESTORE_WRITER0:0"/>
257
+ <Edge debugMode="true" fromNode="LOOKUP_JOIN0:0" guiBendpoints="" guiRouter="Manhattan" id="Edge4" inPort="Port 0 (in)" metadata="Metadata6" outPort="Port 0 (joined records)" toNode="SIMPLE_COPY0:0"/>
258
+ <Edge debugMode="true" fromNode="LOOKUP_JOIN1:0" guiBendpoints="" guiRouter="Manhattan" id="Edge14" inPort="Port 1 (in)" metadata="Metadata1" outPort="Port 0 (joined records)" toNode="SIMPLE_GATHER0:1"/>
259
+ <Edge debugMode="true" fromNode="REFORMAT0:0" guiBendpoints="" guiRouter="Manhattan" id="Edge9" inPort="Port 0 (in)" metadata="Metadata1" outPort="Port 0 (out)" toNode="SIMPLE_GATHER0:0"/>
260
+ <Edge debugMode="true" fromNode="SF_READER0:0" guiBendpoints="" guiRouter="Manhattan" id="Edge0" inPort="Port 0 (in)" metadata="Metadata0" outPort="Port 0 (output)" toNode="LOOKUP_JOIN0:0"/>
261
+ <Edge fromNode="SF_READER2:0" guiBendpoints="" guiRouter="Manhattan" id="Edge13" inPort="Port 0 (in)" metadata="Metadata7" outPort="Port 0 (output)" toNode="LOOKUP_JOIN1:0"/>
262
+ <Edge fromNode="SIMPLE_COPY0:0" guiBendpoints="" guiRouter="Manhattan" id="Edge5" inPort="Port 0 (in)" metadata="Metadata6" outPort="Port 0 (out)" toNode="REFORMAT0:0"/>
263
+ <Edge fromNode="SIMPLE_COPY0:1" guiBendpoints="" guiRouter="Manhattan" id="Edge6" inPort="Port 0 (in)" metadata="Metadata6" outPort="Port 1 (out)" toNode="REFORMAT1:0"/>
264
+ <Edge fromNode="SIMPLE_COPY0:2" guiBendpoints="" guiRouter="Manhattan" id="Edge7" inPort="Port 0 (in)" metadata="Metadata6" outPort="Port 2 (out)" toNode="REFORMAT2:0"/>
265
+ <Edge fromNode="SIMPLE_COPY0:3" guiBendpoints="" guiRouter="Manhattan" id="Edge8" inPort="Port 0 (in)" metadata="Metadata6" outPort="Port 3 (out)" toNode="REFORMAT3:0"/>
266
+ <Edge debugMode="true" fromNode="SIMPLE_GATHER0:0" guiBendpoints="" guiRouter="Manhattan" id="Edge15" inPort="Port 0 (in)" metadata="Metadata1" outPort="Port 0 (out)" toNode="EXT_SORT0:0"/>
267
+ </Phase>
268
+ <Phase number="2">
269
+ <Node enabled="enabled" guiHeight="77" guiName="ExtSort" guiWidth="128" guiX="1656" guiY="560" id="EXT_SORT1" sortKey="Timestamp(a)" type="EXT_SORT"/>
270
+ <Node enabled="enabled" entityFieldsMapping="{&quot;entityName&quot;:&quot;Opportunity&quot;,&quot;fieldsMapping&quot;:{&quot;Id&quot;:{&quot;name&quot;:&quot;Id&quot;,&quot;type&quot;:&quot;recordid&quot;},&quot;CloseDate&quot;:{&quot;name&quot;:&quot;CloseDate&quot;,&quot;type&quot;:&quot;attribute&quot;},&quot;Timestamp&quot;:{&quot;name&quot;:&quot;Timestamp&quot;,&quot;type&quot;:&quot;timestamp&quot;}}}" guiHeight="65" guiName="GD Eventstore Writer" guiWidth="150" guiX="1872" guiY="560" id="GD_ESTORE_WRITER1" store="${GDC_EVENTSTORE}" timezone="${GDC_EVENTSTORE_TIMEZONE}" type="GD_ESTORE_WRITER"/>
271
+ <Node enabled="enabled" guiHeight="65" guiName="Reformat" guiWidth="128" guiX="974" guiY="550" id="REFORMAT1" type="REFORMAT">
272
+ <attr name="transform"><![CDATA[//#CTL2
273
+ import 'trans/DateFunctions.ctl';
274
+
275
+ // Transforms input record into output record.
276
+ function integer transform()
277
+ {
278
+ $out.0.Id = $in.0.Id;
279
+ $out.0.CloseDate = $in.0.CloseDate;
280
+ $out.0.Timestamp = timestampParsing($in.0.CreatedDate, "${GDC_EVENTSTORE_TIMEZONE}"):null;
281
+
282
+ return OK;
283
+ }
284
+
285
+ // Called during component initialization.
286
+ // function boolean init() {}
287
+
288
+ // Called during each graph run before the transform is executed. May be used to allocate and initialize resources
289
+ // required by the transform. All resources allocated within this method should be released
290
+ // by the postExecute() method.
291
+ // function void preExecute() {}
292
+
293
+ // Called only if transform() throws an exception.
294
+ // function integer transformOnError(string errorMessage, string stackTrace) {}
295
+
296
+ // Called during each graph run after the entire transform was executed. Should be used to free any resources
297
+ // allocated within the preExecute() method.
298
+ // function void postExecute() {}
299
+
300
+ // Called to return a user-defined error message when an error occurs.
301
+ // function string getMessage() {}
302
+ ]]></attr>
303
+ </Node>
304
+ <Node enabled="enabled" guiHeight="65" guiName="Reformat" guiWidth="128" guiX="1300" guiY="642" id="REFORMAT4" type="REFORMAT">
305
+ <attr name="transform"><![CDATA[//#CTL2
306
+ import 'trans/DateFunctions.ctl';
307
+
308
+ // Transforms input record into output record.
309
+ function integer transform() {
310
+ $out.0.CloseDate = $in.0.CloseDate;
311
+ $out.0.Id = $in.0.Id;
312
+ $out.0.Timestamp = $out.0.Timestamp = timestampParsing($in.0.SystemModstamp, "${GDC_EVENTSTORE_TIMEZONE}"):null;
313
+
314
+ return OK;
315
+ }
316
+
317
+ // Called during component initialization.
318
+ // function boolean init() {}
319
+
320
+ // Called during each graph run before the transform is executed. May be used to allocate and initialize resources
321
+ // required by the transform. All resources allocated within this method should be released
322
+ // by the postExecute() method.
323
+ // function void preExecute() {}
324
+
325
+ // Called only if transform() throws an exception.
326
+ // function integer transformOnError(string errorMessage, string stackTrace) {}
327
+
328
+ // Called during each graph run after the entire transform was executed. Should be used to free any resources
329
+ // allocated within the preExecute() method.
330
+ // function void postExecute() {}
331
+
332
+ // Called to return a user-defined error message when an error occurs.
333
+ // function string getMessage() {}
334
+ ]]></attr>
335
+ </Node>
336
+ <Node enabled="enabled" fieldsMapping="{&quot;xmlFieldsMapping&quot;:{&quot;xmlFields&quot;:[{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;CloseDate&quot;,&quot;label&quot;:&quot;Close Date&quot;,&quot;xmlPath&quot;:&quot;CloseDate&quot;,&quot;metadataField&quot;:&quot;CloseDate&quot;}},{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;SystemModstamp&quot;,&quot;label&quot;:&quot;System Modstamp&quot;,&quot;xmlPath&quot;:&quot;SystemModstamp&quot;,&quot;metadataField&quot;:&quot;SystemModstamp&quot;}},{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;Id&quot;,&quot;label&quot;:&quot;Opportunity ID&quot;,&quot;xmlPath&quot;:&quot;Id&quot;,&quot;metadataField&quot;:&quot;Id&quot;}}]}}" guiHeight="65" guiName="SF Reader" guiWidth="128" guiX="1114" guiY="642" id="SF_READER3" sfdcConnection="SFDC" soql="Select CloseDate, SystemModstamp, Id From Opportunity" type="SF_READER"/>
337
+ <Node enabled="enabled" guiHeight="72" guiName="SimpleGather" guiWidth="128" guiX="1481" guiY="557" id="SIMPLE_GATHER1" type="SIMPLE_GATHER"/>
338
+ <Edge debugMode="true" fromNode="EXT_SORT1:0" guiBendpoints="" guiRouter="Manhattan" id="Edge19" inPort="Port 0 (in)" metadata="Metadata2" outPort="Port 0 (out)" toNode="GD_ESTORE_WRITER1:0"/>
339
+ <Edge fromNode="REFORMAT1:0" guiBendpoints="" guiRouter="Manhattan" id="Edge10" inPort="Port 0 (in)" metadata="Metadata2" outPort="Port 0 (out)" toNode="SIMPLE_GATHER1:0"/>
340
+ <Edge fromNode="REFORMAT4:0" guiBendpoints="" guiRouter="Manhattan" id="Edge24" inPort="Port 1 (in)" metadata="Metadata2" outPort="Port 0 (out)" toNode="SIMPLE_GATHER1:1"/>
341
+ <Edge fromNode="SF_READER3:0" guiBendpoints="" guiRouter="Manhattan" id="Edge17" inPort="Port 0 (in)" metadata="Metadata8" outPort="Port 0 (output)" toNode="REFORMAT4:0"/>
342
+ <Edge fromNode="SIMPLE_GATHER1:0" guiBendpoints="" guiRouter="Manhattan" id="Edge18" inPort="Port 0 (in)" metadata="Metadata2" outPort="Port 0 (out)" toNode="EXT_SORT1:0"/>
343
+ </Phase>
344
+ <Phase number="3">
345
+ <Node enabled="enabled" guiHeight="77" guiName="ExtSort" guiWidth="128" guiX="1656" guiY="781" id="EXT_SORT2" sortKey="Timestamp(a)" type="EXT_SORT"/>
346
+ <Node enabled="enabled" entityFieldsMapping="{&quot;entityName&quot;:&quot;Opportunity&quot;,&quot;fieldsMapping&quot;:{&quot;Amount&quot;:{&quot;name&quot;:&quot;Amount&quot;,&quot;type&quot;:&quot;fact&quot;},&quot;Id&quot;:{&quot;name&quot;:&quot;Id&quot;,&quot;type&quot;:&quot;recordid&quot;},&quot;Timestamp&quot;:{&quot;name&quot;:&quot;Timestamp&quot;,&quot;type&quot;:&quot;timestamp&quot;}}}" guiHeight="65" guiName="GD Eventstore Writer" guiWidth="150" guiX="1872" guiY="781" id="GD_ESTORE_WRITER2" store="${GDC_EVENTSTORE}" timezone="${GDC_EVENTSTORE_TIMEZONE}" type="GD_ESTORE_WRITER"/>
347
+ <Node enabled="enabled" guiHeight="65" guiName="Reformat" guiWidth="128" guiX="960" guiY="787" id="REFORMAT2" type="REFORMAT">
348
+ <attr name="transform"><![CDATA[//#CTL2
349
+ import 'trans/DateFunctions.ctl';
350
+
351
+ // Transforms input record into output record.
352
+ function integer transform()
353
+ {
354
+ $out.0.Id = $in.0.Id;
355
+ $out.0.Amount = $in.0.Amount;
356
+ $out.0.Timestamp = timestampParsing($in.0.CreatedDate, "${GDC_EVENTSTORE_TIMEZONE}"):null;
357
+
358
+ return OK;
359
+ }
360
+
361
+ // Called during component initialization.
362
+ // function boolean init() {}
363
+
364
+ // Called during each graph run before the transform is executed. May be used to allocate and initialize resources
365
+ // required by the transform. All resources allocated within this method should be released
366
+ // by the postExecute() method.
367
+ // function void preExecute() {}
368
+
369
+ // Called only if transform() throws an exception.
370
+ // function integer transformOnError(string errorMessage, string stackTrace) {}
371
+
372
+ // Called during each graph run after the entire transform was executed. Should be used to free any resources
373
+ // allocated within the preExecute() method.
374
+ // function void postExecute() {}
375
+
376
+ // Called to return a user-defined error message when an error occurs.
377
+ // function string getMessage() {}
378
+ ]]></attr>
379
+ </Node>
380
+ <Node enabled="enabled" guiHeight="65" guiName="Reformat" guiWidth="128" guiX="1300" guiY="881" id="REFORMAT5" type="REFORMAT">
381
+ <attr name="transform"><![CDATA[//#CTL2
382
+ import 'trans/DateFunctions.ctl';
383
+
384
+ // Transforms input record into output record.
385
+ function integer transform()
386
+ {
387
+ $out.0.Amount = $in.0.Amount;
388
+ $out.0.Id = $in.0.Id;
389
+ $out.0.Timestamp = $out.0.Timestamp = timestampParsing($in.0.SystemModstamp, "${GDC_EVENTSTORE_TIMEZONE}"):null;
390
+
391
+ return OK;
392
+ }
393
+
394
+ // Called during component initialization.
395
+ // function boolean init() {}
396
+
397
+ // Called during each graph run before the transform is executed. May be used to allocate and initialize resources
398
+ // required by the transform. All resources allocated within this method should be released
399
+ // by the postExecute() method.
400
+ // function void preExecute() {}
401
+
402
+ // Called only if transform() throws an exception.
403
+ // function integer transformOnError(string errorMessage, string stackTrace) {}
404
+
405
+ // Called during each graph run after the entire transform was executed. Should be used to free any resources
406
+ // allocated within the preExecute() method.
407
+ // function void postExecute() {}
408
+
409
+ // Called to return a user-defined error message when an error occurs.
410
+ // function string getMessage() {}
411
+ ]]></attr>
412
+ </Node>
413
+ <Node enabled="enabled" fieldsMapping="{&quot;xmlFieldsMapping&quot;:{&quot;xmlFields&quot;:[{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;Amount&quot;,&quot;label&quot;:&quot;Amount&quot;,&quot;xmlPath&quot;:&quot;Amount&quot;,&quot;metadataField&quot;:&quot;Amount&quot;}},{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;SystemModstamp&quot;,&quot;label&quot;:&quot;System Modstamp&quot;,&quot;xmlPath&quot;:&quot;SystemModstamp&quot;,&quot;metadataField&quot;:&quot;SystemModstamp&quot;}},{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;Id&quot;,&quot;label&quot;:&quot;Opportunity ID&quot;,&quot;xmlPath&quot;:&quot;Id&quot;,&quot;metadataField&quot;:&quot;Id&quot;}}]}}" guiHeight="65" guiName="SF Reader" guiWidth="128" guiX="1114" guiY="881" id="SF_READER4" sfdcConnection="SFDC" soql="Select convertCurrency(Amount), SystemModstamp, Id From Opportunity" type="SF_READER"/>
414
+ <Node enabled="enabled" guiHeight="72" guiName="SimpleGather" guiWidth="128" guiX="1487" guiY="787" id="SIMPLE_GATHER2" type="SIMPLE_GATHER"/>
415
+ <Edge debugMode="true" fromNode="EXT_SORT2:0" guiBendpoints="" guiRouter="Manhattan" id="Edge20" inPort="Port 0 (in)" metadata="Metadata3" outPort="Port 0 (out)" toNode="GD_ESTORE_WRITER2:0"/>
416
+ <Edge fromNode="REFORMAT2:0" guiBendpoints="" guiRouter="Manhattan" id="Edge11" inPort="Port 0 (in)" metadata="Metadata3" outPort="Port 0 (out)" toNode="SIMPLE_GATHER2:0"/>
417
+ <Edge fromNode="REFORMAT5:0" guiBendpoints="" guiRouter="Manhattan" id="Edge25" inPort="Port 1 (in)" metadata="Metadata3" outPort="Port 0 (out)" toNode="SIMPLE_GATHER2:1"/>
418
+ <Edge fromNode="SF_READER4:0" guiBendpoints="" guiRouter="Manhattan" id="Edge1" inPort="Port 0 (in)" metadata="Metadata9" outPort="Port 0 (output)" toNode="REFORMAT5:0"/>
419
+ <Edge fromNode="SIMPLE_GATHER2:0" guiBendpoints="" guiRouter="Manhattan" id="Edge3" inPort="Port 0 (in)" metadata="Metadata3" outPort="Port 0 (out)" toNode="EXT_SORT2:0"/>
420
+ </Phase>
421
+ <Phase number="4">
422
+ <Node enabled="enabled" guiHeight="77" guiName="ExtSort" guiWidth="128" guiX="1656" guiY="1002" id="EXT_SORT3" sortKey="Timestamp(a)" type="EXT_SORT"/>
423
+ <Node enabled="enabled" entityFieldsMapping="{&quot;entityName&quot;:&quot;Opportunity&quot;,&quot;fieldsMapping&quot;:{&quot;Probability&quot;:{&quot;name&quot;:&quot;Probability&quot;,&quot;type&quot;:&quot;fact&quot;},&quot;Id&quot;:{&quot;name&quot;:&quot;Id&quot;,&quot;type&quot;:&quot;recordid&quot;},&quot;Timestamp&quot;:{&quot;name&quot;:&quot;Timestamp&quot;,&quot;type&quot;:&quot;timestamp&quot;}}}" guiHeight="65" guiName="GD Eventstore Writer" guiWidth="150" guiX="1872" guiY="1002" id="GD_ESTORE_WRITER3" store="${GDC_EVENTSTORE}" timezone="${GDC_EVENTSTORE_TIMEZONE}" type="GD_ESTORE_WRITER"/>
424
+ <Node enabled="enabled" guiHeight="65" guiName="Reformat" guiWidth="128" guiX="954" guiY="1002" id="REFORMAT3" type="REFORMAT">
425
+ <attr name="transform"><![CDATA[//#CTL2
426
+ import 'trans/DateFunctions.ctl';
427
+
428
+ // Transforms input record into output record.
429
+ function integer transform()
430
+ {
431
+ $out.0.Id = $in.0.Id;
432
+ $out.0.Probability = str2decimal($in.0.Probability):null;
433
+ $out.0.Timestamp = timestampParsing($in.0.CreatedDate, "${GDC_EVENTSTORE_TIMEZONE}"):null;
434
+
435
+ return OK;
436
+ }
437
+
438
+ // Called during component initialization.
439
+ // function boolean init() {}
440
+
441
+ // Called during each graph run before the transform is executed. May be used to allocate and initialize resources
442
+ // required by the transform. All resources allocated within this method should be released
443
+ // by the postExecute() method.
444
+ // function void preExecute() {}
445
+
446
+ // Called only if transform() throws an exception.
447
+ // function integer transformOnError(string errorMessage, string stackTrace) {}
448
+
449
+ // Called during each graph run after the entire transform was executed. Should be used to free any resources
450
+ // allocated within the preExecute() method.
451
+ // function void postExecute() {}
452
+
453
+ // Called to return a user-defined error message when an error occurs.
454
+ // function string getMessage() {}
455
+ ]]></attr>
456
+ </Node>
457
+ <Node enabled="enabled" guiHeight="65" guiName="Reformat" guiWidth="128" guiX="1300" guiY="1110" id="REFORMAT6" type="REFORMAT">
458
+ <attr name="transform"><![CDATA[//#CTL2
459
+ import 'trans/DateFunctions.ctl';
460
+
461
+ // Transforms input record into output record.
462
+ function integer transform() {
463
+ $out.0.Probability = $in.0.Probability;
464
+ $out.0.Id = $in.0.Id;
465
+ $out.0.Timestamp = $out.0.Timestamp = timestampParsing($in.0.SystemModstamp, "${GDC_EVENTSTORE_TIMEZONE}"):null;
466
+
467
+ return OK;
468
+ }
469
+
470
+ // Called during component initialization.
471
+ // function boolean init() {}
472
+
473
+ // Called during each graph run before the transform is executed. May be used to allocate and initialize resources
474
+ // required by the transform. All resources allocated within this method should be released
475
+ // by the postExecute() method.
476
+ // function void preExecute() {}
477
+
478
+ // Called only if transform() throws an exception.
479
+ // function integer transformOnError(string errorMessage, string stackTrace) {}
480
+
481
+ // Called during each graph run after the entire transform was executed. Should be used to free any resources
482
+ // allocated within the preExecute() method.
483
+ // function void postExecute() {}
484
+
485
+ // Called to return a user-defined error message when an error occurs.
486
+ // function string getMessage() {}
487
+ ]]></attr>
488
+ </Node>
489
+ <Node enabled="enabled" fieldsMapping="{&quot;xmlFieldsMapping&quot;:{&quot;xmlFields&quot;:[{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;Probability&quot;,&quot;label&quot;:&quot;Probability (%)&quot;,&quot;xmlPath&quot;:&quot;Probability&quot;,&quot;metadataField&quot;:&quot;Probability&quot;}},{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;SystemModstamp&quot;,&quot;label&quot;:&quot;System Modstamp&quot;,&quot;xmlPath&quot;:&quot;SystemModstamp&quot;,&quot;metadataField&quot;:&quot;SystemModstamp&quot;}},{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;Id&quot;,&quot;label&quot;:&quot;Opportunity ID&quot;,&quot;xmlPath&quot;:&quot;Id&quot;,&quot;metadataField&quot;:&quot;Id&quot;}}]}}" guiHeight="65" guiName="SF Reader" guiWidth="128" guiX="1114" guiY="1104" id="SF_READER5" sfdcConnection="SFDC" soql="Select Probability, SystemModstamp, Id From Opportunity" type="SF_READER"/>
490
+ <Node enabled="enabled" guiHeight="72" guiName="SimpleGather" guiWidth="128" guiX="1487" guiY="1005" id="SIMPLE_GATHER3" type="SIMPLE_GATHER"/>
491
+ <Edge debugMode="true" fromNode="EXT_SORT3:0" guiBendpoints="" guiRouter="Manhattan" id="Edge23" inPort="Port 0 (in)" metadata="Metadata4" outPort="Port 0 (out)" toNode="GD_ESTORE_WRITER3:0"/>
492
+ <Edge fromNode="REFORMAT3:0" guiBendpoints="" guiRouter="Manhattan" id="Edge12" inPort="Port 0 (in)" metadata="Metadata4" outPort="Port 0 (out)" toNode="SIMPLE_GATHER3:0"/>
493
+ <Edge fromNode="REFORMAT6:0" guiBendpoints="" guiRouter="Manhattan" id="Edge26" inPort="Port 1 (in)" metadata="Metadata4" outPort="Port 0 (out)" toNode="SIMPLE_GATHER3:1"/>
494
+ <Edge fromNode="SF_READER5:0" guiBendpoints="" guiRouter="Manhattan" id="Edge21" inPort="Port 0 (in)" metadata="Metadata10" outPort="Port 0 (output)" toNode="REFORMAT6:0"/>
495
+ <Edge fromNode="SIMPLE_GATHER3:0" guiBendpoints="" guiRouter="Manhattan" id="Edge22" inPort="Port 0 (in)" metadata="Metadata4" outPort="Port 0 (out)" toNode="EXT_SORT3:0"/>
496
+ </Phase>
497
+ <Phase number="5">
498
+ <Node enabled="enabled" guiHeight="77" guiName="ExtSort" guiWidth="128" guiX="1656" guiY="1236" id="EXT_SORT4" sortKey="Timestamp(a)" type="EXT_SORT"/>
499
+ <Node enabled="enabled" guiHeight="77" guiName="ExtSort" guiWidth="128" guiX="1656" guiY="1334" id="EXT_SORT5" sortKey="Timestamp(a)" type="EXT_SORT"/>
500
+ <Node enabled="enabled" entityFieldsMapping="{&quot;entityName&quot;:&quot;Opportunity&quot;,&quot;fieldsMapping&quot;:{&quot;OpportunityId&quot;:{&quot;name&quot;:&quot;OpportunityId&quot;,&quot;type&quot;:&quot;attribute&quot;},&quot;CreatedDate&quot;:{&quot;name&quot;:&quot;CreatedDate&quot;,&quot;type&quot;:&quot;attribute&quot;},&quot;Id&quot;:{&quot;name&quot;:&quot;Id&quot;,&quot;type&quot;:&quot;recordid&quot;},&quot;Timestamp&quot;:{&quot;name&quot;:&quot;Timestamp&quot;,&quot;type&quot;:&quot;timestamp&quot;}}}" guiHeight="65" guiName="GD Eventstore Writer" guiWidth="150" guiX="1872" guiY="1236" id="GD_ESTORE_WRITER4" store="${GDC_EVENTSTORE}" timezone="${GDC_EVENTSTORE_TIMEZONE}" type="GD_ESTORE_WRITER"/>
501
+ <Node enabled="enabled" entityFieldsMapping="{&quot;entityName&quot;:&quot;Opportunity&quot;,&quot;fieldsMapping&quot;:{&quot;IsDeleted&quot;:{&quot;name&quot;:&quot;IsDeleted&quot;,&quot;type&quot;:&quot;isDeleted&quot;},&quot;Id&quot;:{&quot;name&quot;:&quot;Id&quot;,&quot;type&quot;:&quot;recordid&quot;},&quot;Timestamp&quot;:{&quot;name&quot;:&quot;Timestamp&quot;,&quot;type&quot;:&quot;timestamp&quot;}}}" guiHeight="65" guiName="GD Eventstore Writer" guiWidth="150" guiX="1917" guiY="1334" id="GD_ESTORE_WRITER5" store="${GDC_EVENTSTORE}" timezone="${GDC_EVENTSTORE_TIMEZONE}" type="GD_ESTORE_WRITER"/>
502
+ <Node enabled="enabled" guiHeight="65" guiName="Reformat" guiWidth="128" guiX="1300" guiY="1236" id="REFORMAT7" type="REFORMAT">
503
+ <attr name="transform"><![CDATA[//#CTL2
504
+ import 'trans/DateFunctions.ctl';
505
+
506
+ // Transforms input record into output record.
507
+ function integer transform()
508
+ {
509
+ $out.0.CreatedDate = dateParsing(goodDateParsing($in.0.CreatedDate, "${GDC_EVENTSTORE_TIMEZONE}")):null;
510
+ $out.0.Id = $in.0.Id;
511
+ $out.0.OpportunityId = $in.0.Id;
512
+ $out.0.Timestamp = timestampParsing($in.0.CreatedDate, "${GDC_EVENTSTORE_TIMEZONE}"):null;
513
+
514
+ return OK;
515
+ }
516
+
517
+ // Called during component initialization.
518
+ // function boolean init() {}
519
+
520
+ // Called during each graph run before the transform is executed. May be used to allocate and initialize resources
521
+ // required by the transform. All resources allocated within this method should be released
522
+ // by the postExecute() method.
523
+ // function void preExecute() {}
524
+
525
+ // Called only if transform() throws an exception.
526
+ // function integer transformOnError(string errorMessage, string stackTrace) {}
527
+
528
+ // Called during each graph run after the entire transform was executed. Should be used to free any resources
529
+ // allocated within the preExecute() method.
530
+ // function void postExecute() {}
531
+
532
+ // Called to return a user-defined error message when an error occurs.
533
+ // function string getMessage() {}
534
+ ]]></attr>
535
+ </Node>
536
+ <Node enabled="enabled" guiHeight="65" guiName="Reformat" guiWidth="128" guiX="1300" guiY="1334" id="REFORMAT8" type="REFORMAT">
537
+ <attr name="transform"><![CDATA[//#CTL2
538
+ import 'trans/DateFunctions.ctl';
539
+
540
+ // Transforms input record into output record.
541
+ date now = today();
542
+
543
+ function integer transform()
544
+ {
545
+ $out.0.Id = $in.0.Id;
546
+ $out.0.Timestamp = now;
547
+ $out.0.IsDeleted = 'true';
548
+ return OK;
549
+ }
550
+
551
+ // Called during component initialization.
552
+ // function boolean init() {}
553
+
554
+ // Called during each graph run before the transform is executed. May be used to allocate and initialize resources
555
+ // required by the transform. All resources allocated within this method should be released
556
+ // by the postExecute() method.
557
+ // function void preExecute() {}
558
+
559
+ // Called only if transform() throws an exception.
560
+ // function integer transformOnError(string errorMessage, string stackTrace) {}
561
+
562
+ // Called during each graph run after the entire transform was executed. Should be used to free any resources
563
+ // allocated within the preExecute() method.
564
+ // function void postExecute() {}
565
+
566
+ // Called to return a user-defined error message when an error occurs.
567
+ // function string getMessage() {}
568
+ ]]></attr>
569
+ </Node>
570
+ <Node enabled="enabled" fieldsMapping="{&quot;xmlFieldsMapping&quot;:{&quot;xmlFields&quot;:[{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;Id&quot;,&quot;label&quot;:&quot;Opportunity ID&quot;,&quot;xmlPath&quot;:&quot;Id&quot;,&quot;metadataField&quot;:&quot;Id&quot;}},{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;CreatedDate&quot;,&quot;label&quot;:&quot;Created Date&quot;,&quot;xmlPath&quot;:&quot;CreatedDate&quot;,&quot;metadataField&quot;:&quot;CreatedDate&quot;}}]}}" guiHeight="65" guiName="SF Reader" guiWidth="128" guiX="1114" guiY="1236" id="SF_READER6" sfdcConnection="SFDC" soql="Select Id, CreatedDate From Opportunity" type="SF_READER"/>
571
+ <Node enabled="enabled" fieldsMapping="{&quot;xmlFieldsMapping&quot;:{&quot;xmlFields&quot;:[{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;Id&quot;,&quot;label&quot;:&quot;Opportunity ID&quot;,&quot;xmlPath&quot;:&quot;Id&quot;,&quot;metadataField&quot;:&quot;Id&quot;}},{&quot;xmlFieldMapping&quot;:{&quot;name&quot;:&quot;CreatedDate&quot;,&quot;label&quot;:&quot;Created Date&quot;,&quot;xmlPath&quot;:&quot;CreatedDate&quot;,&quot;metadataField&quot;:&quot;CreatedDate&quot;}}]}}" guiHeight="65" guiName="SF Reader" guiWidth="128" guiX="1034" guiY="1334" id="SF_READER7" sfdcConnection="SFDC" soql="Select Id From Opportunity WHERE HasOpportunityLineItem = true" type="SF_READER"/>
572
+ <Edge debugMode="true" fromNode="EXT_SORT4:0" guiBendpoints="" guiRouter="Manhattan" id="Edge33" inPort="Port 0 (in)" metadata="Metadata12" outPort="Port 0 (out)" toNode="GD_ESTORE_WRITER4:0"/>
573
+ <Edge debugMode="true" fromNode="EXT_SORT5:0" guiBendpoints="" guiRouter="Manhattan" id="Edge29" inPort="Port 0 (in)" metadata="Metadata15" outPort="Port 0 (out)" toNode="GD_ESTORE_WRITER5:0"/>
574
+ <Edge debugMode="true" fromNode="REFORMAT7:0" guiBendpoints="" guiRouter="Manhattan" id="Edge28" inPort="Port 0 (in)" metadata="Metadata12" outPort="Port 0 (out)" toNode="EXT_SORT4:0"/>
575
+ <Edge debugMode="true" fromNode="REFORMAT8:0" guiBendpoints="" guiRouter="Manhattan" id="Edge30" inPort="Port 0 (in)" metadata="Metadata15" outPort="Port 0 (out)" toNode="EXT_SORT5:0"/>
576
+ <Edge debugMode="true" fromNode="SF_READER6:0" guiBendpoints="" guiRouter="Manhattan" id="Edge31" inPort="Port 0 (in)" metadata="Metadata13" outPort="Port 0 (output)" toNode="REFORMAT7:0"/>
577
+ <Edge debugMode="true" fromNode="SF_READER7:0" guiBendpoints="" guiRouter="Manhattan" id="Edge27" inPort="Port 0 (in)" metadata="Metadata13" outPort="Port 0 (output)" toNode="REFORMAT8:0"/>
578
+ </Phase>
579
+ </Graph>