NID in new created node title
Is there more elegant way?


Not really - the NID doesn't exist until the node has been saved the first time, so there is no way around this if you want to save the node title.

However, you could just add the NID to the title when the node is loaded:

function hook_node_load(&amp;$nodes, $types)
{
  foreach($nodes as $node)
  {
    if($node-&gt;type == 'my_type')
    {
      $nodes[$node-&gt;nid]-&gt;title = '#Bill ' . $node-&gt;nid;
    }
  }
}