In infusion.php you will need to add ,
$settings = fusion_get_settings();

This might also be required in other places depending on the complexity of your infusion.

In this section ,
$inf_adminpanel[] = array(

Add, under rights page 5 as follows. Do not miss the , on the rights line.
   
"rights" => "DEMO",
"page" => 5


page 5 means that it will be listed under Infusions, 1-4 is the other tabs.

$inf_newtable[1] etc can all be striped of the number , like :
$inf_newtable[] row1;
$inf_newtable[] row2;
etc
The system will enumrate automatically.

TYPE = MyIsam should always be ENGINE = MyISAM,
preferably like,
ENGINE=MyISAM DEFAULT CHARSET=UTF8 COLLATE=utf8_unicode_ci";

Since we use UTF8 in 9.

You need to replace all <form> with openform(); and all </form> with closeform();
Since many old infusions use formaction, this is how you would make it work with openform();

$formaction = "".INFUSIONS."yourinfusion/target.php";
echo openform('inputform', 'post', $formaction, array('enctype' => 1,'class' => 'm-t-20'));

If you do not want to use the new form system you can manually insert tokens like,

               // Token data
               $options['form_id'] = "12345678";
               $options['max_tokens'] = "1";
               $options['remote_url'] = fusion_get_settings('site_path').'infusions/myinfusion/post.php';
               $token = \Defender\Token::generate_token($options['form_id'], $options['max_tokens'], $options['remote_url']);

               // Begin Form
               echo "<form id='".$options['form_id']."' name='postform' method='POST' action='".$options['remote_url']."'>\n";
               echo "<input type='hidden' name='fusion_token' value='".$token."' />\n";
               echo "<input type='hidden' name='form_id' value='".$options['form_id']."' />\n";
               
               // Form content as usual
               
               echo "</form>\n";


Please note that any MySQL errors will halt the Infuse as a whole, generic upgrade lines that fail or generic table modification attempts on non existing tables will result in a failure.