The first time an object is animated a ‘zero’ keyframe is installed at tick 0. In the ‘zero’ keyframe a zero value is set for the concerning transformation (like position, rotation etc…). Hence the transformation starts at tick 0. A copy of this zero data in a keyframe further on in the timeline will make the transformation start later.
So for an element to rotate first and the move afterwards you need 3 different keyframe as illustrated in the small blue cube in this demo model Chris.3dm (174.7 KB).
The core lies in the middle one. The zero data for ‘Position’ keeps keeps the object steadfast during rotation.
BUT… a more logic and elegant way is to use Hierarchical linking to connect the various parts, like is done for the black cubes.
The small cube is made ‘child’ of the big one. This makes the little one (child) follow every transformation of its parent (it ‘inherits’ the transformations of the parent). But … by its own keyframes it can move rotate etc relative to its parent – during, previous or after the translation of the latter depending on the positioning of the keyframes.
Advantage = flexibility. When i.e. you want an extra transformation of the ensemble (i.e. a slide down) only the keyframe of the big (parent) cube needs editing but not the keyframes of every single part.
PS Allow me a remark on your model. When a ‘Group’ of objects is animated every single object in the group gets a pivot and animation data, which can get annoying for the CPU. It is better to make a ‘Block’ of the elements (i.e. for your “handle” parts). One Block = one pivot = one set of data.