Data Importing

Data Review

Before you start anything

  • Do not just dive in and start cleaning up data at the first file you see.
  • Make sure you have all the 'current' data that will be used for importing.
  • Review ALL the files for completeness and record counts.
  • If there is 5,000 donations, and 90,000 patrons, verify with the client that this is the approximate number of records they are expecting. Perhaps their export process was incomplete and there should be 50,000 donations.
  • Double check that you have all the starting information that you need to move forward and all of the initial questions answered. Nothing is worse then moving forward on what you think is best, only to find out later that you assessment was incorrect and you need to start over.
  • Do not go into a cleanup and preparation process and start deleting any data or columns that you do not know what they mean. Even if they contain 'junk' data. That 'junk' data may turn out later to be a key index field that could be the primary link to 'this' file, or to 'another' file.
  • If they provided 'sample' data, compare the files that they sent in the sample to the 'final' set of files. Did they resent the 'sample' files too. If so, great. If not, where are they and why not?

What to look for

  • When you start reviewing all the files the first thing to look for is a 'key link' or a column of data that 'links' this record to any other records. Once you find the 'key link' to each file, the record connections and how the data relates to each other will become clear.

Create New Database

Creating a new database for a new client:
  1. Download the most recent "empty" database
  2. Restore the downloaded "empty" database
  3. Configure "TheatreManagerServer" to:
    • Database name: "empty"
    • Web Listeners: 1
    • Classic Web Listeners: 0
    • Housekeepers: 1
  4. Using the Theatre Manager application, log into the "empty" database.
  5. Setup >> Company Preferences >> Reports/Misc tab >> Set Maintenance Jobs to run from 8:00am - 5:00pm.
  6. Restart the "TheatreManagerServer" processes to read in the new Company Preferences settings.
  7. Setup >> Batch Functions >> Worker Jobs - Verify all jobs have completed successfully.
  8. Setup >> Company Preferences >> Reports/Misc tab >> Set Maintenance Jobs to run from 1:00am - 5:00am.
  9. Set the System Preferences
    • Appearance - Canadian/USA spellings and descriptions (State/PST, Federal/GST/HST)
    • Licence - Set the DB User Suffix
    • Licence - Set the initial Customer License number
  10. Set the Company Preferences
    • Company - set default contact company information (reference Daylite)
    • Accounting - set general accounting information (Fiscal Year, Start Month, Store Year Start/End)
    • Director - set Web Server URL and Custom Template URL for their web sales site. NOTE: make sure there is https:// in the URL when using port 443
    • Donations - in the Donation Comments, replace with client's organization. Set Government Website.
      • Canada: canada.ca/charities-giving
      • USA: irs.gov/eo
    • Appearance - set the Canadian/USA spellings (Color, Zip Code, State, Medic/Behavior, Social Security, Hair Color, Eye Color, Theatre, Venue)
    • Reports/Misc - visit the client's existing website to gather icons and information for: TicketTrove icon, company overview, logo for reports (reference client's website), set Time Zone.
  11. Set Invoice Comments
    • Replace with client's organization in 2 places
    • Canadian/USA spellings for cheque/check
  12. Set Code Tables
    • Country - set the default country
    • Province/State - set the default Province/State
    • Payment Methods - Canadian/USA spelling for cheque/check
  13. Merchant Account
  14. Patron Account's
    • Update the Master User and Web Listener patrons to be in the correct city/province with company name
  15. Rest Database Date and Time Stamps
    • Resets the data and time stamps on existing database records to the current date.
    • Purges any transactions in the database.
    • Prepares the database to make it appear like a first time use.
    • File >> Import/Export >> Company Settings >> Outlet Management >> Timestamps button

Create New Outlets

