I was missing a few rules in ir.model.access.csv and a condition in the force_domain>
here is my code:
<record id="my_module_rule_personal_hosts" model="ir.rule">
<field name="name">Companies user had created</field>
<field ref="model_res_partner" name="model_id"/>
<field name="domain_force">[('user_id.id','=',user.id),('user_id', '=', False) ]</field>
<field name="groups" eval="[(4, ref('base.group_sale_salesman'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="False"/>
</record>
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
lead,my.module.crm.lead,model_crm_lead,base.group_sale_salesman,1,1,1,0
mail_mailgate_thread_my_module,my.module.mail.thread,mail.model_mail_thread,base.group_sale_salesman,1,0,0,0
access_crm_payment_mode_user_my_module,my.module.crm.payment.mode,crm.model_crm_payment_mode,base.group_sale_salesman,1,0,0,0
access_crm_opportunity_report_user_my_module,my.module.crm.opportunity.report,crm.model_crm_opportunity_report,base.group_sale_salesman1,0,0,0
access_crm_tracking_campaign_user_my_moduleprinch.crm_tracking_campaign user,crm.model_crm_tracking_campaign,base.group_sale_salesman,1,0,0,0
access_res_partner_my_module,my.module.res.partner.crm.user,base.model_res_partner,base.group_sale_salesman1,1,1,0
access_res_partner_category_my_module,my.module.res.partner.category.crm.user,base.model_res_partner_category,base.group_sale_salesman,1,1,1,0
Thats the right way: http://learnopenerp.blogspot.com/2020/01/odoo-server-action.html