Skip to content

Bulldozer V2 CSV

Guy Maness edited this page Jul 3, 2024 · 25 revisions

The following maps are the required fields for using CSV data files. In Bulldozer version 2.0, import behaviors and csv files have been significantly reworked in an attempt to support Slinghot generated csv files as well. In some cases there are more fields/options supported in the csv than a Slingshot generated csv file will produce. The intention is that these additional fields are optional and a Slingshot generated file should still be supported.

Fields that require values are indicated by an asterisk (*) following the field name. The order of fields within the csv file does not matter unless specifically mentioned in the NOTES section below the respective csv section.

Date and DateTime fields must be in a format recognized by C# as a valid representation of the same.

Identifier Ideology

It is important that identifier field values are consistent between import files to properly connect different types of data during import. Most identifier fields can be provided as a string or integer value. This "id" will be used in conjunction with a Bulldozer run specific prefix (set on the Bulldozer configuration screen before running) to set foreign key values for all imported data. Bulldozer uses these foreign keys to match records in most cases.

Work In Progress

Version 2 is a major rewrite and rebuild of most of Bulldozer, but not all. Due to the size of the effort, there are still some areas that use the legacy import functionality. We hope to update the rest at some point. Some of these legacy areas still use legacy naming conventions as well, so it may not be obvious which fields align with identifier fields in related import files. We have tried to provide as much information as possible to clarify what is needed in the notes for these files.

Business Data

business.csv

Used to import business records.

Id*                  [Int or String]
Name*                [String]
Email                [String]
RecordStatus         [String: "Active","Inactive", or "Pending"]
InactiveReasonNote   [String]
InactiveReason       [String]
EmailPreference      [String: "EmailAllowed","NoMassEmails", or "DoNotEmail"]
CreatedDateTime      [DateTime]
ModifiedDateTime     [DateTime]
CampusId             [Int or String]
CampusName           [String]
Note                 [String]
IsEmailActive        [Boolean: "True" or "False"]
NOTES:
  • RecordStatus - If left blank or invalid value provided, value will default to "Active".
  • EmailPreference - If left blank or invalid value provided, value will default to "EmailAllowed".
  • Campus - Bulldozer allows for both a CampusId and CampusName to be provided. While either field can be populated to use for matching a person to a campus, it is best to provide both fields so Bulldozer can create a new campus if no match is found.

business-address.csv

Used to import addresses and locations for business records.

BusinessId*   [Int or String]
Street1*      [String]
Street2       [String]
City          [String]
State         [String]
PostalCode    [String]
Country       [String: See Note below]
Latitude      [String]
Longitude     [String]
IsMailing     [Boolean: "True" or "False"]
AddressType*  [String: "Home","Work","Previous", or "Other"]
AddressId     [Int or String]
NOTES:
  • Country - A 2 character string that matches the Value for the respective country defined value in the Countries defined type.
  • While City, State, and PostalCode fields are not required globally by Bulldozer for import, Rock sets the requirements for these fields based on the country of the address in the Countries defined values. If a particular address is missing any of the required fields for its country, the address will be skipped.

business-attribute.csv

Used to import attributes with EntityType of Business.

Key*                         [String]
Name*                        [String]
FieldType*                   [String: See Note below]
Category                     [String]
DefinedTypeId                [Int or String]
DefinedTypeAllowMultiple     [Boolean: "True" or "False"]
NOTES:
  • FieldType - The full class name of the FieldType for the attribute. Example: "Rock.Field.Types.TextFieldType". Some common FieldTypes are: Rock.Field.Types.DateFieldType, Rock.Field.Types.DefinedValueFieldType, Rock.Field.Types.BooleanFieldType, and Rock.Field.Types.TextFieldType.
  • DefinedTypeId - If a FieldType of defined value is being used, this field is required to identify the defined type to connect to the attribute. If a matching defined type does not exist, a new one will be created. All attribute and entity attribute imports use the same DefinedType lookup, so make sure any DefinedTypeId fields match across all import files for the same desired defined type to avoid duplicate types being created.
  • DefinedTypeAllowMultiple - If a FieldType of defined value is being used, this field can be provided to set the "Allow Multiple" property of the created attribute.

business-attributevalue.csv

Used to import attribute values for business records.

BusinessId*             [Int or String]
AttributeKey*           [String]
AttributeValue*         [String]
AttributeValueId        [Int or String]
NOTES:
  • Attribute Values provided for attributes with field type of defined value will be compared to the Values of the respective defined values. The string must match exactly. If a value is encountered that doesn't match an existing defined value, a new defined value will be created and used.

business-contact.csv

Used to create Business/Business Contact relationships between person and business records.

PersonId*             [Int or String]
BusinessId*           [String]

business-phone.csv

Used to import phone numbers for business records.

BusinessId*            [Int or String]
PhoneType*             [String]
PhoneNumber*           [String]
IsMessagingEnabled     [Boolean: "True" or "False"]
IsUnlisted             [Boolean: "True" or "False"]
PhoneId                [Int or String]
CountryCode            [Int]
Extension              [String]
NOTES:
  • PhoneType - Provide string representation of the desired phone type. String must be a perfect match to corresponding Defined Value in core Phone Type defined type. If string does not match an existing Defined Value exactly, a new Defined Value will be created and used.
  • CountryCode - Rock comes pre-configured with a Phone Country Code defined type with its defined values being used to determine how phone numbers from different country codes should be rendered in Rock. Upon installation, there are minimal country codes configured. Bulldozer maintains an ever growing library of country codes it supports. If Bulldozer detects a supported country code provided in this field it will check to see if it exists in Rock and create it if it does not. You can see a list of supported country codes here. If you need support for a country code added to our library, either add it to your fork and submit a pull request for us to consider or contact us at sales@kingdomfirstsolutions.com to request a quote from us to add it. We only add to the library as needed when we do migrations.

Entity Data

entityattribute.csv

Used to import entity attributes.

