there's a bunch of ways to do this, so I'll just state the most direct one. Create a second fsm on your scroll with an empty start state and a second state, not connected to the start state, which is triggered by a global event, like "pickup". For a scroll, this state would contain something like:
get rotation (camera) = CameraVector3
set rotation (scroll) = CameraVector3
set parent (scroll) = camera
set position (scroll) self = 0/0/1
Now the set position self means that you can offset it on one axis to be readable by the camera. 0/0/0 would be the position of the camera.
You can just make a practice out of having this FSM on every object, and then change the content of the pickup state according to what it is you're picking up. So by default whenever you're character controller is triggering something, it will take that object and send the pickup event and every objet will react to it out of the box. No setup needed.