Execute scalar, would normally execute the defined sql command. Hence if you put e.Command.ExecuteScalar() in the ..._dataInserted Method of your datasource object or the formview's datainserted event it will cause a second insert.
If you want to use the idendity or scope_idendity() have a look at this sp:
ALTER procedure [news].[cnp_InsertCorporate](@Name varchar(1024), @DisplayName varchar(1024), @Description varchar(1024), @ContactEmail varchar(1024), @NoticeBoardTitle varchar(1024), @ExternalAdminPass varchar(1024), @BFASale bit, @HomeAllSynopses bit, @HomeNumberSynopses int, @HasForex bit, @Newsletter_MoreLinkTitle varchar(1024), @Newsletter_TopLinkTitle varchar(1024))
as
-------------------------------------------------------------------------------
-- cnp_InsertCorporate
--
-- Add new corporate to and based on @@identity insert new group and then news user.
-- Also inserts clients weather & forex if it has weather and forex info.
--
-- Written:
-- 29/07/2007 abhm
-------------------------------------------------------------------------------
-- variables
declare @corpid int;
declare @groupid int;
-- Insert corpoarate details
INSERT INTO [tb_cnpCorporates]
([Name], [DisplayName], [Description], [ContactEmail], [NoticeBoardTitle], [ExternalAdminPass], [BFASale], [HomeAllSynopses], [HomeNumberSynopses], [HasForex], [Newsletter_MoreLinkTitle], [Newsletter_TopLinkTitle])
VALUES
(@Name, @DisplayName, @Description, @ContactEmail, @NoticeBoardTitle, @ExternalAdminPass, @BFASale, @HomeAllSynopses, @HomeNumberSynopses, @HasForex, @Newsletter_MoreLinkTitle, @Newsletter_TopLinkTitle)
-- Get last inserted CorporateID and assign to @corpid
SET @corpid = SCOPE_IDENTITY();
-- Insert group details
INSERT INTO corpnews.news.tb_cnpGroups
([CorporateID], [Name], [GroupEmail])
VALUES
(@corpid, @Name, REPLACE('news-&@email.com','&', @Name) )