AttributeEntityTypeName*          [String]
AttributeRockKey                  [String]
AttributeName*                    [String]
AttributeCategoryName             [String]
AttributeType                     [String: See Note below]
AttributeDefinedTypeId            [Int or String]
AttributeEntityTypeQualifierName  [String]
AttributeEntityTypeQualifierValue [String]
NOTES:
  • Best if import file data is ordered by AttributeEntityTypeName, then by AttributeCategoryName, then by AttributeRockKey.
  • AttributeEntityTypeName - The full class name of the EntityType to set for the attribute. Example: "Rock.Model.FinancialAccount".
  • AttributeRockKey - If left blank, value will default to the AttributeName without whitespace. AttributeId will be added as foreign key to attributes that match Entity and Attribute Key with null foreign key.
  • AttributeType - Valid AttributeType values are "D" (Date), "B" (Boolean), "V" (Defined Value), "VM" (Defined Value with Allow Multiple), "E" (Encrypted Text), "L" (Value List), "VL" (Value List using Defined Type), "U" (URL Link), "H" (HTML), and "SN" (Social Security Number). If left blank, a standard Text type attribute will be created.
  • AttributeDefinedTypeId - If a FieldType of defined value is being used, this field is required to identify the defined type to connect to the attribute. If a matching defined type does not exist, a new one will be created. All attribute and entity attribute imports use the same DefinedType lookup, so make sure any DefinedTypeId fields match across all import files for the same desired defined type to avoid duplicate types being created.

entity-attributevalue.csv

Used to import attribute values for various entity records.

EntityTypeName*         [String]
EntityId*               [Int or String]
AttributeKey*           [String]
AttributeValue*         [String]
AttributeValueId        [Int or String]
NOTES:
  • Attribute Values provided for attributes with field type of defined value will be compared to the Values of the respective defined values. The string must match exactly. If a value is encountered that doesn't match an existing defined value, a new defined value will be created and used.
  • EntityId - Must match a valid imported record of the entity type provided in EntityTypeName.
  • EntityTypeName - The full class name of the EntityType to set for the attribute. Example: "Rock.Model.FinancialAccount".

notes.csv

Used to add notes to entity records.

NoteType*                [String]
EntityTypeName*          [String]
EntityForeignId*         [Int or String]
NoteCaption              [String]
NoteText                 [String]
NoteDate                 [DateTime]
CreatedById              [Int or String]
IsAlert                  [Boolean: "True" or "False"]
IsPrivate                [Boolean: "True" or "False"]
NOTES:
  • NoteType - The name of the Note Type in Rock to use for this note. If a matching Note Type does not already exist, it will be created and used.
  • EntityTypeName - The full class name of the EntityType. Example: "Rock.Model.Person"
  • EntityForeignId - Must match a valid imported record of the entity type provided in EntityTypeName
  • CreatedById - The ForeignId of the person record who created the note

Financial Data

bankaccount.csv

Used to import bank about information for person records.

FamilyId*          [Int or String]
RoutingNumber*     [Int]
AccountNumber*     [String]
IndividualId*      [Int or String]
NOTES:
  • All columns are required. If a column is not needed, it must still be included in the CSV and the values should be left blank.
  • Order of columns in csv must match order of fields shown above.
  • IndividualId - Must match the PersonId of an imported person record.

financial-account.csv

Used to import financial accounts.

Id*                [Int or String]
Name*              [String]
Description        [String]
IsTaxDeductible    [Boolean: "True" or "False"]
CampusId           [Int or String]
CampusName         [String]
ParentAccountId    [Int or String]
GLAccount          [String]
IsActive           [Boolean: "True" or "False"]
StartDate          [DateTime]
EndDate            [DateTime]
Order              [Int]
PublicName         [String]
NOTES:
  • Campus - Bulldozer allows for both a CampusId and CampusName to be provided. While either field can be populated to use for matching a financial account to a campus, it is best to provide both fields so Bulldozer can create a new campus if no match is found.

financial-batch.csv

Used to import financial batches.

Id*                   [Int or String]
Name*                 [String]
CampusId              [Int or String]
CampusName            [String]
StartDate*            [DateTime]
EndDate               [DateTime]
Status                [String: "Pending", "Open", or "Closed"]
ControlAmount*        [Decimal]
CreatedByPersonId     [Int or String]
CreatedDateTime       [DateTime]
ModifiedByPersonId    [Int or String]
ModifiedDateTime      [DateTime]
NOTES:
  • Campus - Bulldozer allows for both a CampusId and CampusName to be provided. While either field can be populated to use for matching a batch to a campus, it is best to provide both fields so Bulldozer can create a new campus if no match is found.
  • EndDate - If left blank, value will default to StartDate value.
  • Status - If left blank or invalid value provided, value will default to "Closed".

financial-transaction.csv

Used to import financial transactions. Requires a valid financial-transactiondetais.csv import file to import transactions.

Id*                       [Int or String]
BatchId*                  [Int or String]
AuthorizedPersonId*       [Int or String]
TransactionDate*          [DateTime]
TransactionType           [String: "Contribution","EventRegistration", or "Receipt"]
TransactionSource         [String]
CurrencyType              [String]
NonCashAssetType          [String]
CreditCardType            [String]
Summary                   [String]
TransactionCode           [String]
IsAnonymous               [Boolean: "True" or "False"]
ScheduledTransactionId    [Int or String]
GatewayId                 [Int or String]
CreatedByPersonId         [Int or String]
CreatedDateTime           [DateTime]
ModifiedByPersonId        [Int or String]
ModifiedDateTime          [DateTime]
NOTES:
  • AuthorizedPersonId - The PersonId of the imported person record the financial transaction should belong to.
  • TransactionType - If left blank or invalid value provided, value will default to "Contribution".
  • TransactionSource - Provide string representation of the Value for the desired Transaction Source defined value. If string does not match an existing Defined Value exactly, a new Defined Value will be created and used.
  • CurrencyType - Provide string representation of the Value for the desired Currency Type defined value. If string does not match an existing Defined Value exactly, a new Defined Value will be created and used.
  • NonCashAssetType - Provide string representation of the Value for the desired Non-Cash Asset Types defined value. If string does not match an existing Defined Value exactly, a new Defined Value will be created and used.
  • CreditCardType - Provide string representation of the Value for the desired Credit Card Type defined value. If string does not match an existing Defined Value exactly, a new Defined Value will be created and used.

