There can be many different scenario (combination) of Handover with Carrier Aggregation. I will start with the simplest case, but recently I am seeing various requirement to reduce the number of steps for Handover (e.g, PCC handover and adding SCC in a single RRC Connection Reconfiguration etc). The four cases below differ only in how much of that work is packed into one message. The last section on this page says what 36.331 allows, because the specification settles the question the fourth case leaves open.
- Case 1 : Remove SCC before Handover, then HO for PCC, then Add SCC
- Case 2 : Remove SCC and Handover for PCC in single step, then Add SCC
- Case 3 : Remove SCC before Handover, then Handover for PCC and Add SCC in a single step
- Case 4 : Remove SCC, HO for PCC, Add SCC all in single step
- What 36.331 says about these four cases
- Reference
Every diagram on this page uses the same six lifelines. Four of them are cells, eNBPCC1, eNBSCC1, eNBPCC2 and eNBSCC2, and the two on the right are the UE seen from each of its two carriers, UEPCC and UESCC. A solid blue arrow is an RRC message, a dashed blue arrow is a MAC control element, and a green horizontal line marks a carrier that is carrying data.
Case 1 : Remove SCC before Handover, then HO for PCC, then Add SCC
Probably one of the simplest case of scenario we can think of would be as follows (By 'the simplest case', I mean it is the simplest in logic (the easiest to understand/implement), it didn't mean that it is the simplest in terms of the number of protocol sequence. Actually, it requires the longest steps in terms of protocol sequence). As you see here, just PCC has been changed as final result of Handover. In this scenario, Network remove SCC first before Handover and perform PCC handover and then add SCC again.
The sequence below is the longest of the four. Nothing is combined: the secondary carrier is deactivated and released, the handover runs on its own, and only then is a secondary carrier added again.

< Case 1 : twelve steps, nothing combined >
Case 2 : Remove SCC and Handover for PCC in single step, then Add SCC
The first saving comes from putting two instructions in one message. The handover and the release of the secondary carrier travel together, which removes one reconfiguration and one complete from the exchange.
The sequence below is the shorter one. Read it against the diagram above, because the only difference is at the start.

< Case 2 : ten steps, release and handover combined >
Step 3 - RRC Connection Reconfiguration for Handover to PCC2 and Release SCC1
The decode below is that combined message. Two branches carry the whole of it: mobilityControlInfo near the top, which is what makes the message a handover, and sCellToReleaseList-r10 at the very bottom.
The block below is decoder output, not specification text. It records one message as one network sent it, and no value in it has been corrected against a later release.
c1: rrcConnectionReconfiguration (4)
rrcConnectionReconfiguration
rrc-TransactionIdentifier: 0
criticalExtensions: c1 (0)
c1: rrcConnectionReconfiguration-r8 (0)
rrcConnectionReconfiguration-r8
mobilityControlInfo
targetPhysCellId: 10 // Physical Cell ID of PCC2
carrierFreq
dl-CarrierFreq: 2300 // DL Channel Number of PCC2
carrierBandwidth
dl-Bandwidth: n50 // Bandwidth of PCC2
t304: ms1000 (5)
newUE-Identity: 1032 [bit length 16, 0001 0000 0011 0010 decimal value 4146]
radioResourceConfigCommon
prach-Config
rootSequenceIndex: 64
prach-ConfigInfo
prach-ConfigIndex: 3
...0 .... highSpeedFlag: False
zeroCorrelationZoneConfig: 2
prach-FreqOffset: 19
pusch-ConfigCommon
pusch-ConfigBasic
n-SB: 1
hoppingMode: interSubFrame (0)
pusch-HoppingOffset: 0
.0.. .... enable64QAM: False
ul-ReferenceSignalsPUSCH
..0. .... groupHoppingEnabled: False
groupAssignmentPUSCH: 0
0... .... sequenceHoppingEnabled: False
cyclicShift: 0
pucch-ConfigCommon
deltaPUCCH-Shift: ds2 (1)
nRB-CQI: 4
nCS-AN: 6
n1PUCCH-AN: 0
ul-CyclicPrefixLength: len1 (0)
rach-ConfigDedicated
ra-PreambleIndex: 63
ra-PRACH-MaskIndex: 0
radioResourceConfigDedicated
physicalConfigDedicated
pusch-ConfigDedicated
betaOffset-ACK-Index: 9
betaOffset-RI-Index: 6
betaOffset-CQI-Index: 6
antennaInfo: explicitValue (0)
explicitValue
transmissionMode: tm1 (0)
ue-TransmitAntennaSelection: release (0)
release: NULL
schedulingRequestConfig: setup (1)
setup
sr-PUCCH-ResourceIndex: 41
sr-ConfigIndex: 27
dsr-TransMax: n32 (3)
securityConfigHO
handoverType: intraLTE (0)
intraLTE
.... 0... keyChangeIndicator: False
nextHopChainingCount: 0
nonCriticalExtension
nonCriticalExtension
nonCriticalExtension
sCellToReleaseList-r10: 1 item
Item 0
SCellIndex-r10: 1 // Serving Cell Index of SCC1
Step 7 - RRC Connection Reconfiguration for adding SCC1
The decode below is the message that adds the secondary carrier back. It carries no mobilityControlInfo, so it is an ordinary reconfiguration rather than a handover.
A second capture, again left exactly as it was recorded.
c1: rrcConnectionReconfiguration (4)
rrcConnectionReconfiguration
rrc-TransactionIdentifier: 0
criticalExtensions: c1 (0)
c1: rrcConnectionReconfiguration-r8 (0)
rrcConnectionReconfiguration-r8
radioResourceConfigDedicated
mac-MainConfig: explicitValue (0)
explicitValue
timeAlignmentTimerDedicated: infinity (7)
mac-MainConfig-v1020
physicalConfigDedicated
cqi-ReportConfig-r10
cqi-ReportAperiodic-r10: release
nomPDSCH-RS-EPRE-Offset: 0dB (0)
pucch-ConfigDedicated-v1020
pucch-Format-r10: channelSelection-r10 (1)
channelSelection-r10
n1PUCCH-AN-CS-r10: setup (1)
setup
n1PUCCH-AN-CS-List-r10: 2 items
Item 0
N1PUCCH-AN-CS-r10: 4 items
Item 0
N1PUCCH-AN-CS-r10 item: 101
Item 1
N1PUCCH-AN-CS-r10 item: 102
Item 2
N1PUCCH-AN-CS-r10 item: 103
Item 3
N1PUCCH-AN-CS-r10 item: 104
Item 1
N1PUCCH-AN-CS-r10: 4 items
Item 0
N1PUCCH-AN-CS-r10 item: 105
Item 1
N1PUCCH-AN-CS-r10 item: 106
Item 2
N1PUCCH-AN-CS-r10 item: 107
Item 3
N1PUCCH-AN-CS-r10 item: 108
nonCriticalExtension
nonCriticalExtension
nonCriticalExtension
sCellToAddModList-r10: 1 item
Item 0
SCellToAddMod-r10
sCellIndex-r10: 1
cellIdentification-r10
physCellId-r10: 400
dl-CarrierFreq-r10: 5790
radioResourceConfigCommonSCell-r10
nonUL-Configuration-r10
dl-Bandwidth-r10: n50 (3)
antennaInfoCommon-r10
antennaPortsCount: an1 (0)
phich-Config-r10
phich-Duration: normal (0)
phich-Resource: oneSixth (0)
pdsch-ConfigCommon-r10
referenceSignalPower: 18dBm
p-b: 1
radioResourceConfigDedicatedSCell-r10
physicalConfigDedicatedSCell-r10
nonUL-Configuration-r10
antennaInfo-r10
transmissionMode-r10: tm1 (0)
ue-TransmitAntennaSelection: release (0)
release: NULL
pdsch-ConfigDedicated-r10
p-a: dB0
Case 3 : Remove SCC before Handover, then Handover for PCC and Add SCC in a single step
The second saving merges a different pair. The release keeps its own message, and the handover instead carries the instruction that adds a secondary carrier at the target.
The sequence below is ten steps again, but the pair it merges is a different pair. Compare the label on step (5) with the label on step (3) of the Case 2 diagram.

< Case 3 : ten steps, handover and addition combined >
Case 4 : Remove SCC, HO for PCC, Add SCC all in single step
Personally I haven't seen any real implementation for this case and haven't confirmed in 3GPP specification in detail, but just by logical point of view we can think of following scenario as well.
The sequence below merges both pairs at once. It is the shortest of the four, and the one the paragraph above is unsure about.

< Case 4 : eight steps, all three combined >
What 36.331 says about these four cases
The fourth case is the one the page leaves open, and 36.331 answers it directly. The handover procedure in the specification handles both lists itself, so a single message may release one secondary carrier and add another while it moves the primary.
Reference
One specification settles every question this page raises. It was resolved at v19.3.0, which is the latest published version at the time of writing.
- 3GPP TS 36.331 v19.3.0, E-UTRA Radio Resource Control protocol specification. Clause 5.3.5.4 for the handover procedure, clause 5.3.5.9 for conditional reconfiguration, and the MobilityControlInfo, SCellToAddMod-r10 and CondReconfigurationAddMod-r16 information elements.