Changing the module weight will work, but sometimes that can cause problems with the order in which _other_ hooks in your module are invoked. Drupal provides [`hook_module_implements_alter()`][1] for exactly this sort of situation, so that you can target the order a _specific_ hook is run in: > Alter the registry of modules implementing a hook. > > This hook is invoked during module_implements(). A module may implement this hook in order to reorder the implementing modules, which are otherwise ordered by the module's system weight. The code might look something like function MYMODULE_module_implements_alter(&$implementations, $hook) { if ($hook == 'form_alter') { // Move MYMODULE to the end of the list. $group = $implementations['MYMODULE']; unset($implementations['MYMODULE']); $implementations['MYMODULE'] = $group; } } Once you clear the cache your module's implementation of `hook_form_alter()` will be invoked last (unless of course another module is implementing `hook_module_implements_alter()` and altering the order again. But that's a different story). I personally prefer this method as it's just a simple code change, no need to maintain any changes to the system table in the database. I'm not sure how well that works with a form_FORM_ID_alter hook (never tried it), but with this method you can at least make sure that only the weight for `hook_form_alter()` need be updated. Actually looking at the code for `drupal_alter()`, changing the conditional to `if ($hook == 'form_search_form_alter')` would probably work. [1]: https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_module_implements_alter/7