financial-transactiondetail.csv

Used to import financial transaction details. Requires a valid financial-transaction.csv import file to import transactions.

Id*                       [Int or String]
TransactionId*            [String]
AccountId*                [Int or String]
Amount                    [Decimal]
Summary                   [String]
FundraisingGroupId        [Int or String]
FundraisingGroupMemberId  [Int or String]
CreatedByPersonId         [Int or String]
CreatedDateTime           [DateTime]
ModifiedByPersonId        [Int or String]
ModifiedDateTime          [DateTime]
NOTES:
  • FundraisingGroupId and FundraisingGroupMemberId - Rock's core Fundraising Group functionality allows for financial transactions to be connected with Fundraising Groups or specific members of a Fundraising Group. Only one field or the other is needed. Providing a FundRaisingGroupMemberId value will always take precedence, and the transaction will be tied to the matching GroupMemberId. If only a FundraisingGroupId is provided (with no FundRaisingGroupMemberId), Bulldozer will connect the transaction detail to the Fundraising Group rather than a specific GroupMember.

pledge.csv

IndividualId*           [Int or String]
FundName*               [String]
SubFundName             [String]
FundGLAccount           [String]
SubFundGLAccount        [String]
FundIsActive            [String]
SubFundIsActive         [String]
PledgeFrequencyName     [String]
TotalPledge*            [Decimal]
StartDate               [Date: "mm/dd/yyyy"]
EndDate                 [Date: "mm/dd/yyyy"]
PledgeId                [Int or String]
PledgeCreatedDate       [DateTime]
PledgeModifiedDate      [DateTime]
  • All columns are required. If a column is not needed, it must still be included in the CSV and the values should be left blank.
  • Order of columns in csv must match order of fields shown above.
  • IndividualId - Must match the PersonId of an imported person record.
  • FundName - The name of the Financial Account for the pledge. If the account does not exist, one will be created.
  • PledgeFrequencyName - Must match the Value or Description of an existing Recurring Transaction Frequency defined value in Rock.

scheduledtransaction.csv

Used to import repeating payment profiles.

ScheduledTransactionId*                [Int or String]
ScheduledTransactionPersonId*          [Int or String]
ScheduledTransactionCreatedDate        [DateTime]
ScheduledTransactionStartDate*         [Date: mm/dd/yyyy]
ScheduledTransactionEndDate            [Date: mm/dd/yyyy]
ScheduledTransactionNextPaymentDate    [Date: mm/dd/yyyy]
ScheduledTransactionActive             [Boolean: "True" or "False"]
ScheduledTransactionFrequency*         [Int or String]
ScheduledTransactionNumberOfPayments   [String]
ScheduledTransactionTransactionCode*   [String]
ScheduledTransactionGatewaySchedule*   [String]
ScheduledTransactionGateway*           [String]
ScheduledTransactionAccount*           [Int or String]
ScheduledTransactionAmount*            [Decimal]
ScheduledTransactionCurrencyType*      [String: "ACH" or "CreditCard"]
ScheduledTransactionCreditCardType     [String]

NOTES:

  • For best performance, group scheduled transactions by Id.
  • ScheduledTransactionFrequency - The integer or string value that matches an existing Recurring Transaction Frequency defined value's Id (when Int is provided) or Value (when string is provided).
  • ScheduledTransactionGateway - Name of financial gateway to use. If no gateway exists with a matching name, one will be created using the Test Gateway Entity. This should be updated to the appropriate Gateway Entity (provider) post-migration.
  • ScheduledTransactionCreditCardType - Values must already exist in Rock. Unlike financial-transactiondetail.csv import, the scheduledtransaction import will not create any new credit card types.

Group Data

attendance.csv

Used to import attendance data for groups.

AttendanceId*      [Int or String]
PersonId*          [Int or String]
GroupId*           [Int or String]
LocationId         [Int or String]
ScheduleId         [Int or String]
StartDateTime*     [DateTime]
EndDateTime        [DateTime]
Note               [String]
CampusId           [Int or String]

NOTES:

  • LocationId - The location id of an imported location (matched from foreign key) to set on the attendance occurrence.
  • StartDateTime - The start DateTime for the attendance occurrence.
  • EndDateTime - The end DateTime for the attendance occurrence.
  • CampusId - The campus id of an imported campus (matched from foreign key) to set on the attendance record.

group.csv

Used to import groups.

Id*                  [Int or String]
Name*                [String]
Description          [String]
Order                [Int]
ParentGroupId        [Int or String]
GroupTypeId*         [Int or String]
CampusId             [Int or String]
LocationId           [Int or String]
Capacity             [Int]
MeetingDay           [String: "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday", or "Saturday"]
MeetingTime          [String]
IsPublic             [Boolean: "True" or "False"]
IsActive             [Boolean: "True" or "False"]
CreatedDate          [DateTime]
NOTES:
  • MeetingTime - Must be a string c# recognizes as a valid TimeSpan. Example: "18:30:00"

group-address.csv

Used to import addresses and locations for groups.

GroupId*      [Int or String]
Street1*      [String]
Street2       [String]
City          [String]
State         [String]
PostalCode    [String]
Country       [String: See Note below]
Latitude      [String]
Longitude     [String]
IsMailing     [Boolean: "True" or "False"]
AddressType*  [String: "Home","Work","Previous", or "Other"]
AddressId     [Int or String]
NOTES:
  • Country - A 2 character string that matches the Value for the respective country defined value in the Countries defined type.
  • While City, State, and PostalCode fields are not required globally by Bulldozer for import, Rock sets the requirements for these fields based on the country of the address in the Countries defined values. If a particular address is missing any of the required fields for its country, the address will be skipped.

group-attribute.csv

Used to import attributes with EntityType of Group.

