@Erick L
When you said "jump to other cells" I wasn't
sure if you meant other racks or just other cells in the same rack, but here's
solutions to both in case you want them:
Stopping Cranes From Picking from other Racks
In your process flow under "Pallet Creation"
you had 4 blocks in which pallets were pulled from a main list and added to
lists based on which rack they were going into. The problem you had here
was that it was picking any pallet from the main list, not the pallet that just
entered the conveyor. The result was that a pallet could be in rack 1 but
on the list for rack 4. I was able to resolve this by giving the item
arriving at the conveyor a label called "Item":

Then, I set the "Pull from List" activity to
choose the pallet on the list that matches token.Item

(When you pushed the token to Incoming Pallets, the
reference to the pallet was called "pallet". Also,
"puller" refers to the token that is pulling from Incoming Pallets)
I did this for each of the four blocks and it works
just fine now.
Stopping Cranes From Picking from Other Cells Before
Finishing a Pallet
If you want the Crane to pick up all the layers off a
pallet and pick up the pallet itself before moving on to another pallet, you
need to make sure that another process flow won't acquire the crane before it
is done. This can be fixed easily by having the crane be acquired before
starting to pick layers on a pallet, and then releasing the crane after the
pallet is empty and the pallet has been moved to the conveyor. No need to
acquire and release the crane before and after each layer.
I also noticed that crane 3 was unloading Layer4 at the wrong conveyor and fixed that.
Here's your model with both of those fixes: gantryflexsimquestionanswer.fsm