2012 Enclave:
Had P0023 CEL (also had P2099, P0430) engine chugging slightly in OD. Finally SOLVED it by replacing VVT Solenoid
Amazon VVT Solenoid I used
Cause: I think VVT solenoid plastic cap/connector was cracked when I recently replaced alternator. Could not figure out CEL solution & went through a few weeks of replacing stuff to no avail - WAS NOT my Cat, O2 sensors, Cam Position Sensor, etc. .....VVT Solenoid replacement fixed it.
Steps overview: Move overflow tank>remove fusebox>remove fusebox baseplate>remove motor mount>replace sensor><<<
In an attempt to address codes, first replaced Camshaft Position Sensor (see steps below if you need to replace camshaft position sensor - camshaft sensor wasn't my ultimate problem but steps/location are similar for VVT Solenoid) but didn't get rid of codes so I replaced VVT solenoid (got desperate not being able to find problem so decided to electrical test VVT solenoid - cracked off in my hands when trying to unplug connector to test - thinking I damaged VVT sol cap/connector when replacing alternator). Also used liquid electrical tape to reseal connector wires as they were pulled back from connector 1/8" and showing bare wire - still showed continuity though when tested (must have pulled on wire/connector when replacing alternator).
Note: you do not need to remove radiator hose to replace camshaft position sensor or VVT solenoid.
Documenting my wasted efforts for your entertainment:
Did all the following and didn't solve it...ugh: Replaced the Camshaft position sensor & bank 2 lower O2 Sensor (didn't solve). Bank 2 exhaust is located just to the left of the Oil fill cap (near top of engine). Unfortunately, it is hidden behind a ton of stuff that needs to be removed to get to it. Heres what it took: Detach negative battery cable from battery. Remove10mm holding ac line near top front. Remove (2) 10mm holding overflow tank (move aside). Remove Fusebox cover. Loosen (2) phillips 10mm bolts (holding fuse wire harness) inside fusebox. Remove (1) 13mm bolt connecting positive battery terminals to fusebox. Unclip and remove fusebox middle part (with fuses) removing wire harness from bottom. Unclip/remove fusebox bottom. Remove (3) 10mm fusebox aluminum baseplate. Unclip wire harnesses from baseplate. Remove (2) 15mm engine mount bolts (holding rubber figure 8 mount). Slide rubber figure 8 mount out sideways. Remove (2) 18 mm bolts from part of mount that bolts directly to engine. Remove (1) 10mm camshaft position sensor bolt. Remove sensor. Detach sensor wire clip. Reverse to replace everything. Lots of parts to remove - it wasn't that bad once I figured it all out but just a lot of little maneuvering to get such a small part out. I would give yourself 1.5 hours (or more) to remove and 1.5 hours to replace. This same/similar procedure can be used to get to the alternator on this car also but I'd also remove radiator hose for alternator and plastic shroud for alternator.
Search some youtube videos for some guidance.