Key*                         [String]
Name*                        [String]
FieldType*                   [String: See Note below]
Category                     [String]
DefinedTypeId                [String]
DefinedTypeAllowMultiple     [Boolean: "True" or "False"]
GroupTypeId*                 [Int or String]
NOTES:
  • FieldType - The full class name of the FieldType for the attribute. Example: "Rock.Field.Types.TextFieldType". Some common FieldTypes are: Rock.Field.Types.DateFieldType, Rock.Field.Types.DefinedValueFieldType, Rock.Field.Types.BooleanFieldType, and Rock.Field.Types.TextFieldType.
  • DefinedTypeId - If a FieldType of defined value is being used, this field is required to identify the defined type to connect to the attribute. If a matching defined type does not exist, a new one will be created. All attribute and entity attribute imports use the same DefinedType lookup, so make sure any DefinedTypeId fields match across all import files for the same desired defined type to avoid duplicate types being created.
  • DefinedTypeAllowMultiple - If a FieldType of defined value is being used, this field can be provided to set the "Allow Multiple" property of the created attribute.
  • GroupTypeId - Attributes for Groups are created at the GroupType level in Rock. If the AttributeEntityType in the csv is set to "Group", this field is required to identify the Group Type to add the attribute to. If the attribute needs added to multiple group types, your csv file should include a row for every group type needed.

group-attributevalue.csv

Used to import attribute values for groups.

GroupId*                [Int or String]
AttributeKey*           [String]
AttributeValue*         [String]
AttributeValueId        [Int or String]
NOTES:
  • Attribute Values provided for attributes with field type of defined value will be compared to the Values of the respective defined values. The string must match exactly. If a value is encountered that doesn't match an existing defined value, a new defined value will be created and used.

group-fundraising.csv

Used to import groups to be configured as Fundraising groups.

Id*                          [Int or String]
Name*                        [String]
Description                  [String]
Order                        [Int]
ParentGroupId                [Int or String]
GroupTypeId*                 [Int or String]
CampusId                     [Int or String]
LocationId                   [Int or String]
Capacity                     [Int]
MeetingDay                   [String: "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday", or "Saturday"]
MeetingTime                  [String]
IsPublic                     [Boolean: "True" or "False"]
IsActive                     [Boolean: "True" or "False"]
CreatedDate                  [DateTime]
OpportunityName*             [String]
AccountId*                   [Int or String]
IndividualFundraisingGoal    [Decimal]
NOTES:
  • MeetingTime - Must be a string c# recognizes as a valid TimeSpan. Example: "18:30:00"
  • AccountId - The AccountId of the imported financial account to connect with the fundraising group.

groupmember.csv

Used to import group members.

PersonId*             [Int or String]
GroupId*              [Int or String]
Role*                 [String]
GroupMemberId*        [Int or String]
GroupMemberStatus*    [String: "Inactive", "Active", or "Pending"]
CreatedDate           [DateTime]
Note                  [String]
NOTES:
  • Role - Values provided will use or add roles to the GroupType of the Group identified by the GroupId.
  • GroupMemberStatus - If invalid value provided, value will default to "Active".

groupmember-historical.csv

Used to import group member historical data.

ArchivedDateTime                [DateTime]
IsLeader                        [Boolean: "True" or "False"]
IsArchived                      [Boolean: "True" or "False"]
GroupId*                        [Int or String]
GroupMemberId*                  [Int or String]
PersonId*                       [Int or String]
Role*                           [String]
IsArchived                      [Boolean: "True" or "False"]
CurrentRowIndicator*            [Boolean: "True" or "False"]
ExpireDateTime*                 [DateTime]
EffectiveDateTime*              [DateTime]
InactiveDateTime                [DateTime]
GroupMemberStatusHistorical*    [String: "Inactive", "Active", or "Pending"]
GroupMemberStatusCurrent        [String: "Inactive", "Active", or "Pending"]
NOTES:
  • GroupMemberId - Used to match an existing GroupMember record to apply the history to. If no valid match is found, GroupId, PersonId, Role, and GroupMemberStatusCurrent will be used to create a new GroupMember record respectively. The history will then be attached to that GroupMember record.
  • GroupMemberStatusCurrent - If invalid value provided, value will default to "Inactive".

grouptype.csv

Used to import group types.

Id*                       [Int or String]
Description               [String]
Name*                     [String]
GroupTypePurpose          [String]
InheritedGroupTypeGuid    [String]
ParentGroupTypeId         [Int or String]
AllowWeeklySchedule       [Boolean: "True" or "False"]
TakesAttendance           [Boolean: "True" or "False"]
WeekendService            [Boolean: "True" or "False"]
SelfReference             [Boolean: "True" or "False"]
ShowInGroupList           [Boolean: "True" or "False"]
ShowInNav                 [Boolean: "True" or "False"]
LocationSelectionMode     [String: "None", "Address", "Named", "Point", "Polygon", "GroupMember", or "All"]
LocationTypes             [String]
AllowMultipleLocations    [Boolean: "True" or "False"]
IsSchedulingEnabled       [Boolean: "True" or "False"]
EnableLocationSchedules   [Boolean: "True" or "False"]
CreatedDateTime           [DateTime]
NOTES:
  • LocationTypes - A comma separated string of location type names that match the Value of a DefinedValue in the Location Type (Category = Group) DefinedType. Most commonly used value for group type context would be "Meeting Location".

namedlocation.csv

NamedLocationId*                [Int or String]
NamedLocationName*              [String]
NamedLocationCreatedDate        [Date]
NamedLocationType               [String: See not below]
NamedLocationParent             [String]
NamedLocationSoftRoomThreshold  [Int]
NamedLocationFirmRoomThreshold  [Int]
NOTES:
  • NamedLocationCreatedDate - Date in "mm/dd/yyyy" format.
  • NamedLocationType - Guid of the Location Type defined value to use.

Person Data

person.csv

Used to import person records.

