Note: Soap examples seem to have changed with the addition of a version number, so you must be careful about what example you use, and generally rely on the source to be the definitive source ;-)
* soap/SoapPortalUsers.php
* soap/SoapSugarUsers.php
* soap/SoapData.php
* soap/SoapDeprecated.php
Getting on with the soap service, it is easy to discover the service profile and import the data
From the [http://freephile.com/crm/soap.php|soap.php] page (which shows the WSDL), we can get a definition of the available SOAP calls. For example, here is the definition of the 'create_account' method
<pre>
// output:
array (
'modules' =>
array (
0 => 'Home',
1 => 'Dashboard',
2 => 'Calendar',
3 => 'Activities',
4 => 'Emails',
5 => 'Documents',
6 => 'Contacts',
7 => 'Accounts',
8 => 'Campaigns',
9 => 'Leads',
10 => 'Opportunities',
11 => 'Project',
12 => 'Cases',
13 => 'Bugs',
14 => 'iFrames',
15 => 'Feeds',
16 => 'Administration',
17 => 'Currencies',
18 => 'CustomFields',
19 => 'Dropdown',
20 => 'Dynamic',
21 => 'DynamicFields',
22 => 'DynamicLayout',
23 => 'EditCustomFields',
24 => 'EmailTemplates',
25 => 'Help',
26 => 'Import',
27 => 'MySettings',
28 => 'FieldsMetaData',
29 => 'UpgradeWizard',
30 => 'Releases',
31 => 'Sync',
32 => 'Users',
33 => 'Versions',
34 => 'EmailMan',
35 => 'ProjectTask',
36 => 'TargetLists',
37 => 'Targets',
38 => 'Prospects',
39 => 'ProspectLists',
40 => 'Employees',
41 => 'LabelEditor',
42 => 'Roles',
43 => 'EmailMarketing',
44 => 'OptimisticLock',
45 => 'TeamMemberships',
46 => 'Audit',
47 => 'MailMerge',
48 => 'MergeRecords',
49 => 'EmailAddresses',
50 => 'Schedulers',
51 => 'Schedulers_jobs',
52 => 'InboundEmail',
53 => 'CampaignLog',
54 => 'Groups',
55 => 'ACLActions',
56 => 'ACLRoles',
57 => 'CampaignTrackers',
58 => 'DocumentRevisions',
59 => 'ACL',
60 => 'Configurator',
61 => 'UserPreferences',
62 => 'SavedSearch',
63 => 'Studio',
64 => 'Calls',
65 => 'Meetings',
66 => 'Notes',
67 => 'Tasks',
),
'error' =>
array (
'number' => '0',
'name' => 'No Error',
'description' => 'No Error',
),
)
</source>
See [[Importing_contacts/sugar_modules]]
<source lang="php">
===Accounts fields: ===
See [[Importing_contacts/Accounts]]
<source lang="php">
array (
'module_name' => 'Accounts',
'module_fields' =>
array (
0 =>
array (
'name' => 'id',
'type' => 'id',
'label' => 'ID',
'required' => 0,
'options' =>
array (
),
),
1 =>
array (
'name' => 'name',
'type' => 'name',
'label' => 'Name:',
'required' => 1,
'options' =>
array (
),
),
2 =>
array (
'name' => 'date_entered',
'type' => 'datetime',
'label' => 'Date Entered:',
'required' => 0,
'options' =>
array (
),
),
3 =>
array (
'name' => 'date_modified',
'type' => 'datetime',
'label' => 'Date Modified:',
'required' => 0,
'options' =>
array (
),
),
4 =>
array (
'name' => 'modified_user_id',
'type' => 'assigned_user_name',
'label' => 'Modified By Id',
'required' => 0,
'options' =>
array (
),
),
5 =>
array (
'name' => 'modified_by_name',
'type' => 'assigned_user_name',
'label' => 'Modified By Id',
'required' => 0,
'options' =>
array (
),
),
6 =>
array (
'name' => 'created_by',
'type' => 'assigned_user_name',
'label' => 'Created By Id',
'required' => 0,
'options' =>
array (
),
),
7 =>
array (
'name' => 'created_by_name',
'type' => 'assigned_user_name',
'label' => 'Created By Id',
'required' => 0,
'options' =>
array (
),
),
8 =>
array (
'name' => 'description',
'type' => 'text',
'label' => 'Description:',
'required' => 0,
'options' =>
array (
),
),
9 =>
array (
'name' => 'deleted',
'type' => 'bool',
'label' => 'Deleted',
'required' => 0,
'options' =>
array (
),
),
10 =>
array (
'name' => 'assigned_user_id',
'type' => 'relate',
'label' => 'Assigned User:',
'required' => 0,
'options' =>
array (
),
),
11 =>
array (
'name' => 'assigned_user_name',
'type' => 'relate',
'label' => 'Assigned to:',
'required' => 0,
'options' =>
array (
),
),
12 =>
array (
'name' => 'account_type',
'type' => 'enum',
'label' => 'Type:',
'required' => 0,
'options' =>
array (
0 =>
array (
'name' => '',
'value' => '',
),
1 =>
array (
'name' => 'Analyst',
'value' => 'Analyst',
),
2 =>
array (
'name' => 'Competitor',
'value' => 'Competitor',
),
3 =>
array (
'name' => 'Customer',
'value' => 'Customer',
),
4 =>
array (
'name' => 'Integrator',
'value' => 'Integrator',
),
5 =>
array (
'name' => 'Investor',
'value' => 'Investor',
),
6 =>
array (
'name' => 'Partner',
'value' => 'Partner',
),
7 =>
array (
'name' => 'Press',
'value' => 'Press',
),
8 =>
array (
'name' => 'Prospect',
'value' => 'Prospect',
),
9 =>
array (
'name' => 'Reseller',
'value' => 'Reseller',
),
10 =>
array (
'name' => 'Other',
'value' => 'Other',
),
),
),
13 =>
array (
'name' => 'industry',
'type' => 'enum',
'label' => 'Industry:',
'required' => 0,
'options' =>
array (
0 =>
array (
'name' => '',
'value' => '',
),
1 =>
array (
'name' => 'Apparel',
'value' => 'Apparel',
),
2 =>
array (
'name' => 'Banking',
'value' => 'Banking',
),
3 =>
array (
'name' => 'Biotechnology',
'value' => 'Biotechnology',
),
4 =>
array (
'name' => 'Chemicals',
'value' => 'Chemicals',
),
5 =>
array (
'name' => 'Communications',
'value' => 'Communications',
),
6 =>
array (
'name' => 'Construction',
'value' => 'Construction',
),
7 =>
array (
'name' => 'Consulting',
'value' => 'Consulting',
),
8 =>
array (
'name' => 'Education',
'value' => 'Education',
),
9 =>
array (
'name' => 'Electronics',
'value' => 'Electronics',
),
10 =>
array (
'name' => 'Energy',
'value' => 'Energy',
),
11 =>
array (
'name' => 'Engineering',
'value' => 'Engineering',
),
12 =>
array (
'name' => 'Entertainment',
'value' => 'Entertainment',
),
13 =>
array (
'name' => 'Environmental',
'value' => 'Environmental',
),
14 =>
array (
'name' => 'Finance',
'value' => 'Finance',
),
15 =>
array (
'name' => 'Government',
'value' => 'Government',
),
16 =>
array (
'name' => 'Healthcare',
'value' => 'Healthcare',
),
17 =>
array (
'name' => 'Hospitality',
'value' => 'Hospitality',
),
18 =>
array (
'name' => 'Insurance',
'value' => 'Insurance',
),
19 =>
array (
'name' => 'Machinery',
'value' => 'Machinery',
),
20 =>
array (
'name' => 'Manufacturing',
'value' => 'Manufacturing',
),
21 =>
array (
'name' => 'Media',
'value' => 'Media',
),
22 =>
array (
'name' => 'Not For Profit',
'value' => 'Not For Profit',
),
23 =>
array (
'name' => 'Recreation',
'value' => 'Recreation',
),
24 =>
array (
'name' => 'Retail',
'value' => 'Retail',
),
25 =>
array (
'name' => 'Shipping',
'value' => 'Shipping',
),
26 =>
array (
'name' => 'Technology',
'value' => 'Technology',
),
27 =>
array (
'name' => 'Telecommunications',
'value' => 'Telecommunications',
),
28 =>
array (
'name' => 'Transportation',
'value' => 'Transportation',
),
29 =>
array (
'name' => 'Utilities',
'value' => 'Utilities',
),
30 =>
array (
'name' => 'Other',
'value' => 'Other',
),
),
),
14 =>
array (
'name' => 'annual_revenue',
'type' => 'varchar',
'label' => 'Annual Revenue:',
'required' => 0,
'options' =>
array (
),
),
15 =>
array (
'name' => 'phone_fax',
'type' => 'phone',
'label' => 'Fax:',
'required' => 0,
'options' =>
array (
),
),
16 =>
array (
'name' => 'billing_address_street',
'type' => 'varchar',
'label' => 'Billing Street:',
'required' => 0,
'options' =>
array (
),
),
17 =>
array (
'name' => 'billing_address_city',
'type' => 'varchar',
'label' => 'Billing City:',
'required' => 0,
'options' =>
array (
),
),
18 =>
array (
'name' => 'billing_address_state',
'type' => 'varchar',
'label' => 'Billing State:',
'required' => 0,
'options' =>
array (
),
),
19 =>
array (
'name' => 'billing_address_postalcode',
'type' => 'varchar',
'label' => 'Billing Postal Code:',
'required' => 0,
'options' =>
array (
),
),
20 =>
array (
'name' => 'billing_address_country',
'type' => 'varchar',
'label' => 'Billing Country:',
'required' => 0,
'options' =>
array (
),
),
21 =>
array (
'name' => 'rating',
'type' => 'varchar',
'label' => 'Rating:',
'required' => 0,
'options' =>
array (
),
),
22 =>
array (
'name' => 'phone_office',
'type' => 'phone',
'label' => 'Phone Office:',
'required' => 0,
'options' =>
array (
),
),
23 =>
array (
'name' => 'phone_alternate',
'type' => 'phone',
'label' => 'Alternate Phone:',
'required' => 0,
'options' =>
array (
),
),
24 =>
array (
'name' => 'website',
'type' => 'varchar',
'label' => 'Website:',
'required' => 0,
'options' =>
array (
),
),
25 =>
array (
'name' => 'ownership',
'type' => 'varchar',
'label' => 'Ownership:',
'required' => 0,
'options' =>
array (
),
),
26 =>
array (
'name' => 'employees',
'type' => 'num',
'label' => 'Employees:',
'required' => 0,
'options' =>
array (
),
),
27 =>
array (
'name' => 'ticker_symbol',
'type' => 'varchar',
'label' => 'Ticker Symbol:',
'required' => 0,
'options' =>
array (
),
),
28 =>
array (
'name' => 'shipping_address_street',
'type' => 'varchar',
'label' => 'Shipping Street:',
'required' => 0,
'options' =>
array (
),
),
29 =>
array (
'name' => 'shipping_address_city',
'type' => 'varchar',
'label' => 'Shipping City:',
'required' => 0,
'options' =>
array (
),
),
30 =>
array (
'name' => 'shipping_address_state',
'type' => 'varchar',
'label' => 'Shipping State:',
'required' => 0,
'options' =>
array (
),
),
31 =>
array (
'name' => 'shipping_address_postalcode',
'type' => 'varchar',
'label' => 'Shipping Postal Code:',
'required' => 0,
'options' =>
array (
),
),
32 =>
array (
'name' => 'shipping_address_country',
'type' => 'varchar',
'label' => 'Shipping Country:',
'required' => 0,
'options' =>
array (
),
),
33 =>
array (
'name' => 'email1',
'type' => 'varchar',
'label' => 'Email:',
'required' => 0,
'options' =>
array (
),
),
34 =>
array (
'name' => 'parent_id',
'type' => 'id',
'label' => 'Parent Account ID',
'required' => 0,
'options' =>
array (
),
),
35 =>
array (
'name' => 'sic_code',
'type' => 'varchar',
'label' => 'SIC Code:',
'required' => 0,
'options' =>
array (
),
),
36 =>
array (
'name' => 'account_name',
'type' => 'relate',
'label' => 'Account Name:',
'required' => 0,
'options' =>
array (
),
),
37 =>
array (
'name' => 'parent_name',
'type' => 'relate',
'label' => 'Member of:',
'required' => 0,
'options' =>
array (
),
),
38 =>
array (
'name' => 'campaign_id',
'type' => 'id',
'label' => 'Campaign ID',
'required' => 0,
'options' =>
array (
),
),
),
'error' => '',
)
</source>
=== Contacts fields: ===
<source lang="php">array ( 'module_name' => 'See [[Importing_contacts/Contacts', 'module_fields' => array ( 0 => array ( 'name' => 'id', 'type' => 'id', 'label' => 'ID:', 'required' => 0, 'options' => array ( ), ), 1 => array ( 'name' => 'date_entered', 'type' => 'datetime', 'label' => 'Date Created', 'required' => 0, 'options' => array ( ), ), 2 => array ( 'name' => 'date_modified', 'type' => 'datetime', 'label' => 'Date Modified:', 'required' => 0, 'options' => array ( ), ), 3 => array ( 'name' => 'modified_user_id', 'type' => 'assigned_user_name', 'label' => 'Modified By Id', 'required' => 0, 'options' => array ( ), ), 4 => array ( 'name' => 'modified_by_name', 'type' => 'assigned_user_name', 'label' => 'Modified By Id', 'required' => 0, 'options' => array ( ), ), 5 => array ( 'name' => 'created_by', 'type' => 'assigned_user_name', 'label' => 'Created By Id', 'required' => 0, 'options' => array ( ), ), 6 => array ( 'name' => 'created_by_name', 'type' => 'assigned_user_name', 'label' => 'Created By Id', 'required' => 0, 'options' => array ( ), ), 7 => array ( 'name' => 'description', 'type' => 'text', 'label' => 'Description:', 'required' => 0, 'options' => array ( ), ), 8 => array ( 'name' => 'deleted', 'type' => 'bool', 'label' => 'Deleted', 'required' => 0, 'options' => array ( ), ), 9 => array ( 'name' => 'assigned_user_id', 'type' => 'relate', 'label' => 'Assigned User', 'required' => 0, 'options' => array ( ), ), 10 => array ( 'name' => 'assigned_user_name', 'type' => 'relate', 'label' => 'Assigned to:', 'required' => 0, 'options' => array ( ), ), 11 => array ( 'name' => 'salutation', 'type' => 'enum', 'label' => 'Salutation:', 'required' => 0, 'options' => array ( 0 => array ( 'name' => '', 'value' => '', ), 1 => array ( 'name' => 'Mr.', 'value' => 'Mr.', ), 2 => array ( 'name' => 'Ms.', 'value' => 'Ms.', ), 3 => array ( 'name' => 'Mrs.', 'value' => 'Mrs.', ), 4 => array ( 'name' => 'Dr.', 'value' => 'Dr.', ), 5 => array ( 'name' => 'Prof.', 'value' => 'Prof.', ), ), ), 12 => array ( 'name' => 'first_name', 'type' => 'varchar', 'label' => 'First Name:', 'required' => 0, 'options' => array ( ), ), 13 => array ( 'name' => 'last_name', 'type' => 'varchar', 'label' => 'Last Name:', 'required' => 1, 'options' => array ( ), ), 14 => array ( 'name' => 'title', 'type' => 'varchar', 'label' => 'Title:', 'required' => 0, 'options' => array ( ), ), 15 => array ( 'name' => 'department', 'type' => 'varchar', 'label' => 'Department:', 'required' => 0, 'options' => array ( ), ), 16 => array ( 'name' => 'do_not_call', 'type' => 'bool', 'label' => 'Do Not Call:', 'required' => 0, 'options' => array ( ), ), 17 => array ( 'name' => 'phone_home', 'type' => 'phone', 'label' => 'Home:', 'required' => 0, 'options' => array ( ), ), 18 => array ( 'name' => 'phone_mobile', 'type' => 'phone', 'label' => 'Mobile:', 'required' => 0, 'options' => array ( ), ), 19 => array ( 'name' => 'phone_work', 'type' => 'phone', 'label' => 'Office Phone:', 'required' => 0, 'options' => array ( ), ), 20 => array ( 'name' => 'phone_other', 'type' => 'phone', 'label' => 'Other Phone:', 'required' => 0, 'options' => array ( ), ), 21 => array ( 'name' => 'phone_fax', 'type' => 'phone', 'label' => 'Fax:', 'required' => 0, 'options' => array ( ), ), 22 => array ( 'name' => 'email1', 'type' => 'varchar', 'label' => 'Email:', 'required' => 0, 'options' => array ( ), ), 23 => array ( 'name' => 'email2', 'type' => 'varchar', 'label' => 'Other Email:', 'required' => 0, 'options' => array ( ), ), 24 => array ( 'name' => 'primary_address_street', 'type' => 'varchar', 'label' => 'Primary Address Street:', 'required' => 0, 'options' => array ( ), ), 25 => array ( 'name' => 'primary_address_city', 'type' => 'varchar', 'label' => 'Primary Address City:', 'required' => 0, 'options' => array ( ), ), 26 => array ( 'name' => 'primary_address_state', 'type' => 'varchar', 'label' => 'Primary Address State:', 'required' => 0, 'options' => array ( ), ), 27 => array ( 'name' => 'primary_address_postalcode', 'type' => 'varchar', 'label' => 'Primary Address Postal Code:', 'required' => 0, 'options' => array ( ), ), 28 => array ( 'name' => 'primary_address_country', 'type' => 'varchar', 'label' => 'Primary Address Country:', 'required' => 0, 'options' => array ( ), ), 29 => array ( 'name' => 'alt_address_street', 'type' => 'varchar', 'label' => 'Alternate Address Street:', 'required' => 0, 'options' => array ( ), ), 30 => array ( 'name' => 'alt_address_city', 'type' => 'varchar', 'label' => 'Alternate Address City:', 'required' => 0, 'options' => array ( ), ), 31 => array ( 'name' => 'alt_address_state', 'type' => 'varchar', 'label' => 'Alternate Address State:', 'required' => 0, 'options' => array ( ), ), 32 => array ( 'name' => 'alt_address_postalcode', 'type' => 'varchar', 'label' => 'Alternate Address Postal Code:', 'required' => 0, 'options' => array ( ), ), 33 => array ( 'name' => 'alt_address_country', 'type' => 'varchar', 'label' => 'Alternate Address Country:', 'required' => 0, 'options' => array ( ), ), 34 => array ( 'name' => 'assistant', 'type' => 'varchar', 'label' => 'Assistant:', 'required' => 0, 'options' => array ( ), ), 35 => array ( 'name' => 'assistant_phone', 'type' => 'phone', 'label' => 'Assistant Phone:', 'required' => 0, 'options' => array ( ), ), 36 => array ( 'name' => 'lead_source', 'type' => 'enum', 'label' => 'Lead Source:',]] 'required' => 0, 'options' => array ( 0 => array ( 'name' => '', 'value' => '', ), 1 => array ( 'name' => 'Cold Call', 'value' => 'Cold Call', ), 2 => array ( 'name' => 'Existing Customer', 'value' => 'Existing Customer', ), 3 => array ( 'name' => 'Self Generated', 'value' => 'Self Generated', ), 4 => array ( 'name' => 'Employee', 'value' => 'Employee', ), 5 => array ( 'name' => 'Partner', 'value' => 'Partner', ), 6 => array ( 'name' => 'Public Relations', 'value' => 'Public Relations', ), 7 => array ( 'name' => 'Direct Mail', 'value' => 'Direct Mail', ), 8 => array ( 'name' => 'Conference', 'value' => 'Conference', ), 9 => array ( 'name' => 'Trade Show', 'value' => 'Trade Show', ), 10 => array ( 'name' => 'Web Site', 'value' => 'Web Site', ), 11 => array ( 'name' => 'Word of mouth', 'value' => 'Word of mouth', ), 12 => array ( 'name' => 'Email', 'value' => 'Email', ), 13 => array ( 'name' => 'Campaign', 'value' => 'Campaign', ), 14 => array ( 'name' => 'Other', 'value' => 'Other', ), ), ), 37 => array ( 'name' => 'account_name', 'type' => 'relate', 'label' => 'Account Name:', 'required' => 0, 'options' => array ( ), ), 38 => array ( 'name' => 'account_id', 'type' => 'relate', 'label' => 'Account ID:', 'required' => 0, 'options' => array ( ), ), 39 => array ( 'name' => 'opportunity_role_fields', 'type' => 'relate', 'label' => 'Account Name:', 'required' => 0, 'options' => array ( ), ), 40 => array ( 'name' => 'reports_to_id', 'type' => 'id', 'label' => 'Reports to ID:', 'required' => 0, 'options' => array ( ), ), 41 => array ( 'name' => 'report_to_name', 'type' => 'relate', 'label' => 'Reports To:', 'required' => 0, 'options' => array ( ), ), 42 => array ( 'name' => 'birthdate', 'type' => 'date', 'label' => 'Birthdate:', 'required' => 0, 'options' => array ( ), ), 43 => array ( 'name' => 'portal_name', 'type' => 'varchar', 'label' => 'Portal Name:', 'required' => 0, 'options' => array ( ), ), 44 => array ( 'name' => 'portal_active', 'type' => 'bool', 'label' => 'Portal Active:', 'required' => 0, 'options' => array ( ), ), 45 => array ( 'name' => 'portal_app', 'type' => 'varchar', 'label' => 'Portal Application:', 'required' => 0, 'options' => array ( ), ), 46 => array ( 'name' => 'campaign_id', 'type' => 'id', 'label' => 'Campaign ID', 'required' => 0, 'options' => array ( ), ), 47 => array ( 'name' => 'campaign_name', 'type' => 'relate', 'label' => 'Campaign:', 'required' => 0, 'options' => array ( ), ), 48 => array ( 'name' => 'c_accept_status_fields', 'type' => 'relate', 'label' => 'Accept Status', 'required' => 0, 'options' => array ( ), ), 49 => array ( 'name' => 'm_accept_status_fields', 'type' => 'relate', 'label' => 'Accept Status', 'required' => 0, 'options' => array ( ), ), ), 'error' => '',)</source>
== Setting Records ==
$arrData[$k] = explode($separator, $v);
}
// insert our Account records
foreach ($arrData as $record) {
$set_entry_params = array(
$result = $soapclient->call('set_entry',$set_entry_params);
}
// insert Contacts
foreach ($arrData as $record) {
$set_entry_params = array(
'session' => $session_id,
'module_name' => 'Contacts',
'name_value_list'=>array(
array('name'=>'first_name', 'value'=>$record[$fieldKeys['First Name']]),
array('name'=>'last_name', 'value'=>$record[$fieldKeys['Last Name']]),
array('name'=>'phone_fax', 'value'=>$record[$fieldKeys['Fax']]),
array('name'=>'primary_address_street', 'value'=>$record[$fieldKeys['Address']]),
array('name'=>'primary_address_city', 'value'=>$record[$fieldKeys['City']]),
array('name'=>'primary_address_state', 'value'=>$record[$fieldKeys['State']]),
array('name'=>'primary_address_postalcode', 'value'=>$record[$fieldKeys['Zip Code']]),
array('name'=>'primary_address_country', 'value'=>$record[$fieldKeys['Country']]),
array('name'=>'phone_office', 'value'=>$record[$fieldKeys['Work Phone']]),
array('name'=>'phone_other', 'value'=>$record[$fieldKeys['Other Phone']]),
array('name'=>'email', 'value'=>$record[$fieldKeys['Email']]),
array('name'=>'account_name', 'value'=>$record[$fieldKeys['Company Name']]), // relation
array('name'=>'assigned_user_id', 'value'=>$user_guid)
)
);
$result = $soapclient->call('set_entry',$set_entry_params);
}
</source>
I didn't just arrive at the code magically. Instead, I just 'drew' a map of the columns of source data that I had, and marked where each data element would potentially fit into the target database table.
<source lang="php">
print '<pre>'; var_export ($arrFields); print '</pre>';
array (
0 => 'Company Name',// a:name
1 => 'Industry', // a:industry
2 => 'First Name', // c:first_name
3 => 'Last Name', // c:last_name
4 => 'Fax', // a:phone_fax c:phone_fax
5 => 'Address', // a:billing_address_street c:primary_address_street
6 => 'City', // a:billing_address_city c:primary_address_city
7 => 'State', // a:billing_address_state c:primary_address_state
8 => 'Zip Code', // a:billing_address_postalcode c:primary_address_postalcode
9 => 'Country', // a:billing_address_country c:primary_address_country
10 => 'Notes', // a:description
11 => 'Work Phone', // a:phone_office c:phone_work
12 => 'Other Phone',// a:phone_alternate c:phone_other
13 => 'Email', // a:email c:email1
14 => 'website', // a:website
15 => 'employees', // a:employees
16 => 'ticker_symbol// a:ticker_symbol
',
)
</source>
And there are a few extra elements like GUID that go into the actual scrip
The first attempt did not establish the record relationships the way that I intended by using the '''Company Name''' as the relation. It seemed plausible from the definition, but it didn't happen that way.
== Some Issues discovered ==