Creating a new outlet within an existing database:
  1. Download the most recent "client" database
  2. Restore the downloaded "client" database
  3. Log into the "client" database as the Master User
  4. Set the System Preferences
    • Licence - Update the Customer License number to include the Outlet Module
    • This process will automatically log you out of the database.
  5. If required, update the Daylite company profile with the new customer number (both primary and new outlet)
  6. Log into the "client" database as the Master User
  7. Using the Developer Tool for License Number creation, increase the 'Number of Department Licenses'
  8. If required, update the Daylite company profile with the new number of user licenses
  9. Create New Outlet (Setup >> Outlet Preferences)
  10. Initialize New Outlet with Values based on Existing Outlet (File >> Import/Export >> Outlet Settings >> Outlet Management >> Create Initial Outlet Settings). These will duplicate/create values based on the existing outlet's data. This is an OPTIONAL step, but it will save you a bunch of setup work if the values will be similar for the new outlet. The process will ask you if you wish to duplicate each section before it will duplicate the data.
    • Tax Rates
    • Code Tables
    • Ticket Faces
    • Chart of Accounts
    • Fee Types
    • Invoice Comments
  11. Create New Merchant Account (Setup >> System Tables >> Merchant Accounts) and assign it to the New Outlet. You can also duplicate an existing merchant account and assign it to the New Outlet. Note: This step needs to be completed BEFORE you will be able to create employees for the new outlet.
  12. Create New Marketing Records for New Outlet. When the new outlet was created, it created a job listing. These jobs need to be run via Setup >> Batch Functions >> Worker Jobs. Note: This step will take a while to complete and needs to be completed BEFORE you will be able to create employees for the new outlet.
  13. Create New Patron for Outlet Administrator (New Outlet)
    • First Name: {Outlet Name}
    • Last Name: Admin
    • Company: {Outlet Name}
    • Title: Outlet Administrator
    • Work Address: Do Not Mail
    • Work Phone: {Outlet Phone}
    • Marketing Flags: Do Not Mail, Email, and Delete
  14. Set Patron as Employee for Outlet Administrator (New Outlet)
    • Outlet Administrator: Yes
    • Access ID: admin_{Outlet Name}
    • Employee Initials: ADM{outlet#}
    • Initial Window: Patron Window
    • Transaction Source: Box Office
    • Merchant #: {Outlet Merchant Created Above}
    • Set Login Password
  15. Create New Patron for Web Services (New Outlet)
    • First Name: {Outlet Name}
    • Last Name: Web
    • Company: {Outlet Name}
    • Title: Web Services
    • Work Address: Do Not Mail
    • Work Phone: {Outlet Phone}
    • Work Email: tickets@{outlet email domain}
    • Marketing Flags: Do Not Mail, Email, and Delete
  16. Set Patron as Employee for Web Services (New Outlet)
    • Outlet Administrator: No
    • Access ID: web_{Outlet Name}
    • Employee Initials: WEB{outlet#}
    • Initial Window: Web Sales
    • Transaction Source: Internet Sales
    • Merchant #: {Outlet Merchant Created Above}
    • Set Login Password
  17. Update Existing Master User Patron for System Administrator
    • First Name: System
    • Last Name: Admin
    • Company: {Primary Outlet Name}
    • Title: System Administrator
    • Work Address: Do Not Mail
    • Work Phone: {Outlet Phone}
    • Marketing Flags: Do Not Mail, Email, and Delete
  18. Update Existing Master User Employee Account
    • Access ID: admin_system
    • Employee Initials: ADMS
    • Initial Window: Patron Window
    • Transaction Source: Box Office
  19. Using the Menu options, duplicate existing data for new outlet for:
    • Invoice Comments - only if you didn't duplicate them already or created the default set of comments
    • Sales Promotions (or have client start creating new Sales Promotions as they need them)
  20. Using the Menu options, export any existing data applicable for the new outlet:
    • Venue Maps
    • Venue Pricing Maps
    • Venue Pricing Map Seat Names
  21. Log out of database
  22. Log into database as the Outlet Administrator for the New Outlet
  23. Review Code Tables to assign 'default' values (Setup >> System Tables >> Code Tables >> Set Default button in toolbar)
  24. Using Developer Tools, remove any duplicate existing data for new outlet for:
    • Code Tables >> Facility Project Types
    • Code Tables >> Folder Names
  25. Using Menu options, Import any applicable data for:
    • Ticket Faces
    • Venue Maps
    • Venue Pricing Maps
    • Venue Pricing Map Seat Names
  26. Set default Sales Promotion (Setup >> Sales Promotion >> Set button in toolbar)
  27. Update Outlet Preferences
    • Ticket Faces >> Address Ticket
    • Ticket Faces >> Receipt Ticket
    • Web Options >> Enable Web Sales
    • Web Listener >> Set Employee ID for web sales
    • Appearance >> Volunteer fields #1, #2, #3, #4 (Hair Colour, Eye Colour, Vocal Range, Instrument)
    • Appearance >> Volunteer Flags #1, #2, #3, #4 (Dance, Sing, Act, Play Instrument)
    • Box Office >> Why did Patron Buy (for quick cash sales)
  28. Assign any existing employees who need access to the New Outlet as Employees of the New Outlet (Outlet Administrators or Normal)

May need to clear some values left behind if you've copied them over from the primary outlet:
update fTaxRates set tr_tax1_ca_seq=0, tr_tax2_ca_seq=0, tr_tax3_ca_seq=0, tr_tax1_def_ca_seq=0, tr_tax2_def_ca_seq=0, tr_tax3_def_ca_seq=0 where tr_d_dept_seq=2

update fFeeTypes set fee_amount=0, fee_active=TRUE, fee_auto_calculate=FALSE, fee_tr_Seq=0, fee_ca_Seq=0, fee_pb_seq_list='' where fee_d_dept_seq=2

Employee Information

An employee needs to be first added to the database as a patron, then it can be activated as an employee. Using the Patron Import process, it will do both steps at the same time. Refer to either information provided by the client as part of the data import for the listing of employees, or refer to the company's website for a listing of the current Staff Members.

Remember, within the data to be imported, it should contain a listing of employees who are currently working at the venue and has worked in the past. Do we import past employees? Yes we should. This way we can tag historical ticket sales, membership sales, donation sales to those employees if that reference is within the data. Just as historical data is important, having a listing of historical employees shows the completeness of data importing that Arts Management provides. It goes towards the 'extra step' that we do. Having employees imported during data conversion also allows the onsite trainer to 'move quicker' during the initial training as everyone has their own login ID, and less time is spent setting up employees on the first day when the goal is to introduce them to the application rather then 'how to setup employees'. This also avoids the initial discussions of user access and who gets what privileges - at least until later.

Employee Initials are important. If they are not provided in the import data, they will be created based on the employee first, middle and last name. If possible, define them within the import spreadsheet.

After importing the employees, it is recommended to review the initials and make them unique for each employee. This is not mandatory, however it does allow for more easy identification between the employees throughout Theatre Manager.

All employees import will be created with a user access level set as a 'Normal User

Initial password will be set as Tickets@123

Import Column Template: MKT_FIELD_1,gPatronType,E_INITIALS,C_FIRST_NAME,C_INITIAL,C_LAST_NAME,C_TITLE,gEmailWork,gPhoneWork,C_COMPANY,AD_ADDRESS1,AD_CITY,AD_PROVINCE,AD_POSTAL_CODE,AD_COUNTRY

Defaults: gPatronType = Staff Member

Venue Maps

Gather a listing of the various venue maps, physical locations, number of seats within each venue, and for reserved seating, a seating chart - clearing showing the different sections, row and seat names.

The venue map is something that will need to be created in Theatre Manager manually. As part of the import, refer to the client's website for a venue icon for TicketTrove along with a venue description that can be used.

The Best Seat Search - provide a default to allow the most choices for the patron. When the trainer is onsite, they can have the client review the seating options and make the necessary changes required.

Import Column Template: Logical Seat,Door,Section Name,Row Number,Seat Number,Price Codes,Seat Code,Seat Priority,Best Avail Area,Best Avail Index,Seat Note Use?,Seat Note,Seat View

For the Best Seat #, just number then sequential from top to bottom. When the trainer is onsite, they can have the client review the seating chart to determine exactly how they want the seats to be numbered for sale and make the necessary changes required.

G/L Accounts

G/L Account Columns: gType,CA_FULL_ACCT,CA_EXTERNAL_ACCT,CA_DESCRIPTION,CA_POSTING,CA_LEVEL

CA_FULL_ACCT = account number WITHOUT any dashes in it. If you add formatting to this field, the record will not be imported. Easiest to just import the CA_EXTERNAL_ACCT as a formatted field, and the import routine will set the CA_FULL_ACCT for you.

Account Types (gType)

  • 1, Asset
  • 2, Liability
  • 3, Equity, Capital
  • 4, Income, Revenue
  • 5, Cost of Goods
  • 6, Expenses
  • 8, Other Income, Other Revenue
  • 9. Other Expenses

Account Setting (CA_POSTING)

  • 0 = Detail - default value for new records
  • 1 = Posting

Reporting Level (CA_LEVEL)

  • 1 = default value for new records
  • 2
  • 3
  • 4

Unless specified, the External Account Number will default to the Account Number

Events and Performances

Gather a listing of the events and performances.

Event and Performance Columns: P_PLAY_YEAR,P_SHOW_CODE,PB_SHOW_CODE,P_PLAY_TITLE,PB_SERIES_CODE,PB_PERF_NOTES,PB_PERFORM_DATE,PB_PERFORM_TIME,gSalesMethod,gTax1Account,gAccount,gTaxRate,P_VE_SEQ,P_TM_SEQ,P_ACTIVE

To help create the Event Number for the Event Code, refer to the previous event code in the list:

  • Column A = Season Year
  • Column B = Event Title
  • Column C = Event Number (calculated by the following)
  • =IF(B2=B1,IF(A2=A1,C1,C1+1),C1+1)
  • Column D = Performance Date
  • Column E = Performance Time
  • Column F = Show Code [YY-99](calculated by the following)
  • =CONCATENATE(MID(A2,3,2),"-",IF(C2

To help create the Series Code, take the day of the week from the performance date.

  • =weekday(Date)
Returns the day of the week corresponding to a date. The day is given as an integer, ranging from 1 (Sunday) to 7 (Saturday), by default.
  • 1 = Sunday
  • 2 = Monday
  • 3 = Tuesday
  • 4 = Wednesday
  • 5 = Thursday
  • 6 = Friday
  • 7 = Saturday

or use the calcuation of:
=IF(WEEKDAY(G2)=1,"SUN",IF(WEEKDAY(G2)=2,"MON",IF(WEEKDAY(G2)=3,"TUE",IF(WEEKDAY(G2)=4,"WED",IF(WEEKDAY(G2)=5,"THU",IF(WEEKDAY(G2)=6,"FRI",IF(WEEKDAY(G2)=7,"SAT","error")))))))

gSalesMethod

  • Troupe [0]
  • Festival Seating [1]
  • General Admission [1]
  • Reserved Seating [2]
  • Consignment [3]
  • Inventory [4]
  • Auction [5]
  • Course [6]
  • Class [6]

gTaxCode

  • No Tax
  • GST 5%
  • HST 15%

For importing G/L Accounts, use the column titles of:

  • gAccount = Earned Single Ticket Revenue
  • gTax1Account = Deferred Ticket Revenue (optional)
  • gTax2Account = Earned Season Revenue (optional)
  • gTax3Account = Deferred Season Revenue (optional)
  • If gTax1Account is not provided, gAccount will be used for Deferred Ticket Revenue
  • If gTax2Account is not provided, gAccount will be used for Earned Season Revenue
  • If gTax3Account is not provided, gTax2Account will be used for Deferred Season Revenue
Note: Best to remove any dashes from the account number before importing

Change Outlet Number

Changing the Outlet Number within an existing database:

  • It is OK to be logged into the outlet that you are updating - when your running this routine, as it will force you back to the login window when the process has been completed.
  • Have all users and web services 100% logged out of the outlet you are updating.
  • This process will disable triggers one table at a time, as the table is updated.
  • If your running this in a live environment where other outlets still may be using the database, perform this function when there is no access to the database from users, or web sales (i.e. after midnight). Due to the fact that triggers are being disabled on a table while the table is being updated.
  • This routine is fairly fast but does depend on the hardware it's being run on. Running this process on a fully loaded server, a normal database may take anywhere from 30 - 60+ minutes to complete. On a large database (4 GB compressed backup), it may take anywhere from 10+ hours to complete.
  • 160MB compressed backup took 25 minutes (June 2015)
  • 455MB compressed backup took 60 minutes (June 2015)

Note: you will require remote access to the database via pgAdmin to execute 2 SQL commands to enable/disable a user access level (you will be prompted with the exact command during the process). Once just prior to running the process, and once again after the process has completed. The changing of the outlet number will still happen even without the enable/disable of the user access level, however it will just take longer to complete. The routine disables triggers from running on the updated table.

  1. Download the most recent "client" database
  2. Restore the downloaded "client" database
  3. Using the Developer Tool, Log into the "client" database as the Master User
  4. Reset Department Number (File >> Import/Export >> Outlet Settings >> Outlet Preferences)
  5. Enter in the FROM Outlet Number
  6. Enter in the TO Outlet Number
  7. Click "Reset Dept"

Donations

Campaigns

If the giving level matrix is already setup, then just pass in ONE of the columns for DC_GM_SEQ or GM_DESCRIPTION, it will link the campaign based on those fields.

If the giving level matrix is not created, it will create the giving level matrix based on the GM_DESCRIPTION field - this saves you from having to create them all first, then importing. It will create the giving matrix, then you can go back later and update the giving levels within the matrix.

If the gAccount number has not been created in the Chart of Accounts, the import routine will create it for you - this saves you from having to create them all first, then importing.

At a minimum, import DC_CAMPAIGN, gAccount, GM_DESCRIPTION - then you can go in and customize the donation campaigns to each of their own unique needs.

Do you need to create the campaigns before importing donations? No you do not. If the donation campaign does not exist during donation import, the donation import routine will create the donation campaign automatically based on these same fields.

Campaign columns: DC_CAMPAIGN,DC_DESCRIPTION_EXTERNAL,gAccount,DC_GM_SEQ,GM_DESCRIPTION,GM_SEQ,DC_NOTES

Pledges and Gifts

When preparing the import file for donation gifts, the key item that needs to happen is the proper mapping to the Patron Record. Identify that field and ensure that when the Patron record is imported, that the field can be used to map each donation gift to the patron.

Never delete any data. Just move the column to the far right of the spreadsheet, just in case you need to reference that data later. If there is any data in the end that looks like notes, comments, dates, or just references to other data, then move it into a notes field. This at least leaves a trail for the client to reference in the future if they need be.

Donation columns: MKT_FIELD_1,DD_FISCAL_YEAR,DD_PROGRAM_YEAR,DC_CAMPAIGN,gAccount,DC_GM_SEQ,DD_DONATION_DATE,DD_AMOUNT_PLEDGE,DD_AMOUNT_ACTUAL,PAY_TOTAL_PAID,gDonor1Field,gDonor2Field,gDonor3Field,DD_NAME_OF,gPaymentMethod,PAY_CARD_NO

Excel calc to determine fiscal year: =IF(MONTH(D2)>=5,YEAR(D2)+1,YEAR(D2))

Cleanup Steps

Items to Remove

  • $0.00 donations - unless you are doing prospects, then you need a base starting about. If so, set the to $1.00
  • Negative dollar donations - as these are invalid

Items to Keep

  • Keep the donation, even if you do not know who it belongs to. Assign it to a generic patron (i.e. House account) as later on after the data gets into Theatre Manager, the client may be able to track down who the donation really belongs to and transfer the order. Even if they do not, at least there is a historical record of 'something' coming into the organization in the form of a donation.

Donation Date

  • Make sure that there are NO future dated donations. Reset them to at least have a current date, or remove them from the import.
  • A future dated donation may mean that the data has not been entered into the accounting system and thus at year end, may not match Theatre Manager's data.
  • Check really old donation dates to make sure for accuracy. Showing just a 2 digit year is not good enough. Many donations may come across as 1903 instead of 2003; 1904 = 2004. Rule of thumb is anything prior to 1985 should really be reviewed closely as electronic record keeping prior to that is minimum.

Fiscal Year

  • Prior to determining the calculation for this field, you will need to know when the Fiscal Year start month and if they show the Year at the Beginning or at the End.
  • Sort the Donations by Date Donated and assign the Fiscal Year
  • Keep in mind, this fiscal is for financial reporting, not when to show the donation in the program. The fiscal year needs to be set into the proper year the donation was received.
  • If the donation is to appear for a different season or program year, use the Program Year field to set this.
  • If the donation is NOT paid for and there is a note about it being paid in a future year, you can set each Pledge Payment into a separate future Program Year.
  • Again, this field is tricky to set and all we can do is our best. Once the data has been imported, the client is able to go through and set them as they see fit. If there is a mass easy change that can be done, AMS Developers can quickly update this field after the data has been imported.

Program Year

  • The program year is a bit more harder to give an exact answer. If the data clearly defines it, then it is easy.
  • In most cases, it does not follow the fiscal year, as the donations leading up to the end of the fiscal year may indeed be for the next program year.

Program Name

  • Review the data and do not alter this information (unless to clean up). This is important information to know and should not be overlooked. It is critical that this information remain intact
  • Review the data and if there is information in a column to say this is an Anonymous donation, make this field say 'Anonymous'
  • If no program name is given, it will be set upon entry based on the information in the patron's marketing record for the default publication name, then in Company Preferences for the default setting based on the patron name.
  • HINT: If the word 'anonym' appears anywhere in the Donation Notes field, then the Program Name is set to be 'Anonymous' by the import routine. So if you miss setting it, there is another internal check. This is an important field to set.

Donation Use

  • This is an important field to track how the donation came into the organization
  • 1=Gift
  • 2=Donation with Ticket Sales
  • 3=Matching Gift
  • 4=Donation from Ticket Refund
  • 5=Internet Donation
  • 8=Soft Credit
  • 10=Prospect
  • 11=Soft Pledge
  • 12=Hard Pledge

Receivables

  • This is important to ask the client if all the donations about to be entered have been paid for in full.
  • If so, set the payment amount field to match the Donation Actual Amount column. Otherwise you will get Accounts Receivable amounts created.

Campaigns versus Funds

  • If both are supplied in the spreadsheet, which one gets Theatre Manager's Campaign (DC_CAMPAIGN) setting? Go review the Chart of Accounts listing. This will tell you how they want the donation revenue divided up. Theatre Manager's campaigns are based on the option to go to different General Ledger Accounts.
  • Place the other Campaign or Fund into a donation pop-up field.
  • Now even if you get it wrong and the client wants it changed later, we can using the assistance of the AMS Developer to run a routine that will switch the data around

End of Day and Posting

After the data has been imported its time to post the data to the accounting module.

Prior to starting:
  • Set the Fiscal Year month in company settings
  • Set sales promotions as either Regular, Season, Ticket Type 3, Ticket Type 4, or Ticket Type 5 to match the G/L Accounting setup for the event setup.

Deposits

Determine the Fiscal Year end date (i.e. May 31)

Create a deposit for each Fiscal Year end date. Do not selectively pick dates, nor just do a single massive deposit to get all the imported data deposited. This is a clear sign of sloppiness. Doing it accurately will allow possible analysis down the road of the year-by-year statistics of the accounting module.

Then when you hit the current year, do a deposit for each month end.

Then when you hit the current month, do a deposit for the date that the last payment was entered for.

The deposits should appear as the following if May 31 is the fiscal year end and the last payment imported was Sep 10th.

May 31 2001

May 31 2002

May 31 2003

May 31 2004

May 31 2005

...

...

May 31 2013

Jun 30 2013

July 31 2013

Aug 31 2013

Sep 10 2013

Trick: If you want to have multiple machines performing deposits at the same time add the following search query to allow only a selection of payments.

wDepositList.$buildSearchString

Do iQueryGroup.$loadSimpleQueryString('PAY_DATE_RECVD`>=`JUN 1 2001')

This will allow you to limit a selection of payments between a date range. In this example, it would be implied that MAY 31 2001 was then the year end date for the fiscal year and the deposit date would be set to MAY 31 2002. Thus, this deposit would get a range of JUN 1 2001 to MAY 31 2002.

Creating Transactions

Use the routine File >> Import/Export >> TIckets >> Create Transactions

This is a special menu option where it will create the transactions only. It does not create the sales entry at this time. This allows you to be creating transactions in the background while data import happens without it having any effect on the G/L. This is purely used as an efficient use of time to maximize the number of sessions/machines that you have available.

Trick: If you want to have multiple machines performing transaction creation as the same time, add the following search query to allow only a selection of data.

tF_PLAYSEATS.$journalizeTickets

Calculate exists as con(exists,' and ORD_DATE >= ',$ctask.tDatabase.$sqlDATE('JUN 1 2001'))

tfOrderFees.$journalizeOrderFees

Calculate exists as con(exists,' and ORD_DATE >= ',$ctask.tDatabase.$sqlDATE('JUN 1 2001'))

Donations - no need to worry about as their transactions are created at time of creation.

Memberships - no need to worry about as their transactions are created at time of creation.

Payments - no need to worry about as their transactions are created at time of creation.

Projects - not done at this time, but could update tProjectsJournalizeList.$journalizePersonnelAndResouces for the exists() portion of the search() string.

Sales Entry

Just start the process and let it run normally.

Posting

Post as normal.

Then run the following command to update the posting date of the imported data to set it to the final date of the imported data. As well, set all this data as already been exported - to avoid having to export out all this data in case they use this function later on.

update F_GL_HEADER set GL_DATE_POSTED='2013-09-10 17:00:00', GL_EXPORTED = TRUE

This will give the imported data a consistent date posted and a clean date based on the last date of imported data. As well, it provides a way to easily know what data was imported and a way to use the GL_DATE_POSTED field in reports if we need to exclude this data from the current years reports.

Cleaning Up

If you wanted to de-activate all imported sales promotions so the client can start with all new promotions and have the old promotions not appear in the event setup window:

update fSalesCodes set SC_ACTIVE = FALSE, SC_DATE_END='yyyy-mm-dd' where SC_PROMOTION_USE = 0

Adjustments

In case you missed setting the Sales Promotions into their correct designation of Regular, Season, Ticket Type 3, Ticket Type 4, or Ticket Type 5 - it's too late to easily go back and recreate all the G/L Sales Entries. In most cases as this is historical data anyway, its not too critical (unless of coarse it is current years data and effects deferred/earned season/regular revenue).

Here is an easy way to get all the Patron Statistics to get shown correctly which is more important for when the client goes and does a historical analysis of the patron's buying history.

update all the sales promotions correctly.

delete from fPatronStatistics

select postPatronStatistics(F_TRANSACTION,true,true) from F_TRANSACTION

alter sequence fPatronStatisics_cs_seq_key restart with 1

In case you imported performances for a future date, then the client didn't use the database and you need to go and set those future dated performances (which are now in the past) as rolled over or flagged as history.

update F_PLAYBILL set PB_GL_JOURNAL_NO_CODE='History', PB_GL_SEQ=-1 where PB_PERFORM_DATE

Gift Certificates / Passes

Pass Information

MKT_FIELD_1,ORD_PO_NUMBER,MT_DESCRIPTION,M_FISCAL_YEAR,M_DATE_RENEWED,M_DATE_EXPIRY,M_PURCHASE_AMOUNT,M_CONTROL_NUMBER,M_ISSUED_PASS_AMOUNT,M_REMAIN_PASS_AMOUNT,M_ISSED_PASS_QTY,M_REMAIN_PASS_QTY,M_NOTES,gPaymentMethod,PAY_CARD_NO,PAY_DATE_RECVD,PAY_TOTAL_PAID,I_ORD_REASON_BUY_RESULT,ORD_NOTES

Pass Types

Merge Databases into Separate Outlets

Merging a Theatre Manager database within an existing Theatre Manager database retaining separate Outlets:

  • It is OK to be logged into the outlet that you are updating - when your running this routine, as it will force you back to the login window when the process has been completed.
  • Have all users and web services 100% logged out of the outlet you are updating.
  • This process will disable triggers one table at a time, as the table is update.
  • If your running this in a live environment where other outlets still may be using the database, perform this function when there is no access to the database from users, or web sales (i.e. after midnight). Due to the fact that triggers are being disabled on a table while the table is being updated.
  • This routine is fairly fast but does depend on the hardware it's being run on. Running this process on a fully loaded server, a normal database may take anywhere from 5 to 10+ minutes to complete. On a large database (4 GB compressed backup), it may take anywhere from 15 to 30+ minutes to complete.

Timeline of Action Events

  1. Secondary Database Location
    1. Update your website to let people know web sales is offline for system upgrades.
    2. Web Sales come off line, all workstations quit using Theatre Manager & log off all Terminal Services sessions
    3. Box offices complete their EOD processing, run reports, etc.
    4. Box Office workstations quit Theatre Manager, and log off all Terminal Services sessions
    5. Backup Secondary Database
    6. Transfer Secondary Database to Primary Database Location
  2. Primary Database Location
    1. Restore Secondary Database
    2. Backup Primary Database
    3. Set Secondary Database's Outlet Number
    4. Update Secondary's Database Sequence Numbers
    5. Export Secondary Database
    6. Import Secondary Database
    7. After Merge has completed

      1. Access to Theatre Manager’s merged database for key people to review data
      2. Once review is completed by key people
        1. allow box office to use the database
        2. bring web sales online (via Theatre Manager >> Company Preferences >> Web Options)
        3. review web sales online appearance
          • make adjustments to Theatre Manager’s code table values as required
        4. once given the go ahead for web sales
          1. update your website to let people back having access to the ‘buy tickets’ buttons.

        Reset the "Secondary-Client" Outlet Number - Set the Outlet number to be what you would like the Outlet number to be in the final merged database

        1. Download the most recent "Secondary-Client" database
        2. Restore the downloaded "Secondary-Client" database
        3. Using the Developer Tool, Log into the "Secondary-Client" database as the Master User
        4. Reset Department Number (File >> Import/Export >> Outlet Settings >> Outlet Preferences)
        5. Enter in the FROM Outlet Number
        6. Enter in the TO Outlet Number
        7. Click "Reset Dept"
      3. Make a backup of the "Secondary-Client" database
      4. Download the most recent "Primary-Client" database
      5. Restore the downloaded "Primary-Client" database
      6. Reset the "Secondary-Client" Sequence Numbers - Sets the Sequence numbers for every table and connecting child records to be different then what is in the "Primary-Client" database

        1. Using the Developer Tool, Log into the "Secondary-Client" database as the Master User
        2. Reset Database xxx_SEQ Values (File >> Import/Export >> Outlet Settings >> Outlet Preferences)
        3. Click "Merge DB"

Patron Information

The main goal is to get a consistent look to the imported data. Make the data look pretty and stand out as quality data shining in the application. Fill in empty spots; move data from incorrect or general notes fields, into Theatre Manager's specific named fields. The patron data should be referred to as 'gold' as it takes quality names and contact information to nurture and grow the patron's desire and need to keep returning to the venue over and over again.

This is where Theatre Manager's CRM module stands out. It all starts with clean, clear, and consistent data.

Cleanup Steps

Clear Contents of NULL Cells

  • Sort each column of data in ascending order. The first cell should contain valid data. If the first set of cells are blank, select them all and clear the contents to force them to blank. Exports of data create NULL cells of data, they appear blank, but they really are not.
  • Select the cell(s); Right-Click; Clear Contents

Missing Columns

  • There will be times where there may be missing columns of data. For example: Company Name, Patron Type, Patron Salutation. It is normal. Manually add in the extra columns that are needed to properly separate the data into their own elements.

First Name

  • Sort the column and move all Dr., Mr. Mr. & Mrs., Ms., Capt., Rev., Father, Sister, etc. into the Salutation Column.
  • Review how they show the patron spouse connectors. Do they use the 'and' or do they use the '&' symbol. If they are consistent with one of them, set this setting in Theatre Manager's System Preferences settings. If they do not use any consistency at all, use the '&' symbol.
  • Move any Company Names into the Company Name field.
  • HINT: There is no need to alter this 'and' or '&' setting in the import file. During the import process, Theatre Manager will automatically set it based on whatever is in the System Preferences settings.
  • HINT: If the first name field contains the first and last name of a patron, there is no need to split it apart. Theatre Manager will automatically split it into the proper fields during the import process. But you MUST supply a column title for the Patron Last Name, even if it is an empty column otherwise the last name will be lost during import on the name split. Best to also supply the Patron Initial column too to allow the name to be split properly.
  • Exception: if the first name field is Mary Anne Jones, then it will place the First Name as Mary, Middle Initial as Anne, and Last Name as Jones. In this case if you wish to have it show 100% correctly, splitting of the name into the proper fields should be done manually so that the First Name is Mary Anne and the Last Name is Jones.

Initial and/or Middle Name

  • Hint: There is no need to remove the trailing period from the middle initial. Theatre Manager will remove the trailing period upon import.

Last Name

  • Move any Company Names into the Company Name field.
  • Hint: Sort the list by First Name and by Last Name. At the bottom of the list, it will show you all records missing a first name which typically could be all the records that have the Company Name located in the Last Name field.

Nick Names or Greetings

  • These should be imported into Theatre Manager's Patron Greeting Field (C_NICK_NAME).
  • Hint: If the field is blank or not supplied, Theatre Manager will define this field based on the settings in Company Preferences.

Formal Name

  • If a Formal Name is provided, sort this column and review it for all the salutations at the beginning of the field. Verify the salutation used in the Formal Name column and UPDATE the Patron Salutation column if it is blank to match what the salutation is in this column.
  • Using search/replace, adjust all salutations in this column to be consistent.

Address Lines

  • There is a maximum of 2 lines. If need be, combine the data into either of 2 columns, or split long addresses into the Address Line 2 column.
  • Move any ATTN from other fields into the Address Line columns.
  • Multiple addresses can be imported, however you will require the assistance of the AMS Developer to use the CustomOverrideRoutines to accomplish this.

City

  • Sort by the City name column then review all the city's and copy/paste in the correct spellings. It only takes a bit of time, however this is the best time to fix up historical mistakes in a mass correction.

State/Province

  • Sort by the State/Province column then review all the States/Provinces and copy/paste in the correct spellings. It only takes a bit of time, however this is the best time to fix up historical mistakes in a mass correction.
  • Verify and correct all States/Provinces into a 2 character designations.
  • If a State/Province is missing, none will be assigned automatically during import.
  • If a State/Province is missing and it is obvious based on the City Name, then update the record to have the correct information.
  • If a State/Province is incorrect based on the City Name, then update the record to have the correct information. (Historical mistakes and/or data entry where there was less attentiveness to accuracy.)
  • Hint: No need to change to the 2 character State or Province code. If the long version of the State/Province is supplied and spelled correctly, the 2 character representation will be used fro the designation when the data is saved back to the database.

Zip Code/Postal Code

  • Sort by the Zip/Postal Code field and review the data to update the Country Field based on if it is a Zip Code or Postal Code.
  • If there is a separate column for the 4 digit Zip + 4 setting, merge this column with the Zip/Postal Code column to create a single import column.
  • Hint: No need to add or remove the dash for a Zip + 4 column. The import routines will add/remove as required.

Country

  • Move all indicators to the Country Field for addresses that are USA, Canada, Japan, Germany, etc. and remove them from the field where you located it.
  • Make sure that all countries are valid and exist in the Country Code Table.
  • NOTE: If the country field is empty on import, it will default to the Company's country as defined in Company Preferences. This may be correct or incorrect for some patron addresses. It is best if the Country (even if the column needs to be added to the import file) is assigned to each patron's record to ensure accuracy.
  • Hint: When sorting the State/Province, you are able to determine the Country by the State/Province.
  • Hint: When sorting the Zip/Postal Code, you are able to determine the Country by the Zip/Postal Code format.

Marketing Fields, Do Not Mail, Deceased Flags

  • If you notice this data in a notes, address, or another column, create a new column and set the data so that it goes into the right data field in Theatre Manager.
  • Set the Do Not Mail-Patron if you find a 'do not mail' indication.
  • Set the Do Not Mail-Venue if you find a 'wrong address or moved' indication.
  • Set the Deceased if you find a 'deceased or died' indication.

Phone Numbers and Email Address

  • Each contact must go into its separate column.
  • The primary phone number or email address will be assigned to the first phone number imported for that patron. This means that the column sequence order is important for the phone numbers. Have the patron's home, work, then cell phone numbers in that order to avoid having the Cell (or Other) phone number set as the primary contact number when really it should be the Home Phone.
  • Move all comments from the phone numbers (i.e. not sure if this number is correct) into the Patron's Marketing Notes column.
  • Using search/replace, set all phone number extensions (Ext., #, extension) to be a consistent value of 'x'.
  • If there is a separate column for the phone number Extension setting, merge this column with the Phone Number column to create a single import column.
  • Hint: No need to set the formatting of phone numbers, the import process will clean up all phone numbers and standardize their setting upon import.
  • Hint: If you notice there are many phone numbers without area codes, it is recommended that in System Settings, that you turn OFF the requirement that Area Codes are mandatory. This way, phone numbers do not get imported as "(123) 4-567" and they go in as "123-4567". After the import, you can go back and turn ON this requirement.
  • if there are other types of phone numbers (Summer, Winter, Former, Vacation), these can be imported accordingly using the CustomImportRoutine overrides. Refer to an AMS Developer for assistance.
  • Do you need to manually go through and remove duplicate phone numbers? If they are for different patrons, then no. Patron Merging will clean this up. If they are for the same patron account, then yes. - OR - ask a AMS Developer for assistance as there is a quick routine that can be run to purge all duplicated phone numbers for a patron that were imported.

Email Address

  • Separate out multiple email addresses into their own separate columns.
  • Ensure that any website URL addresses (addresses that begin with a www prefix) are moved to the gWebsite column
  • Do you need to manually go through and remove duplicate email addresses? If they are for different patrons, then no. Patron Merging will clean this up. If they are for the same patron account, then yes. - OR - ask a AMS Developer for assistance as there is a quick routine that can be run to purge all duplicated email addresses for a patron that were imported.

Mailing Lists

  • Hint: no need to alter a column of mail lists if they are comma delimited within the row. The import routine will automatically separate comma delimited names. If they are delimited by another method, (i.e. semi colon, space, hypen), the import routine can be changed OR just do a search/replace to set the name separator with a comma.
  • No need to combine into a single column. 16 different columns can be imported at the same time to create mailing lists.
  • If you have more them 16 columns of mailing lists, import the first 16 when the patron record is created, then import the remaining columns using the Patron Mailing Lists import option.

Default Solicitors

  • Default Solicitors must be entered in as Patrons first. Assign those default solicitor accounts a unique Import ID#. Then those patron's records need to be imported using the Patron Employee Import process. Then using the customImportOverride routines for updating the Patron Marketing Fields, the link to those solicitors can be made.
  • If you are thinking in advance, import the Employee records first, so that when importing the patron records, the solicitor association can be made at the same time. This will save import steps and time.

Patron Salutation

  • In many situations, this field is set towards the end of the file cleanup. With the data cleanup, you should have moved and/or copied the salutation from other fields (ie. first name, greeting, formal name, Donor Publication Name).
  • It is very important that this field be consistent and correct prior to import. Sort by the list and set the field for proper spelling and punctuation.
  • Set all 'and' connectors to become '&'.
  • Hint: During import, if the Patron Salutation does not exist in the Code Table values, this value will automatically be added for you.

Patron Type

  • In many situations, this field is set towards the end of the file cleanup. With the data review, you now have the ability to see how to properly populate the gPatronType column with Individual, Company, Foundation, Staff, Supplier, etc.
  • Note: During import records flagged as type Individual will have their Address Location assigned as 'Home'. All other patron types will have their Address Location assigned as 'Work'.
  • Hint: During import, if the Patron Type does not exist in the Code Table values, this value will automatically be added for you.
  • Default the column value to Individual for all records.
  • Sort by first name, last name, company name. All those with no first and last name, assign as Company.