Id*                  [Int or String]
FamilyId*            [Int or String]
FamilyName*          [String]
FamilyRole*          [String: "Adult" or "Child"]
FirstName            [String]
NickName             [String]
LastName             [String]
MiddleName           [String]
Salutation           [String]
Suffix               [String]
Email                [String]
Gender               [String: "Male","Female", or "Unknown"]
MaritalStatus        [String]
Birthdate            [DateTime]
AnniversaryDate      [DateTime] 
RecordStatus         [String: "Active","Inactive", or "Pending"]
InactiveReasonNote   [String]
InactiveReason       [String]
ConnectionStatus     [String]
EmailPreference      [String: "EmailAllowed","NoMassEmails", or "DoNotEmail"]
CreatedDateTime      [DateTime]
ModifiedDateTime     [DateTime]
CampusId             [Int or String]
CampusName           [String]
Note                 [String]
Grade                [String]
GraduationYear       [Int]
GiveIndividually     [Boolean: "True" or "False"]
IsDeceased           [Boolean: "True" or "False"]
IsEmailActive        [Boolean: "True" or "False"]
PreviousPersonIds    [String]
NOTES:
  • Salutation and Suffix - Provide string representation of the respective field. String must be a perfect match to corresponding Defined Value in the respective Defined Type to be matched properly. If string does not match an existing defined value exactly, a new Defined Value will be created in the respective Defined Type and used.
  • MaritalStatus - Provide string representation of the desired marital status. String must be a perfect match to corresponding Defined Value in core Marital Status defined type. If string does not match an existing Defined Value exactly, a new Defined Value will be created and used.
  • ConnectionStatus - Provide string representation of the desired connection status. String must be a perfect match to corresponding Defined Value in core Connection Status defined type. If string does not match an existing Defined Value exactly, a new Defined Value will be created and used.
  • Campus - Bulldozer allows for both a CampusId and CampusName to be provided. While either field can be populated to use for matching a person to a campus, it is best to provide both fields so Bulldozer can create a new campus if no match is found.
  • Grade and GraduationYear - You can provide either a "GraduationYear" or "Grade" property. No need to provide both. If "GraduationYear" is provided, it will be directly set the GraduationYear on the person record with the value. If "Grade" is provided, the string must match either the Description or Abbreviation attribute value for the respective School Grades defined value for the grade. Bulldozer uses the Value of the matched defined value as an offset along with the "Grade Transition Date" global attribute value in the target db to calculate the GraduationYear to be stored on the record.
  • PreviousPersonIds - You can provide a comma separated list of previous Ids a person record may have had. If a value is provided here, Bulldozer will include a search through PersonAlias records when trying to match a person if a match on the main Id field is unsuccessful. This field should only be used as necessary. It is primarily provided for importing data into a Rock db that may have already had data imported to it from the same source, and the source data person Id could have changed between the two runs (i.e. records merged in source system).
  • PersonPhotoUrl and FamilyImageUrl are currently supported by Slingshot export and Rock bulk import tool, but not yet supported in Bulldozer. If the fields exist in the import file, it will not cause problems but no photos will be imported.

person-address.csv

Used to import addresses and locations for person records.

PersonId*     [Int or String]
Street1*      [String]
Street2       [String]
City          [String]
State         [String]
PostalCode    [String]
Country       [String: See Note below]
Latitude      [String]
Longitude     [String]
IsMailing     [Boolean: "True" or "False"]
AddressType*  [String: "Home","Work","Previous", or "Other"]
AddressId     [Int or String]
NOTES:
  • Country - A 2 character string that matches the Value for the respective country defined value in the Countries defined type.
  • While City, State, and PostalCode fields are not required globally by Bulldozer for import, Rock sets the requirements for these fields based on the country of the address in the Countries defined values. If a particular address is missing any of the required fields for its country, the address will be skipped.

person-attribute.csv

Used to import person attributes (EntityType = Person)

Key*                         [String]
Name*                        [String]
FieldType*                   [String: See Note below]
Category                     [String]
DefinedTypeId                [Int or String]
DefinedTypeAllowMultiple     [Boolean: "True" or "False"]
NOTES:
  • FieldType - The full class name of the FieldType for the attribute. Example: "Rock.Field.Types.TextFieldType". Some common FieldTypes are: Rock.Field.Types.DateFieldType, Rock.Field.Types.DefinedValueFieldType, Rock.Field.Types.BooleanFieldType, and Rock.Field.Types.TextFieldType.
  • DefinedTypeId - If a FieldType of defined value is being used, this field is required to identify the defined type to connect to the attribute. If a matching defined type does not exist, a new one will be created. All attribute and entity attribute imports use the same DefinedType lookup, so make sure any DefinedTypeId fields match across all import files for the same desired defined type to avoid duplicate types being created.
  • DefinedTypeAllowMultiple - If a FieldType of defined value is being used, this field can be provided to set the "Allow Multiple" property of the created attribute.

person-attributevalue.csv

Used to import attribute values for person records.

PersonId*               [Int or String]
AttributeKey*           [String]
AttributeValue*         [String]
AttributeValueId        [String]
NOTES:
  • Attribute Values provided for attributes with field type of defined value will be compared to the Values of the respective defined values. The string must match exactly. If a value is encountered that doesn't match an existing defined value, a new defined value will be created and used.

person-phone.csv

Used to import phone numbers for person records.

PersonId*              [Int or String]
PhoneType*             [String]
PhoneNumber*           [String]
IsMessagingEnabled     [Boolean: "True" or "False"]
IsUnlisted             [Boolean: "True" or "False"]
PhoneId                [Int or String]
CountryCode            [Int]
Extension              [String]
NOTES:
  • PhoneType - Provide string representation of the desired phone type. String must be a perfect match to corresponding Defined Value in core Phone Type defined type. If string does not match an existing Defined Value exactly, a new Defined Value will be created and used.
  • CountryCode - Rock comes pre-configured with a Phone Country Code defined type with its defined values being used to determine how phone numbers from different country codes should be rendered in Rock. Upon installation, there are minimal country codes configured. Bulldozer maintains an ever growing library of country codes it supports. If Bulldozer detects a supported country code provided in this field it will check to see if it exists in Rock and create it if it does not. You can see a list of supported country codes here. If you need support for a country code added to our library, either add it to your fork and submit a pull request for us to consider or contact us at sales@kingdomfirstsolutions.com to request a quote from us to add it. We only add to the library as needed when we do migrations.

