I just recently had similar problem, and I found a solution! I tried to add wild caveswallow man as my citizen. At first I tried ‘tweak makeown’ command and it kinda worked, but not really. Caveswallow man became some sort of long-term resident, which means that I couldn't turn on any labors for him. Oh, man, how long I was looking for a solution, and it end up being rather simple one. I used gui/gm-editor on unit in question (press 'v' to select unit, then type gui/gm-editor in dfhack). First, his civ_id should match you fortress civilization id (you could look it up from one of your citizens).
Also, you should uncheck some flags: flags2.visitor, flags3.unk31 definitely should be false (unk31 is scolar, some other unks are probably responsible for other types of visitors. To be sure, check one of your dwarfs and set all flags the same way), for invaders other flags should be unchecked, but it still didn't work (while invader became fully controllable, they remained hostile)
Your soon to be a citizen also should be a historical figure, it's not a problem for visitors, they always are, but for wild animal people you have to make them historical figures (being involved in combat, killing someone etc.). For next step find hist_figure_id or hist_figure_id2. To open hist_figure entry highlight it and press 'i' and in a list choose 'historical_figure' (would be first in a list).
There go to entity_links, you will see links to all of the entities.
To add another link press alt-i then write histfig_entity_link_memberst and enter.
New entry will appear at the bottom, go into it, there would be two values. For id write your civ_id, for strength - 100.
Now go back to entity_links and add another histfig_entity_link_memberst. For this one you have to look up the id of your local government. To do this just find it in entity_links of your citizen. Use this id for new citizen and strength to 100.
This way you should get fully controllable citizen
The most important thing in all of this is him being a member of you local government entity as well as having civ_id set to you civ id. (some flags may also mess up him being controllable)
You could also add id of your historical figure to both historical_entity's in histfig_ids and hist_figures but last time I tried, I skipped this and it worked fine.
Somebody with lua knowledge could probably make script for all of this. (I could do it myself, but it will require me learning lua, and I'm not a programmer at all).
Preferences were not a big deal for me, and that's probably the simpliest method of making someone controllabe.
Ps. Sorry for my English, haven’t properly checked for mistakes.
Edit: I have to confess, I haven't read whole thread when I posted. From what I'm understanding now, you want him to undergo whole process of petitioning, not just make him controllable. Would love to see your results.