Ran into this upgrading to 4.7.22
For some reason (which I have not investigated) the reserved profiles for New Individual, New Organization, etc got their profile ID appended to their "name".
If you query the UFGroup entity in the API explorer like this:
$result = civicrm_api3('UFGroup', 'get', array(
'sequential' => 1,
'title' => "New Organization",
));
You should have a result like:
{
"id": "5",
"is_active": "1",
"group_type": "Organization,Contact",
"title": "New Organization",
"add_captcha": "0",
"is_map": "0",
"is_edit_link": "0",
"is_uf_link": "0",
"is_update_dupe": "0",
"is_cms_user": "0",
"is_reserved": "1",
"name": "new_organization_5", // note the appended ID, 'new_organization' should be the value here
"is_proximity_search": "0",
"is_error": 0
}
Digging here, here and here found that when the method to get the profile links is called with no params, the profiles names are hardcoded to the default 'new_individual', 'new_organization', 'new_household'
To fix it you'll need to revert back the profile "name" either via the API explorer:
$result = civicrm_api3('UFGroup', 'create', array(
'sequential' => 1,
'id' => 5,
"is_active": "1",
"group_type": "Organization,Contact",
"title": "New Organization",
"add_captcha": "0",
"is_map": "0",
"is_edit_link": "0",
"is_uf_link": "0",
"is_update_dupe": "0",
"is_cms_user": "0",
"is_reserved": "1",
"name": "new_organization",
"is_proximity_search": "0",
));
Or if you have access to and you feel more comfortable, querying the database directly:
update civicrm_uf_group set name="new_organization" where id=5;
Hope that helps.