I am currently testing the upgrade path for SugarCRM 6.5.25 → SuiteCRM 7.x → SuiteCRM 8.9.1 and have come across a strange relationship issue with the Campaigns and Prospects (Targets) module.
A custom one-to-one relationship was defined to allow setting a campaign for individual targets. I understand the core logic is to use target lists for campaigns, however this was set up before I was tasked with upgrading the instance.
The issue this is causing in SuiteCRM 8.9.1 is that when viewing the list view of the campaigns module, instead of 132 campaigns displaying as they would in SugarCRM, We now see 53,270 campaigns, the vast majority of which are duplicate records that point to the same id. This is also the case for all of the modules that use the campaign relate field, so searching for a campaign to relate to the record is impossible.
My question to everyone is, is there a way to prevent the list view, and related module relate fields, from displaying all the duplicates? I cannot remove the relationship as this would remove important data that is reported on.
Here is the relationship info:
Here is the PHP definition:
<?php
// created: 2025-12-30 18:46:58
$dictionary["prospects_campaigns_1"] = array (
'true_relationship_type' => 'one-to-one',
'from_studio' => true,
'relationships' =>
array (
'prospects_campaigns_1' =>
array (
'lhs_module' => 'Prospects',
'lhs_table' => 'prospects',
'lhs_key' => 'id',
'rhs_module' => 'Campaigns',
'rhs_table' => 'campaigns',
'rhs_key' => 'id',
'relationship_type' => 'many-to-many',
'join_table' => 'prospects_campaigns_1_c',
'join_key_lhs' => 'prospects_campaigns_1prospects_ida',
'join_key_rhs' => 'prospects_campaigns_1campaigns_idb',
),
),
'table' => 'prospects_campaigns_1_c',
'fields' =>
array (
0 =>
array (
'name' => 'id',
'type' => 'varchar',
'len' => 36,
),
1 =>
array (
'name' => 'date_modified',
'type' => 'datetime',
),
2 =>
array (
'name' => 'deleted',
'type' => 'bool',
'len' => '1',
'default' => '0',
'required' => true,
),
3 =>
array (
'name' => 'prospects_campaigns_1prospects_ida',
'type' => 'varchar',
'len' => 36,
),
4 =>
array (
'name' => 'prospects_campaigns_1campaigns_idb',
'type' => 'varchar',
'len' => 36,
),
),
'indices' =>
array (
0 =>
array (
'name' => 'prospects_campaigns_1spk',
'type' => 'primary',
'fields' =>
array (
0 => 'id',
),
),
1 =>
array (
'name' => 'prospects_campaigns_1_ida1',
'type' => 'index',
'fields' =>
array (
0 => 'prospects_campaigns_1prospects_ida',
),
),
2 =>
array (
'name' => 'prospects_campaigns_1_alt',
'type' => 'alternate_key',
'fields' =>
array (
0 => 'prospects_campaigns_1campaigns_idb',
),
),
),
);