person-search-key.csv

Used to import additional emails and/or alternate ids as person search keys for person records.

PersonId*        [Int or String]
SearchValue*     [String]
SearchType*      [String: "Email","AlternateId"]

personhistory.csv

Used to import history for person records.

HistoryId*            [Int or String]
HistoryPersonId*      [Int or String]
HistoryCategory*      [String]
ChangedByPersonId     [String]
Verb                  [String]
Caption               [String]
ChangeType            [String: "Property" or "Record"]
ValueName             [String]
RelatedEntityType     [String: "Person","Group","Attribute","UserLogin", or "PersonSearchKey"]
RelatedEntityId       [String]
NewValue              [String]
OldValue              [String]
HistoryDateTime       [DateTime]
IsSensitive           [Boolean: "True" or "False"]
NOTES:
  • Bulldozer offers several fields to allow you to piece together history entries that will render as desired in the different areas of Rock. Due to this flexibility, special care should be taken on what to populate in the different fields to ensure the desired final result.
  • HistoryCategory - String will either be matched to an existing child category of Rock's core history category named "Person" or a new child category will be created.
  • ChangedByPersonId - The ForeignId of the person who created the note.
  • RelatedEntityId - The ForeignId of the previously imported entity of type matching RelatedEntityType.

previouslastname.csv

Used to import previous last names for person records.

PreviousLastNamePersonId*        [Int or String]
PreviousLastName*                [String]
PreviousLastNameId*              [Int or String]
NOTES:
  • All columns are required. If a column is not needed, it must still be included in the CSV and the values should be left blank.
  • Order of columns in csv must match order of fields shown above.

Other Data

benevolenceequest.csv

BenevolenceRequestText*                [String]
BenevolenceRequestDate*                [DateTime]  
BenevolenceRequestId                   [Int or String]
BenevolenceRequestFirstName*           [String]
BenevolenceRequestLastName*            [String]
BenevolenceRequestEmail                [String]
BenevolenceRequestCreatedById          [Int or String]
BenevolenceRequestCreatedDate          [DateTime]
BenevolenceRequestRequestedById        [String]
BenevolenceRequestCaseWorkerId         [String]
BenevolenceRequestCellPhone            [String]
BenevolenceRequestHomePhone            [String]
BenevolenceRequestWorkPhone            [String]
BenevolenceRequestGovernmentId         [String]
BenevolenceRequestProvidedNextSteps    [String]
BenevolenceRequestStatus*              [String]
BenevolenceRequestResultSummary        [String]
BenevolenceRequestAddress              [String]
BenevolenceRequestAddress2             [String]
BenevolenceRequestCity                 [String]
BenevolenceRequestState                [String]
BenevolenceRequestZip                  [String]
BenevolenceRequestCountry              [String]
BenevolenceType                        [String]
NOTES:
  • All columns are required. If a column is not needed, it must still be included in the CSV and the values should be left blank.
  • Order of columns in csv must match order of fields shown above.
  • BenevolenceRequestRequestedById - The PersonId of an imported person record to set as the requester.
  • BenevolenceRequestCaseWorkerId - The PersonId of an imported person record to set as the case worker.
  • Benevolence Requests require either: A) BenevolenceRequestRequestedById; or B) BenevolenceRequestFirstName and BenevolenceRequestLastName. If BenevolenceRequestRequestedById is provided, the personal information from the respective person record will be used for all personal information fields (name, email, address, etc.) regardless of data provided provided in those columns.
  • BenevolenceRequestStatus - Provide string representation of the Value for the desired Benevolence Request Status defined value. If string does not match an existing Defined Value exactly, a new Defined Value will be created and used.
  • BenevolenceType was added to Rock V13+. If left blank, value will default to Rock's default BenevolenceType ("Benevolence").

benevolenceresult.csv

BenevolenceResultRequestId*        [Int or String]
BenevolenceResultType*             [String]
BenevolenceResultId                [Int or String]
BenevolenceResultAmount            [Decimal]
BenevolenceResultSummary           [String]
BenevolenceResultCreatedById       [Int or String]
BenevolenceResultCreatedDate       [DateTime]
NOTES:
  • All columns are required. If a column is not needed, it must still be included in the CSV and the values should be left blank.
  • Order of columns in csv must match order of fields shown above.
  • BenevolenceResultType - Provide string representation of the Value for the desired Benevolence Result Type defined value. If string does not match an existing Defined Value exactly, a new Defined Value will be created and used.

Communication Data

communication.csv

Used to import communication records.

