yes you need to create a quest with alias(es)
if you need more than one at a time, create more than 1 alias.
create a blank quest, name it, select all your necessary flags etc, and select ok to save it. re-open it and create your aliases.
each alias should be set to forced ref (specific), and set to a value of None (do not specify an actor). check the "optional" flag
you can then add whatever packages, inventory, etc.
attach your script to the alias (this script must extend ReferenceAlias)
in your original script that calls the placeatme, you need to send JohnDoeRef to one of the aliases
JohnDoeAlias1.ForceRefTo(JohnDoeRef)
(if you have a ton of these, you may want to streamline your function to be able to be re-used with multiple aliases via an array or whatever)
since the filled alias' script is a referencealias script, you need to adjust your syntax for referring to actor functions.
to grab an alias' actor use GetActorRef()... so JohnDoeAlias1.GetActorRef().DoSomeActorFunction() would be the equivalent of JohnDoeActor.DoSomeActorFunction() on a script that extends Actor
just note, that since GetActorRef() is a function call, it is not recommended to use it repeatedly, just like Game.GetPlayer() should not be used repeatedly. Use an actor variable/property and set the value to the function call GetActorRef() once, and then use the actor variable/property for each multiple instance needed.