Announcement

As of April 17, 2018, this site is now in read-only mode. To start new Blackbaud Developer’s discussions, you will find Developer Discussions in the Blackbaud CRM Community.

To post or respond to Blackbaud Community discussions, you will have to login using a www.blackbaud.com login. Learn how to login here. If you have questions or need assistance, please email community@blackbaud.com.

1.7k questions

3.2k answers

401 users

Categories

1.7k questions

3.2k answers

401 users

I have two overlapping projects that I would like to be able to deploy separately that are dependent on the same objects. If I include the objects (tables)creation in both projects, will the platform check to see if the object already exists before doing a drop/create. I don't want to drop the tables once they have been populated so I just need to know whether the objects will not be dropped if they haven't been altered. Thanks in advance.

asked by https://www.google.com/accounts/o8/id?id=AItOawl9s (192 points)

2 Answers

 
Best answer

This should be OK as long as both table specs have the same ID (GUID) and identical table definitions. I think you'll get an error trying to load a table spec with a different ID for a table that already exists.

I would be careful about keeping both table specs in sync. For example, the below scenario could lead to data loss:

  1. Add new column to table spec A but not table spec B
  2. Load table spec A
  3. Add some data to new column in table spec A
  4. Load table spec B

Loading table spec B would drop the column from the table and you would lose any data from that column. This would also break any features relying on the new column.

An alternative approach would be to only keep the table spec in one of the projects and make sure that it gets loaded before any dependent objects. However, this may not work in your specific circumstances.

answered by ronfrum (867 points)
selected by https://www.google.com/accounts/o8/id?id=AItOawl9s

The platform does check to see if the object already exists. And, it checks to see if changes appear in the spec (e.g., TableSpec). If no changes exist in the spec, then no changes are made to the object.

You could create a third project that contains your dependent objects. This project would be loaded before either of the existing projects. Then, you can control when it's appropriate to deploy the dependent objects.

answered by bobstefkovich (580 points)
...