CommunicationId*     [Int or String]
FromName             [String]
FromEmail            [String]
ReplyToEmail         [String]
CCEmails             [String]
BCCEmails            [String]
Subject              [String]
EmailMessage         [String]
SMSMessage           [String]
CommunicationType    [String: "Email","SMS","PushNotification, or "RecipientPreference"]
IsBulkCommunication  [Boolean: "True" or "False"]
SenderPersonId       [Int or String]
SentDateTime         [DateTime]
CreatedByPersonId    [Int or String]
CreatedDateTime      [DateTime]
NOTES:
  • EmailMessage - This field often contains HTML text that can affect the structure and readability of a csv file if not properly handled when extracted. It is recommended to test your csv file for proper column structure before attempting to import.
  • CommunicationType - If left blank or invalid value provided, value will default to "RecipientPreference".
  • SentDateTime - Importing of communication data is recommended for historical purposes only. It is recommended precautions should be taken to ensure communications are imported in a way that will not be sent by Rock. It is recommended to ensure a past date is set for this field.

communication-recipient.csv

Used to import recipients for communications.

CommunicationRecipientId*  [Int or String]
CommunicationId*           [Int or String]
RecipientPersonId*         [Int or String]
SentDateTime*              [DateTime]
RecipientStatus*           [String: "Pending","Delivered","Failed","Cancelled","Opened" or "Sending"]
NOTES:
  • Importing of communication data is recommended for historical purposes only. It is recommended precautions should be taken to ensure communications are imported in a way that will not be sent by Rock. The following suggestions are in keeping with this recommendation:
    1. SentDateTime - It is recommended to ensure a past date is set for this field.
    2. RecipientStatus - It is recommended to only use values of "Delivered", "Failed", "Cancelled", or "Opened".
  • RecipientStatus - If left blank, value will default to "Delivered".

connectionrequest.csv

Used to import connection requests.

OpportunityForeignKey*    [Int or String]
OpportunityName*          [String]
ConnectionType*           [String]
OpportunityDescription    [String]
OpportunityActive         [Boolean: "True" or "False" (Default)]
OpportunityCreated        [DateTime]
OpportunityModified       [DateTime]
RequestForeignKey         [Int or String]
RequestPersonId*          [Int or String]
RequestConnectorId        [Int or String]
RequestCreated            [DateTime]
RequestModified           [DateTime]
RequestStatus*            [String]
RequestState              [Int: See note below]
Comments                  [String]
RequestFollowUp           [DateTime]
ActivityType              [String]
ActivityNote              [String]
ActivityDate              [DateTime]
ActivityConnectorId       [Int or String]
NOTES:
  • Best if import file data is ordered by ConnectionType, then by OpportunityName, then by OpportunityForeignKey, then by RequestForeignKey.
  • All columns are required. If a column is not needed, it must still be included in the CSV and the values should be left blank.
  • Order of columns in csv must match order of fields shown above.
  • OpportunityForeignKey - The id of the Connection Opportunity the request is for. This value is used in the foreign key field of the connection opportunity for reference. If no matching connection opportunity is found, a new one will be created using the OpportunityName field as its Name.
  • OpportunityName - The name to use for new Connection Opportunity being created if no existing match found for OpportunityForeignKey value.
  • RequestForeignKey - The id of the connection request. This value is used in the foreign key field for matching reference.
  • RequestPersonId - The PersonId of an imported person record to set as the requester of the connection request.
  • RequestConnectorId - The PersonId of an imported person record to set as the connector of the connection request.
  • RequestStatus - The name of the connection status within the ConnectionType to set for the connection request. If no matching connection status found within the ConnectionType, a new one will be created and used.
  • RequestState - Valid state integer values are "0" (Active), "1" (Inactive), "2" (FutureFollowUp), and "3" (Connected).
  • ActivityHandling - The following activity fields can be used to create a connection request activity on the connection request. To add multiple activities to a single request, your .csv file will need a separate row for every activity.
        ActivityType - The name of the connection activity type. If no match is found, a new one will be created.
        ActivityNote - The text to populate the Note of the connection request activity.
        ActivityDate - The DateTime to set for the connection request activity.
        ActivityConnectorId - The PersonId of an imported person record to set as the connector of the connection request activity.

contentchannel.csv

Used to import content channels.

ContentChannelName*              [String]
ContentChannelTypeName*          [String]
ContentChannelDescription        [String]
ContentChannelId*                [Int or String]
ContentChannelRequiresApproval   [Boolean: "True" or "False" (Default)]
ContentChannelParentId           [Int or String]
NOTES:
  • This csv is loaded row by row, so care must be taken to order the data such that any parent channels are listed before any of their child channels.
  • All columns are required. If a column is not needed, it must still be included in the CSV and the values should be left blank.
  • Order of columns in csv must match order of fields shown above.
  • ContentChannelTypeName - The name of the content channel type for the content channel. If no existing content channel type matches, a new one will be created with this name and will be used.
  • Additional columns can be added to the csv file to create Content Channel Attributes using the following rules:
  1. If no caret is in the Attribute Name (Author), just tries to match to an existing attribute by the name.If created, it's created as Text
  2. If only one caret is in the AttributeName (Author^V), the Attribute Name and AttributeType are used. Note: D (Date), B (Boolean), V (Defined Value), E (Encrypted Text), L (Value List [^ separated values]), VL (Value List using Defined Type [^ separated values]) are specific types, anything else will be Text.
  3. If two carets are in the Attribute Name(^Podcast^Author), Attribute Category and AttributeName are used.
  4. If three carets are in the AttributeName (^Podcast^Author^V), Attribute Category, Attribute Name,and Attribute Type are used.
  5. If four carets are in the AttributeName (^Podcast^Author^V^123), Attribute Category, Attribute Name,Attribute Type, and Attribute Foreign Key are used.
  6. If five carets are in the AttributeName (^Podcast^Author^V^123^456), Attribute Category, Attribute Name,Attribute Type, Attribute Foreign Key, and Defined Type Foreign Key are used.

Note: The power of the five carets is that the Defined Type list created for an attribute can be used by multiple Defined Value Attributes. This is helpful if there are attributes used as surveys which have the same options used multiple times.

contentchannelitem.csv

Used to import content channel items.

ContentChannelName*    [String]
ItemTitle*             [String]
ItemContent            [String]
ItemStart              [String]
ItemExpire             [String]
ItemId                 [Int or String]
ItemParentId           [Int or String]
NOTES:
  • This csv is loaded row by row, so care must be taken to order the data such that any parent items are listed before any of their child items.
  • All columns are required. If a column is not needed, it must still be included in the CSV and the values should be left blank.
  • Order of columns in csv must match order of fields shown above.
  • ContentChannelName - The name of the content channel for the content channel item. The name provided must match the name of an existing Content Channel in Rock.
  • Additional columns can be added to the csv file to create Content Channel Attributes using the following rules:
  1. If no caret is in the Attribute Name (Author), just tries to match to an existing attribute by the name.If created, it's created as Text
  2. If only one caret is in the AttributeName (Author^V), the Attribute Name and AttributeType are used. Note: D (Date), B (Boolean), V (Defined Value), E (Encrypted Text), L (Value List [^ separated values]), VL (Value List using Defined Type [^ separated values]) are specific types, anything else will be Text.
  3. If two carets are in the Attribute Name(^Podcast^Author), Attribute Category and AttributeName are used.
  4. If three carets are in the AttributeName (^Podcast^Author^V), Attribute Category, Attribute Name,and Attribute Type are used.
  5. If four carets are in the AttributeName (^Podcast^Author^V^123), Attribute Category, Attribute Name,Attribute Type, and Attribute Foreign Key are used.
  6. If five carets are in the AttributeName (^Podcast^Author^V^123^456), Attribute Category, Attribute Name,Attribute Type, Attribute Foreign Key, and Defined Type Foreign Key are used.

Note: The power of the five carets is that the Defined Type list created for an attribute can be used by multiple Defined Value Attributes. This is helpful if there are attributes used as surveys which have the same options used multiple times.

grouppolygon.csv

Used to import geofenced geographic area locations.

GroupId*                         [Int or String]
GroupName*                       [String]
GroupCreatedDate                 [Date: "mm/dd/yyyy"]
GroupType*                       [Int or String]
GroupParentGroupId*              [Int or String]
GroupActive                      [Boolean: "True" or "False"]
GroupOrder                       [Int]
GroupCampus*                     [String]
Latitude*                        [String]
Longitude*                       [String]
NOTES:
  • Issues may arise with the geospatial processing depending on SQL Versions. If any exceptions are thrown, try installing Microsoft System CLR Types for SQL Server 2012 (x64) ( http://go.microsoft.com/fwlink/?LinkID=239644&clcid=0x409 ).
  • All columns are required. If a column is not needed, it must still be included in the CSV and the values should be left blank.
  • Order of columns in csv must match order of fields shown above.
  • GroupType - Provide the Id, Guid, Name, or imported GroupTypeId for the group type.
  • GroupCampus - Provide the Name, Shortcode, or CampusId from an imported campus. If no campus match is found, a new one will be created with the Name set to this value.

prayerrequest.csv

Used to import prayer requests.

PrayerRequestCategory              [String]
PrayerRequestText*                 [String]
PrayerRequestDate*                 [DateTime]
PrayerRequestId                    [Int or String]
PrayerRequestFirstName*            [String]
PrayerRequestLastName              [String]
PrayerRequestEmail                 [String]
PrayerRequestExpireDate            [DateTime]
PrayerRequestAllowComments         [Boolean: "True" (Default) or "False"]
PrayerRequestIsPublic              [Boolean: "True" (Default) or "False"]
PrayerRequestIsApproved            [Boolean: "True" (Default) or "False"]
PrayerRequestApprovedDate          [DateTime]
PrayerRequestApprovedById          [String]
PrayerRequestCreatedById           [String]
PrayerRequestRequestedById         [String]
PrayerRequestAnswerText            [String]
PrayerRequestCampus                [String]
NOTES:
  • All columns are required. If a column is not needed, it must still be included in the CSV and the values should be left blank.
  • Order of columns in csv must match order of fields shown above.
  • PrayerRequestCategory - The name of the Category for the prayer request. If matching an existing category, it must be a category with EntityType set to Prayer Request. If a matching category does not exist, a new one will be created.
  • PrayerRequestCampus - Provide the Name or Shortcode from an imported campus. If no campus match is found, a new one will be created with the Name set to this value.

metrics.csv

Used to import metrics and metric values.

MetricId*         [Int or String]
MetricName*       [String]
MetricCategory    [String]
PartitionCampus   [Int or String]
PartitionService  [DateTime]
PartitionGroup    [Int or String]
MetricValue       [Decimal]
MetricValueId     [Int or String]
MetricValueDate   [Date: "mm/dd/yyyy"]
MetricValueNote   [String]
NOTES:
  • All columns are required. If a column is not needed, it must still be included in the CSV and the values should be left blank.
  • Order of columns in csv must match order of fields shown above.
  • PartitionCampus - Provide the Name, Shortcode, or CampusId from an imported campus to create a "Campus" partition on the imported metric and add a partition value to the metric value for the campus provided.
  • PartitionService - Provide a DateTime string to create a "Service" partition on the imported metric and add a partition value to the metric value for the matching metric scheduled for the date. If a matching schedule does not exist, one will be created.
  • PartitionGroup - Provide the GroupId from an existing imported group to create a "Group" partition on the imported metric and add a partition value to the metric value for the GroupId provided.

relationship.csv

Used to import relationship groups and group members.

GroupMemberId*           [Int or String]
GroupMemberGroupId*      [Int or String]
GroupMemberPersonId*     [Int or String]
GroupMemberCreatedDate   [DateTime]
GroupMemberRole          [String]
GroupMemberActive        [Boolean: "True" or "False"]
NOTES:
  • All columns are required. If a column is not needed, it must still be included in the CSV and the values should be left blank.
  • Order of columns in csv must match order of fields shown above.
  • GroupMemberId - The id of the relationship that will be used as the foreign key.
  • GroupMemberGroupId - This should be the imported PersonId of the person the relationship belongs to. In Rock, this is the person who owns the KnownRelationship group.
  • GroupMemberPersonId - This should be the imported PersonId of the person the relationship is targeting. In Rock, this is the person who does not own the KnownRelationship group.
  • GroupMemberRole - Set to the desired Group Role of the KnownRelationship group type to connect the GroupMemberPersonId person to within the relationship group.

userlogin.csv

Used to import logins.

UserLoginId*                   [Int or String]
UserLoginPersonId*             [Int or String]
UserLoginUserName*             [String]
UserLoginPassword              [String]
UserLoginDateCreated           [DateTime]
UserLoginAuthenticationType    [String]
UserLoginIsConfirmed           [Boolean: "True" or "False"]
NOTES:
  • All columns are required. If a column is not needed, it must still be included in the CSV and the values should be left blank.
  • Order of columns in csv must match order of fields shown above.
  • UserLoginId - The id of the login entry that will be used as the foreign key.
  • UserLoginAuthenticationType - The full class name of the Rock Authentication Type to use. Example: "Rock.Security.Authentication.ActiveDirectory"
Clone this wiki locally