cherby 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,12 +1,28 @@
1
1
  Cherby
2
2
  ======
3
+ [![Build Status](https://secure.travis-ci.org/a-e/cherby.png?branch=dev)](http://travis-ci.org/a-e/cherby)
3
4
 
4
5
  Cherby is a Ruby wrapper for the
5
6
  [Cherwell Web Service](http://cherwellsupport.com/webhelp/cherwell/index.htm#1971.htm).
6
7
 
7
- [Full documentation is on rdoc.info](http://rubydoc.info/github/a-e/cherby/master/frames).
8
+ - [Source](https://github.com/a-e/cherby)
9
+ - [Documentation](http://rubydoc.info/github/a-e/cherby/master/frames)
10
+ - [Gem](http://rubygems.org/gems/cherby)
11
+ - [Status](https://travis-ci.org/a-e/cherby)
8
12
 
9
- [![Build Status](https://secure.travis-ci.org/a-e/cherby.png?branch=dev)](http://travis-ci.org/a-e/cherby)
13
+
14
+ Install
15
+ -------
16
+
17
+ Just do:
18
+
19
+ $ gem install cherby
20
+
21
+ Or add:
22
+
23
+ gem 'cherby'
24
+
25
+ to your project's Gemfile or gemspec.
10
26
 
11
27
 
12
28
  Usage
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cherby"
3
- s.version = "0.0.1"
3
+ s.version = "0.0.2"
4
4
  s.summary = "Cherwell-Ruby bridge"
5
5
  s.description = <<-EOS
6
6
  Cherby is a Ruby wrapper for the Cherwell Web Service.
@@ -1,4 +1,3 @@
1
- require 'mustache'
2
1
  require 'nokogiri'
3
2
 
4
3
  module Cherby
@@ -7,30 +6,28 @@ module Cherby
7
6
 
8
7
  # Override this with the value of the BusinessObject's 'Name' attribute
9
8
  @object_name = ''
10
- # Override this with the name of the Mustache XML template used to render
11
- # your BusinessObject
12
- @template = ''
13
9
  # Fill this with default values for new instances of your BusinessObject
14
10
  @default_values = {}
15
11
 
16
12
  class << self
17
- attr_accessor :object_name, :template, :default_values, :template_path
13
+ attr_accessor :object_name, :default_values
18
14
  end
19
15
 
20
16
  # Create a new BusinessObject subclass instance from the given hash of
21
- # options.
22
- # FIXME: Make this method accept CamelCase string field names instead of
23
- # just :snake_case symbols, as part of a larger strategy to treat field names
24
- # consistently throughout (using Cherwell's CamelCase strings everywhere)
25
- def self.create(options={})
26
- if self.template.empty?
27
- # TODO: Exception subclass
28
- raise RuntimeError, "No template defined for BusinessObject"
29
- end
30
- Mustache.template_path = File.join(File.dirname(__FILE__), 'templates')
31
- xml = Mustache.render_file(
32
- self.template, self.default_values.merge(options))
33
- return self.new(xml)
17
+ # 'FieldName' => 'Field Value'.
18
+ def self.create(fields={})
19
+ type_name = self.object_name
20
+ builder = Nokogiri::XML::Builder.new {
21
+ BusinessObject_('Name' => type_name, 'RecID' => 'TODO') {
22
+ FieldList_ {
23
+ fields.each { |name, value|
24
+ Field_(value, 'Name' => name)
25
+ }
26
+ }
27
+ RelationshipList_ { }
28
+ }
29
+ }
30
+ return self.new(builder.to_xml)
34
31
  end
35
32
 
36
33
  # Instance methods
@@ -50,7 +47,13 @@ module Cherby
50
47
  # Return the node of the field with the given name.
51
48
  def get_field_node(field_name)
52
49
  selector = "BusinessObject > FieldList > Field[@Name=#{field_name}]"
53
- return @dom.css(selector).first
50
+ element = @dom.css(selector).first
51
+ if element.nil?
52
+ element = Nokogiri::XML::Node.new('Field', @dom)
53
+ element['Name'] = field_name
54
+ @dom.at_css("BusinessObject > FieldList").add_child(element)
55
+ end
56
+ return element
54
57
  end
55
58
 
56
59
  # Return a hash of field names and values
@@ -101,7 +104,7 @@ module Cherby
101
104
  # (LastModDateTime converted to DateTime)
102
105
  def modified
103
106
  last_mod = self['LastModDateTime']
104
- if last_mod.nil?
107
+ if last_mod.nil? || last_mod.empty?
105
108
  raise RuntimeError, "BusinessObject is missing LastModDateTime field."
106
109
  end
107
110
  begin
@@ -155,5 +158,6 @@ module Cherby
155
158
  self[field] = other_object[field]
156
159
  end
157
160
  end
161
+
158
162
  end
159
163
  end
@@ -225,6 +225,22 @@ module Cherby
225
225
  return @client.get_last_error
226
226
  end
227
227
 
228
+ # Get a business object definition as a hash
229
+ # ex.
230
+ # get_object_definition('Incident')
231
+ #
232
+ # TODO: Use this as the basis for building templates?
233
+ #
234
+ def get_object_definition(object_type)
235
+ result = {}
236
+ definition = @client.get_business_object_definition(object_type)
237
+ selector = 'BusinessObjectDef > FieldList > Field'
238
+ Nokogiri::XML(definition).css(selector).map do |field|
239
+ result[field['Name']] = field.css('Description').inner_html
240
+ end
241
+ return result
242
+ end
243
+
228
244
  end # class Cherwell
229
245
  end # module Cherby
230
246
 
@@ -11,7 +11,7 @@ module Cherby
11
11
  # like "http://my.hostname.com/CherwellService/api.asmx?WSDL".
12
12
  # The `http://` and `?WSDL` parts are automatically added if missing.
13
13
  #
14
- def initialize(base_url)
14
+ def initialize(base_url, verbose_logging=false)
15
15
  if File.exist?(base_url)
16
16
  wsdl_url = base_url
17
17
  elsif base_url =~ /^http/
@@ -23,7 +23,7 @@ module Cherby
23
23
  elsif base_url !~ /^http/
24
24
  raise ArgumentError, "Client URL must be a local file, or begin with http"
25
25
  end
26
- super(:wsdl => wsdl_url)
26
+ super(:wsdl => wsdl_url, :log => verbose_logging)
27
27
  end
28
28
 
29
29
  # Call a given SOAP method with an optional body.
@@ -72,8 +72,10 @@ module Cherby
72
72
  # # or a Hash of arguments:
73
73
  # client.login(:userId => 'sisko', :password => 'baseball')
74
74
  #
75
- # client.get_business_object_definition(
76
- # :nameOrId => 'JournalNote')
75
+ # # Get a BusinessObject definition with positional arguments:
76
+ # client.get_business_object_definition('JournalNote')
77
+ # # or a Hash of arguments:
78
+ # client.get_business_object_definition(:nameOrId => 'JournalNote')
77
79
  #
78
80
  def method_missing(method, *args, &block)
79
81
  if known_methods.include?(method)
@@ -1,5 +1,4 @@
1
1
  require 'date'
2
- require 'mustache'
3
2
  require 'cherby/business_object'
4
3
  require 'cherby/task'
5
4
  require 'cherby/journal_note'
@@ -8,7 +7,6 @@ module Cherby
8
7
  # Wrapper for Cherwell incident objects.
9
8
  class Incident < BusinessObject
10
9
  @object_name = 'Incident'
11
- @template = 'incident'
12
10
  @default_values = {
13
11
  :service => "Auto Generated",
14
12
  :service_group => "Auto Generated",
@@ -64,7 +62,7 @@ module Cherby
64
62
  def journal_notes
65
63
  css = "Relationship[@Name='Incident has Notes']" +
66
64
  " BusinessObject[@Name=JournalNote]"
67
- @notes ||= @dom.css(css).map do |element|
65
+ return @dom.css(css).map do |element|
68
66
  JournalNote.new(element.to_xml)
69
67
  end
70
68
  end
@@ -74,16 +72,19 @@ module Cherby
74
72
  # Bail out if this incident doesn't actually exist
75
73
  return nil if !exists?
76
74
  task = Task.create({
77
- :parent_public_id => self['IncidentID'],
78
- :parent_type_name => 'Incident',
79
- :task_type => 'Action',
80
- :task_description => task_description,
81
- :notes => task_notes,
82
- :owned_by => owned_by,
75
+ 'ParentPublicID' => self['IncidentID'],
76
+ 'ParentTypeName' => 'Incident',
77
+ 'TaskType' => 'Action',
78
+ 'TaskDescription' => task_description,
79
+ 'Notes' => task_notes,
80
+ 'OwnedBy' => owned_by,
83
81
  })
84
- relationship_xml = Mustache.render_file('task_relationship',
85
- {:task_business_object => task.dom.css('BusinessObject').to_xml})
86
- @dom.css('RelationshipList').first.add_child(relationship_xml)
82
+ rel_node = Nokogiri::XML::Node.new('Relationship', @dom)
83
+ rel_node['Name'] = 'Incident Has Tasks'
84
+ rel_node['TargetObjectName'] = 'Task'
85
+ rel_node['Type'] = 'Owns'
86
+ rel_node.inner_html = task.dom.css('BusinessObject').to_xml
87
+ @dom.at_css('RelationshipList').add_child(rel_node)
87
88
  end
88
89
 
89
90
  # Add a new JournalNote to this incident.
@@ -93,9 +94,12 @@ module Cherby
93
94
  #
94
95
  def add_journal_note(journal_note)
95
96
  return nil if !exists?
96
- relationship_xml = Mustache.render_file('journal_note_relationship',
97
- {:note_business_object => journal_note.dom.css('BusinessObject').to_xml})
98
- @dom.css('RelationshipList').first.add_child(relationship_xml)
97
+ rel_node = Nokogiri::XML::Node.new('Relationship', @dom)
98
+ rel_node['Name'] = 'Incident has Notes'
99
+ rel_node['TargetObjectName'] = 'JournalNote'
100
+ rel_node['Type'] = 'Owns'
101
+ rel_node.inner_html = journal_note.dom.css('BusinessObject').to_xml
102
+ @dom.at_css('RelationshipList').add_child(rel_node)
99
103
  end
100
104
 
101
105
  # Return True if this Incident has important fields differing from the
@@ -4,7 +4,6 @@ require 'cherby/business_object'
4
4
  module Cherby
5
5
  class JournalNote < BusinessObject
6
6
  @object_name = 'JournalNote'
7
- @template = 'journal_note'
8
7
  @default_values = {
9
8
  :details => "",
10
9
  }
@@ -4,7 +4,6 @@ require 'cherby/business_object'
4
4
  module Cherby
5
5
  class Task < BusinessObject
6
6
  @object_name = 'Task'
7
- @template = 'task'
8
7
  @default_values = {
9
8
  :status => "New",
10
9
  }
@@ -29,7 +28,7 @@ module Cherby
29
28
  def add_journal_note(journal_note)
30
29
  message = "\n============================\n" + \
31
30
  "Comment added #{journal_note.mod_s} by #{journal_note['CreatedBy']}: " + \
32
- journal_note['Details'] + "\n\n"
31
+ journal_note['Details'].to_s + "\n\n"
33
32
  self['CompletionDetails'] = self['CompletionDetails'] + message
34
33
  end
35
34
  end
@@ -4,19 +4,16 @@ require 'cherby/business_object'
4
4
  # Some BusinessObject subclasses to test with
5
5
  class MySubclass < Cherby::BusinessObject
6
6
  @object_name = 'MySubclass'
7
- @template = 'test/simple'
8
7
  @default_values = {}
9
8
  end
10
9
 
11
10
  class MySubclassNoTemplate < Cherby::BusinessObject
12
11
  @object_name = 'MySubclassNoTemplate'
13
- @template = ''
14
12
  @default_values = {}
15
13
  end
16
14
 
17
15
  class MySubclassNoTemplateFile < Cherby::BusinessObject
18
16
  @object_name = 'MySubclassNoTemplateFile'
19
- @template = 'no_such_file'
20
17
  @default_values = {}
21
18
  end
22
19
 
@@ -24,24 +21,12 @@ describe Cherby::BusinessObject do
24
21
  context "Class methods" do
25
22
  describe "#create" do
26
23
  it "sets options in the DOM" do
27
- obj = MySubclass.create({:first_name => 'Eric', :last_name => 'Idle'})
24
+ obj = MySubclass.create({'First' => 'Eric', 'Last' => 'Idle'})
28
25
  first_name = obj.dom.css("BusinessObject[@Name=MySubclass] Field[@Name=First]").first
29
26
  last_name = obj.dom.css("BusinessObject[@Name=MySubclass] Field[@Name=Last]").first
30
27
  first_name.content.should == "Eric"
31
28
  last_name.content.should == "Idle"
32
29
  end
33
-
34
- it "raises an exception when no template is provided" do
35
- lambda do
36
- MySubclassNoTemplate.create
37
- end.should raise_error(RuntimeError, /No template defined/)
38
- end
39
-
40
- it "raises an exception if the template file is nonexistent" do
41
- lambda do
42
- MySubclassNoTemplateFile.create
43
- end.should raise_error(Errno::ENOENT, /No such file/)
44
- end
45
30
  end #create
46
31
 
47
32
  describe "#parse_datetime" do
@@ -94,7 +79,7 @@ describe Cherby::BusinessObject do
94
79
 
95
80
  describe "#[]" do
96
81
  it "returns the value in the named field" do
97
- obj = MySubclass.create({:first_name => 'Eric', :last_name => 'Idle'})
82
+ obj = MySubclass.create({'First' => 'Eric', 'Last' => 'Idle'})
98
83
  obj['First'].should == 'Eric'
99
84
  obj['Last'].should == 'Idle'
100
85
  end
@@ -102,12 +87,18 @@ describe Cherby::BusinessObject do
102
87
 
103
88
  describe "#[]=" do
104
89
  it "puts a value in the named field" do
105
- obj = MySubclass.create({:first_name => 'Eric', :last_name => 'Idle'})
90
+ obj = MySubclass.create({'First' => 'Eric', 'Last' => 'Idle'})
106
91
  obj['First'] = 'Terry'
107
92
  obj['Last'] = 'Jones'
108
93
  obj['First'].should == 'Terry'
109
94
  obj['Last'].should == 'Jones'
110
95
  end
96
+
97
+ it "creates a new field if it doesn't exist" do
98
+ obj = MySubclass.create({'First' => 'Eric', 'Last' => 'Idle'})
99
+ obj['Middle'] = 'Something'
100
+ obj['Middle'].should == 'Something'
101
+ end
111
102
  end #[]=
112
103
 
113
104
  describe "#modified" do
@@ -116,12 +107,12 @@ describe Cherby::BusinessObject do
116
107
  # (otherwise the date won't compare equal later)
117
108
  now = DateTime.parse(DateTime.now.to_s)
118
109
 
119
- obj = MySubclass.create({:last_mod_date_time => now})
110
+ obj = MySubclass.create({'LastModDateTime' => now})
120
111
  obj.modified.should == now
121
112
  end
122
113
 
123
114
  it "BusinessObject with an invalid LastModDateTime value" do
124
- obj = MySubclass.create({:last_mod_date_time => 'bogus'})
115
+ obj = MySubclass.create({'LastModDateTime' => 'bogus'})
125
116
  lambda do
126
117
  obj.modified
127
118
  end.should raise_error(RuntimeError, /Cannot parse LastModDateTime: 'bogus'/)
@@ -148,8 +139,8 @@ describe Cherby::BusinessObject do
148
139
  describe "#newer_than?" do
149
140
  before(:each) do
150
141
  @now = DateTime.now
151
- @older = MySubclass.create({:last_mod_date_time => (@now - 1)})
152
- @newer = MySubclass.create({:last_mod_date_time => @now})
142
+ @older = MySubclass.create({'LastModDateTime' => (@now - 1)})
143
+ @newer = MySubclass.create({'LastModDateTime' => @now})
153
144
  end
154
145
 
155
146
  it "true when this one was modified more recently than another" do
@@ -185,8 +176,11 @@ describe Cherby::BusinessObject do
185
176
  first_node.inner_html.should == 'Eric'
186
177
  end
187
178
 
188
- it "returns nil when a Field with the given Name is not found" do
189
- @obj.get_field_node('Bogus').should be_nil
179
+ it "creates a new Field if it doesn't exist" do
180
+ middle_node = @obj.get_field_node('Middle')
181
+ middle_node.should be_a(Nokogiri::XML::Node)
182
+ middle_node.attr('Name').should == 'Middle'
183
+ middle_node.inner_html.should == ''
190
184
  end
191
185
  end #get_field_node
192
186
 
@@ -191,10 +191,10 @@ describe Cherby::Cherwell do
191
191
  before(:each) do
192
192
  @public_id = '62521'
193
193
  @incident_data = {
194
- :incident_id => @public_id,
195
- :service => 'Consulting Services',
196
- :sub_category => 'New/Modified Functionality',
197
- :priority => '4',
194
+ 'IncidentID' => @public_id,
195
+ 'Service' => 'Consulting Services',
196
+ 'SubCategory' => 'New/Modified Functionality',
197
+ 'Priority' => '4',
198
198
  }
199
199
  @incident = Cherby::Incident.create(@incident_data)
200
200
  @cherwell.stub(:last_error => nil)
@@ -218,8 +218,8 @@ describe Cherby::Cherwell do
218
218
  before(:each) do
219
219
  @public_id = '90210'
220
220
  @task_data = {
221
- :task_id => @public_id,
222
- :parent_id => '90000'
221
+ 'TaskID' => @public_id,
222
+ 'ParentID' => '90000'
223
223
  }
224
224
  @task = Cherby::Task.create(@task_data)
225
225
  @cherwell.stub(:last_error => nil)
@@ -242,9 +242,9 @@ describe Cherby::Cherwell do
242
242
  describe "#create_incident" do
243
243
  before(:each) do
244
244
  @incident_data = {
245
- :service => 'Consulting Services',
246
- :sub_category => 'New/Modified Functionality',
247
- :priority => '4',
245
+ 'Service' => 'Consulting Services',
246
+ 'SubCategory' => 'New/Modified Functionality',
247
+ 'Priority' => '4',
248
248
  }
249
249
  @public_id = '54321'
250
250
  end
@@ -296,5 +296,31 @@ describe Cherby::Cherwell do
296
296
  end
297
297
  end #last_error
298
298
 
299
+ describe "#get_object_definition" do
300
+ it "returns a hash of field names" do
301
+ @definition_xml = %Q{
302
+ <Trebuchet>
303
+ <BusinessObjectDef Name="Incident">
304
+ <Alias/>
305
+ <FieldList>
306
+ <Field Name="RecID"><Description>Unique identifier</Description></Field>
307
+ <Field Name="First"><Description>First Name</Description></Field>
308
+ <Field Name="Last"><Description>Last Name</Description></Field>
309
+ </FieldList>
310
+ </BusinessObjectDef>
311
+ </Trebuchet>
312
+ }
313
+ savon.expects(:get_business_object_definition).
314
+ with(:message => {:nameOrId => 'Incident'}).
315
+ returns(
316
+ savon_response('GetBusinessObjectDefinition', @definition_xml)
317
+ )
318
+ @cherwell.get_object_definition('Incident').should == {
319
+ 'First' => 'First Name',
320
+ 'Last' => 'Last Name',
321
+ 'RecID' => 'Unique identifier'
322
+ }
323
+ end
324
+ end #get_object_definition
299
325
  end # describe Cherby::Cherwell
300
326
 
@@ -80,7 +80,7 @@ module Cherby
80
80
  describe "#add_journal_note" do
81
81
  it "adds a JournalNote" do
82
82
  journal_note = JournalNote.create({
83
- :details => 'New note on incident',
83
+ 'Details' => 'New note on incident',
84
84
  })
85
85
  @incident.add_journal_note(journal_note)
86
86
  last_journal_note = @incident.journal_notes.last
@@ -63,8 +63,8 @@ module Cherby
63
63
  it "adds a note to the Task" do
64
64
  task = Task.new(@task_xml)
65
65
  journal_note = JournalNote.create({
66
- :details => 'New note on task',
67
- :last_mod_date_time => DateTime.now,
66
+ 'Details' => 'New note on task',
67
+ 'LastModDateTime' => DateTime.now,
68
68
  })
69
69
  task.add_journal_note(journal_note)
70
70
  task['CompletionDetails'].should =~ /New note on task/
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cherby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-03-21 00:00:00.000000000 Z
12
+ date: 2014-03-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httpclient
@@ -211,12 +211,6 @@ files:
211
211
  - lib/cherby/incident.rb
212
212
  - lib/cherby/journal_note.rb
213
213
  - lib/cherby/task.rb
214
- - lib/cherby/templates/incident.mustache
215
- - lib/cherby/templates/journal_note.mustache
216
- - lib/cherby/templates/journal_note_relationship.mustache
217
- - lib/cherby/templates/task.mustache
218
- - lib/cherby/templates/task_relationship.mustache
219
- - lib/cherby/templates/test/simple.mustache
220
214
  - spec/business_object_spec.rb
221
215
  - spec/cherwell_spec.rb
222
216
  - spec/client_spec.rb
@@ -1,226 +0,0 @@
1
- <?xml version="1.0"?>
2
- <BusinessObject Name="Incident" RecID="{{incident_id}}">
3
- <FieldList>
4
- <!-- Fields common to all BusinessObjects -->
5
- <Field Name="RecID">{{rec_id}}</Field>
6
- <Field Name="CreatedDateTime">{{created_date_time}}</Field>
7
- <Field Name="CreatedBy">{{created_by}}</Field>
8
- <Field Name="CreatedByID"></Field>
9
- <Field Name="LastModDateTime">{{last_mod_date_time}}</Field>
10
- <Field Name="LastModBy">{{last_mod_by}}</Field>
11
- <Field Name="LastModByID"></Field>
12
- <Field Name="OwnedBy">{{owned_by}}</Field>
13
- <Field Name="OwnedByTeam">{{owned_by_team}}</Field>
14
- <Field Name="OwnerID"></Field>
15
- <Field Name="OwnerTeamID"></Field>
16
-
17
- <!-- Unused fields? -->
18
- <Field Name="LastModTimeStamp"/>
19
-
20
- <Field Name="IncidentID">{{incident_id}}</Field>
21
- <Field Name="Status">{{status}}</Field>
22
- <Field Name="StatusDesc"/>
23
- <Field Name="Service">{{service}}</Field>
24
- <Field Name="Category">{{category}}</Field>
25
- <Field Name="SubCategory">{{sub_category}}</Field>
26
- <Field Name="SpecificsTypeId"/>
27
- <Field Name="Description">{{description}}</Field>
28
- <Field Name="Impact">{{impact}}</Field>
29
- <Field Name="Urgency">{{urgency}}</Field>
30
- <Field Name="Priority">{{priority}}</Field>
31
- <Field Name="ClosedDateTime"/>
32
- <Field Name="ClosedBy"/>
33
- <Field Name="ClosedByID"/>
34
- <Field Name="CauseCode"/>
35
- <Field Name="IsPrivate">FALSE</Field>
36
- <Field Name="Cost">0</Field>
37
- <Field Name="CustomerTypeID">{{customer_type_id}}</Field>
38
- <Field Name="CustomerRecID">{{customer_rec_id}}</Field>
39
- <Field Name="CloseDescription"/>
40
- <Field Name="LinkedProblem"/>
41
- <Field Name="ConfigItemTypeID"/>
42
- <Field Name="ConfigItemRecID"/>
43
- <Field Name="IncidentDurationInDays">0.00</Field>
44
- <Field Name="IncidentType">Service Request</Field>
45
- <Field Name="RespondBy"/>
46
- <Field Name="SLAID">93aec497070aea63541fae4004988811547a5a70b9</Field>
47
- <Field Name="SLAName">Technology Services</Field>
48
- <Field Name="ResolveBy"/>
49
- <Field Name="ClosedOn1stCall">FALSE</Field>
50
- <Field Name="CallSource">e-mail</Field>
51
- <Field Name="Detail"/>
52
- <Field Name="ChangeID"/>
53
- <Field Name="MultipleConfig">FALSE</Field>
54
- <Field Name="OwnedByEmail"/>
55
- <Field Name="IncidentDurationInHours">0</Field>
56
- <Field Name="CustomerDisplayName">{{created_by}}</Field>
57
- <Field Name="EMailTemplate"/>
58
- <Field Name="OwnedByManager"/>
59
- <Field Name="OwnedByManagerEmail"/>
60
- <Field Name="CreatedByEmail">{{created_by_email}}</Field>
61
- <Field Name="InitialITContact">{{created_by}}</Field>
62
- <Field Name="InitialITContactEmail">{{created_by_email}}</Field>
63
- <Field Name="PendingReason"/>
64
- <Field Name="ReviewByDate"/>
65
- <Field Name="ProjectCode"/>
66
- <Field Name="Task"/>
67
- <Field Name="PhaseRecordStatus">Complete</Field>
68
- <Field Name="PhaseClassifyStatus">Complete</Field>
69
- <Field Name="PhaseInvestigateStatus">In Progress</Field>
70
- <Field Name="PhaseRFWStatus">Not Required</Field>
71
- <Field Name="PhaseResolveStatus">Required</Field>
72
- <Field Name="PhaseCloseStatus">Required</Field>
73
- <Field Name="PhaseApprovalsStatus">Not Required</Field>
74
- <Field Name="WrkflwCurrentPhase"/>
75
- <Field Name="OutsourcedService">FALSE</Field>
76
- <Field Name="OutsourcedVendorID"/>
77
- <Field Name="OutsourcedVendorName"/>
78
- <Field Name="Stat_NumberOfTouches">2</Field>
79
- <Field Name="Stat_FirstCallResolution">TRUE</Field>
80
- <Field Name="Stat_IncidentEscalated">FALSE</Field>
81
- <Field Name="Stat_NumberOfEscalations">0</Field>
82
- <Field Name="Stat_24x7ElapsedTime">0</Field>
83
- <Field Name="Stat_IncidentReopened">FALSE</Field>
84
- <Field Name="Stat_DateTimeResponded">0001-01-01T00:00:00</Field>
85
- <Field Name="Stat_ResponseTime">0</Field>
86
- <Field Name="Stat_SLAResponseBreached">FALSE</Field>
87
- <Field Name="Stat_SLAResolutionBreached">FALSE</Field>
88
- <Field Name="Stat_TotalDLHOfIncident">0</Field>
89
- <Field Name="Test_embeddedFormPicker"/>
90
- <Field Name="LastModByEmail">{{last_mod_by_email}}</Field>
91
- <Field Name="Temp_reopen">FALSE</Field>
92
- <Field Name="Temp_pending">FALSE</Field>
93
- <Field Name="Temp_open">FALSE</Field>
94
- <Field Name="Temp_status_set">FALSE</Field>
95
- <Field Name="Temp_Active">FALSE</Field>
96
- <Field Name="Temp_Accepted">FALSE</Field>
97
- <Field Name="Temp_Resolved">FALSE</Field>
98
- <Field Name="Temp_Assigned">FALSE</Field>
99
- <Field Name="ServiceID">8D71BF81-EBA3-4152-BF34-DDF4931D0A0D</Field>
100
- <Field Name="PendingPreviousStatus"/>
101
- <Field Name="SelfServiceUrgent"/>
102
- <Field Name="SelfServiceMultipleUsers"/>
103
- <Field Name="SelfServiceAltContactInfo"/>
104
- <Field Name="SelfServiceContactInfoCorrect">FALSE</Field>
105
- <Field Name="MatchingText">SHRM Store Conference Setup</Field>
106
- <Field Name="Notes"/>
107
- <Field Name="NoteEntry"/>
108
- <Field Name="AutomateAvailable">FALSE</Field>
109
- <Field Name="SLAIDForCustomer"/>
110
- <Field Name="SLAIDForService">93aec497070aea63541fae4004988811547a5a70b9</Field>
111
- <Field Name="SLAIDForCI"/>
112
- <Field Name="LinkedSLAs"> , 93aec497070aea63541fae4004988811547a5a70b9 , </Field>
113
- <Field Name="SLANameForCI"/>
114
- <Field Name="SLANameForCustomer"/>
115
- <Field Name="SLANameForService">Technology Services</Field>
116
- <Field Name="TEMP_showSLAStuff">FALSE</Field>
117
- <Field Name="VendorName"/>
118
- <Field Name="VendorID"/>
119
- <Field Name="ReasonForResolveByBreach"/>
120
- <Field Name="ConfigItemDisplayName"/>
121
- <Field Name="CICritical">FALSE</Field>
122
- <Field Name="ResolveByBreachNotes"/>
123
- <Field Name="OneStepPicker"/>
124
- <Field Name="ShowAllServices">FALSE</Field>
125
- <Field Name="ShowContactInformation">FALSE</Field>
126
- <Field Name="ServiceEntitlements"/>
127
- <Field Name="ServiceCustomerIsEntitled">FALSE</Field>
128
- <Field Name="ServiceGroup">{{service_group}}</Field>
129
- <Field Name="Environment">PRD</Field>
130
- <Field Name="Temp_EscalationTeam">Network and Systems Operations</Field>
131
- <Field Name="PriorityGroup">Less Critical</Field>
132
- <Field Name="BlockID"/>
133
- <Field Name="ApprovalRequired">No</Field>
134
- <Field Name="Approved">FALSE</Field>
135
- <Field Name="OwnedByNonCherwellUser">FALSE</Field>
136
- <Field Name="Temp_SurveyCreated">FALSE</Field>
137
- <Field Name="RespondByWarning">2011-10-24T08:12:00</Field>
138
- <Field Name="ResolveByWarning">2011-10-27T13:11:52</Field>
139
- <Field Name="Stat_SLAResolutionBreachedWarning">FALSE</Field>
140
- <Field Name="Stat_SLAResponseBreachedWarning">FALSE</Field>
141
- <Field Name="ReasonForRespondByBreach"/>
142
- <Field Name="RespondByBreachNotes"/>
143
- <Field Name="HRAuthorized">FALSE</Field>
144
- <Field Name="CMDBUpdate"/>
145
- <Field Name="ServiceOutageStart">0001-01-01T00:00:00</Field>
146
- <Field Name="ServiceOutageEnd">0001-01-01T00:00:00</Field>
147
- <Field Name="Temp_ServiceGroup">{{service_group}}</Field>
148
- <Field Name="ClosureCode"/>
149
- <Field Name="Temp_responded"/>
150
- <Field Name="TasksExist">FALSE</Field>
151
- <Field Name="ResolvedDate">0001-01-01T00:00:00</Field>
152
- <Field Name="CustomerDept">Strategy and Architecture</Field>
153
- <Field Name="Temp_DefaultTeam">Service Desk</Field>
154
- <Field Name="SubcategoryNonHR">{{sub_category_non_hr}}</Field>
155
- <Field Name="ParatureTicketID"/>
156
- <Field Name="CustomerEmail">{{customer_email}}</Field>
157
- <Field Name="JIRAID">{{jira_id}}</Field>
158
- </FieldList>
159
- <RelationshipList>
160
- <!--
161
- <Relationship Name="IncidentLinkedToCustomer" TargetObjectName="Customer" Type="Linked">
162
- <BusinessObject Name="ADCustomers">Yudkovsky, Sergey</BusinessObject>
163
- </Relationship>
164
-
165
- <Relationship Name="IncidentLinkedToCustomer" TargetObjectID="9337c2311b8e8044aa3e2a48c4a95a9f5555815126" TargetObjectName="Customer" Type="Linked">
166
- <BusinessObject Name="ADCustomers" RecID="93bddda849f81c4ad9ed8d4e158523372c31f24072">Moelk, Brian</BusinessObject>
167
- </Relationship>
168
-
169
- <Relationship Name="Incident Links SLA" TargetObjectID="933c73c2163058a1ca063b4a879ae21e1e5133f57c" TargetObjectName="SLA" Type="Linked">
170
- <BusinessObject Name="SLA" RecID="93aec497070aea63541fae4004988811547a5a70b9">Technology Services</BusinessObject>
171
- </Relationship>
172
-
173
- <Relationship Name="Incident Has Tasks" TargetObjectID="9355d5ed41e384ff345b014b6cb1c6e748594aea5b" TargetObjectName="Task" Type="Owns">
174
- <BusinessObject Name="Task" RecID="93be05329e0fcf411b5e574030a626b90bd297469f"></BusinessObject>
175
- </Relationship>
176
-
177
- <Relationship Name="Incident has Service" TargetObjectID="9366b3bb9e94d86b5d5f434ff3b657c4ec5bfa3bb3" TargetObjectName="Service" Type="Linked">
178
- <BusinessObject Name="Service" RecID="8D71BF81-EBA3-4152-BF34-DDF4931D0A0D">SHRM Store</BusinessObject>
179
- </Relationship>
180
-
181
- <Relationship Name="Incident has Service SLA" TargetObjectID="933c73c2163058a1ca063b4a879ae21e1e5133f57c" TargetObjectName="SLA" Type="Linked">
182
- <BusinessObject Name="SLA" RecID="93aec497070aea63541fae4004988811547a5a70b9">Technology Services</BusinessObject>
183
- </Relationship>
184
-
185
- <Relationship Name="Incident Links Service Group" TargetObjectID="93ae4fd3af6355802e542349ebafd6deab1dca3cfb" TargetObjectName="ServiceGroup" Type="Linked">
186
- <BusinessObject Name="ServiceGroup" RecID="93ae5021c82196035ca3374845956ce9a66eeb08cc">Technology Services</BusinessObject>
187
- </Relationship>
188
- -->
189
-
190
- <!-- Include this only if there's a related object to link to
191
- <Relationship Name="Incident related to other similar incidents" TargetObjectID="6dd53665c0c24cab86870a21cf6434ae" TargetObjectName="Incident" Type="Linked">
192
- <BusinessObject Name="Incident" RecID="{{parent_id}}">{{parent_id}}</BusinessObject>
193
- </Relationship>
194
- -->
195
-
196
- <!-- This chunk including WebsiteForm is required when using Service = "Websites (SHRM)".
197
- Unfortunately, it seems to require that the WebsiteForm object be created first.
198
- -->
199
- <!--
200
- <Relationship Name="IncidentHasSpecifics" TargetObjectID="" TargetObjectName="Specifics" Type="Owns">
201
- <BusinessObject Name="WebsiteForm" RecID="">
202
- <FieldList>
203
- <Field Name="RecID"></Field>
204
- <Field Name="CreatedDateTime">{{now}}</Field>
205
- <Field Name="CreatedBy">Yudkovsky, Sergey</Field>
206
- <Field Name="CreatedByID">93b10b33b94d800e69d2294942a6fc764cbfa82940</Field>
207
- <Field Name="SpecificTypeID"></Field>
208
- <Field Name="SpecificTypeName">Website Form</Field>
209
- <Field Name="ParentId">{{parent_id}}</Field>
210
- <Field Name="LastModDateTime">{{now}}</Field>
211
- <Field Name="LastModBy">Yudkovsky, Sergey</Field>
212
- <Field Name="LastModByID">93b10b33b94d800e69d2294942a6fc764cbfa82940</Field>
213
- <Field Name="ADCustomersID"/>
214
- <Field Name="NeedByDate">0001-01-01T00:00:00</Field>
215
- <Field Name="URLInfo">jira.shrm.org</Field>
216
- <Field Name="EstimatedTime"/>
217
- <Field Name="SprintTime"/>
218
- </FieldList>
219
- </BusinessObject>
220
- </Relationship>
221
- -->
222
-
223
- </RelationshipList>
224
- </BusinessObject>
225
-
226
-
@@ -1,30 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <BusinessObject Name="JournalNote" RecID="{{rec_id}}">
3
- <FieldList>
4
- <!-- Fields common to all BusinessObjects -->
5
- <Field Name="RecID">{{rec_id}}</Field>
6
- <Field Name="CreatedDateTime">{{created_date_time}}</Field>
7
- <Field Name="CreatedBy">{{created_by}}</Field>
8
- <Field Name="CreatedByID"></Field>
9
- <Field Name="LastModDateTime">{{last_mod_date_time}}</Field>
10
- <Field Name="LastModBy">{{last_mod_by}}</Field>
11
- <Field Name="LastModByID"></Field>
12
- <Field Name="OwnedBy">{{owned_by}}</Field>
13
- <Field Name="OwnedByTeam">{{owned_by_team}}</Field>
14
- <Field Name="OwnerID"></Field>
15
- <Field Name="OwnerTeamID"></Field>
16
- <!-- Unused fields? -->
17
- <Field Name="LastModTimeStamp"/>
18
-
19
- <Field Name="JournalTypeID">{{journal_type_id}}</Field>
20
- <Field Name="JournalTypeName">Note</Field>
21
- <Field Name="ParentTypeID">{{parent_type_id}}</Field>
22
- <Field Name="ParentRecordID">{{parent_record_id}}</Field>
23
- <Field Name="Details">{{details}}</Field>
24
- <Field Name="Priority">Normal</Field>
25
- <Field Name="ShowInSelfService">TRUE</Field>
26
- <Field Name="QuickJournal"/>
27
- <Field Name="IncomingEmail">FALSE</Field>
28
- </FieldList>
29
- </BusinessObject>
30
-
@@ -1,3 +0,0 @@
1
- <Relationship Name="Incident has Notes" TargetObjectID="{{target_object_id}}" TargetObjectName="JournalNote" Type="Owns">
2
- {{{note_business_object}}}
3
- </Relationship>
@@ -1,67 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <BusinessObject Name="Task" RecID="{{rec_id}}">
3
- <FieldList>
4
- <!-- Fields common to all BusinessObjects -->
5
- <Field Name="RecID">{{rec_id}}</Field>
6
- <Field Name="CreatedDateTime">{{created_date_time}}</Field>
7
- <Field Name="CreatedBy">{{created_by}}</Field>
8
- <Field Name="CreatedByID"></Field>
9
- <Field Name="LastModDateTime">{{last_mod_date_time}}</Field>
10
- <Field Name="LastModBy">{{last_mod_by}}</Field>
11
- <Field Name="LastModByID"></Field>
12
- <Field Name="OwnedBy">{{owned_by}}</Field>
13
- <Field Name="OwnedByTeam">{{owned_by_team}}</Field>
14
- <Field Name="OwnerID"></Field>
15
- <Field Name="OwnerTeamID"></Field>
16
- <!-- Unused fields? -->
17
- <Field Name="LastModTimeStamp"/>
18
-
19
- <Field Name="TaskType">Action</Field>
20
- <Field Name="TaskDescription">{{task_description}}</Field>
21
- <Field Name="StartDateTime">{{start_date_time}}</Field>
22
- <Field Name="ParentID">{{parent_id}}</Field>
23
- <Field Name="ParentTypeID">{{parent_type_id}}</Field>
24
- <Field Name="AssignedToID"></Field>
25
- <Field Name="AssignedTo"></Field>
26
- <Field Name="AssignedToTeamID"></Field>
27
- <Field Name="AssignedToTeam"></Field>
28
- <Field Name="Notes">{{notes}}</Field>
29
- <Field Name="AcknowledgedByID"></Field>
30
- <Field Name="AcknowledgedBy"></Field>
31
- <Field Name="AcknowledgedDateTime">0001-01-01T00:00:00</Field>
32
- <Field Name="AcknowledgedComment"></Field>
33
- <Field Name="ResolvedByID"></Field>
34
- <Field Name="ResolvedBy"></Field>
35
- <Field Name="ResolvedDateTime">0001-01-01T00:00:00</Field>
36
- <Field Name="ResolutionCode">{{resolution_code}}</Field>
37
- <Field Name="CompletionDetails">{{completion_details}}</Field>
38
- <Field Name="TaskDurationInHours">0.00</Field>
39
- <Field Name="Status">{{status}}</Field>
40
- <Field Name="Availabiltiy"></Field>
41
- <Field Name="Email"></Field>
42
- <Field Name="Phone"></Field>
43
- <Field Name="CellPhone"></Field>
44
- <Field Name="LimitAssigneeByTeam"></Field>
45
- <Field Name="ParentTypeName">Incident</Field>
46
- <Field Name="ParentPublicID">{{parent_public_id}}</Field>
47
- <Field Name="TaskOrder">0.00</Field>
48
- <Field Name="ParentActivity"></Field>
49
- <Field Name="ActivityOrder">0</Field>
50
- <Field Name="ParentActivityOrder">0</Field>
51
- <Field Name="DependsOnName"></Field>
52
- <Field Name="DependsOnID"></Field>
53
- <Field Name="TaskActive">TRUE</Field>
54
- <Field Name="DependsOnStatus"></Field>
55
- <Field Name="Name"></Field>
56
- <Field Name="EndDateTime">{{end_date_time}}</Field>
57
- <Field Name="Location"></Field>
58
- <Field Name="OwnedByNonCherwellUser">FALSE</Field>
59
- <Field Name="TaskID">{{task_id}}</Field>
60
- <Field Name="OwnedByEmail">{{owned_by_email}}</Field>
61
- <Field Name="TeamNotified">FALSE</Field>
62
- <Field Name="ActiveBy"></Field>
63
- <Field Name="ActiveByID"></Field>
64
- <Field Name="ActiveDateTime">0001-01-01T00:00:00</Field>
65
- <Field Name="CreatedByCustomer">FALSE</Field>
66
- </FieldList>
67
- </BusinessObject>
@@ -1,3 +0,0 @@
1
- <Relationship Name="Incident Has Tasks" TargetObjectName="Task" Type="Owns">
2
- {{{task_business_object}}}
3
- </Relationship>
@@ -1,8 +0,0 @@
1
- <?xml version="1.0"?>
2
- <BusinessObject Name="MySubclass">
3
- <FieldList>
4
- <Field Name="First">{{first_name}}</Field>
5
- <Field Name="Last">{{last_name}}</Field>
6
- <Field Name="LastModDateTime">{{last_mod_date_time}}</Field>
7
- </FieldList>
8
- </BusinessObject>