You have declared your method to return an Id:
Global static id caseinsert(...)
but you are returning a value that is not an Id, but a String:
Id values are checked for validity on creation. Change your method signature to reflect its actual return value, String.
The main reason is typically that an assignment rule can only have 300 entries, and you can only have one default rule. Even worse, there's a bug in the platform that allows you to save more than 300 entries, but it will only evaluate the first 300 before going to the default owner.
As an alternative, all of the API-based features could specify the ...
Not sure of your implementation details, but generally speaking, Assignment rules come with limits (per object limit, per org limit). I am not sure if your org is approaching or have already exceeded those limits, making the person to leverage custom code (something like object trigger)
Second reason could be that the person may have piggybacked certain ...
You can use SOQL like below to fetch the Last Modified User name:
SELECT ID, Subject, Type,LastModifiedDate, LastModifiedBy.Name, CreatedDate, CreatedBy.Name, (SELECT Field, OldValue, NewValue FROM Histories) FROM Case
The child history relationship name is called "Histories".
Learn More Here
For any field history record, the user who made the edit to the parent record, is the user who created the field history record. So you can use CreatedById to get the user id, use relationships to get more information about the user (ie CreatedBy.Name).