You would be much, much better off if you did not link your tables by name, but used a serial number or UUID (Filemaker 12 only) instead. Avoiding such issues is one of several reasons why that's the beter way to go when linking records in a relationship.
However, when using text fields as match fields in a FileMaker relationship, the values are not Case sensitive.
Sa will match to SA and sa.
The only way that I can see to make this work is on a case by case basis. You'd specify Sa, for example and then the script would find all records were a single word in the file is either sa, SA or Sa and then replace field contents can be used to make them all SA.
Here's the scripted method in more detail:
Define a global field: Globals::gSearchText
Define a second Global text field: Globals::gExampleList
Enter text such as GmbH into gSearchText, gmbh, GMBH, Gmbh, etc into gExampleList, and then perform this script:
Enter Find Mode 
Set Field [YourTable::NameField ; "=" & Globals::gSearchText]
Set Error Capture [on]
Set Variable [$K ; value: $K + 1 ]
Exit Loop If [ $K > ValueCount ( Globals::gExampleList )
Replace Field Contents [no dialog; Substitute ( GetValue ( Globals::gExampleList; $K ) ) ; Globals::gSearchText ) ]
Note, with the proper recursive custom function and FileMaker Advanced, you could eliminate the need for gExampleList and the looping portion of the script, replacing it with a single call to the recursive custom function.
Thanks PhilModJunk, I rebuild the whole system and indeed it works much better with CompanyID relation.
If I continue now and adding a new Company and/or Contact (in FM12 Pro Adv/ServerFM12) how to generate a new fresh
CompanyID,see my Forum posting on this a few minutes ago,
Thanks for the very very good advice !