Id property is not getting deserialised correctly for BsonDocument

I have a class like

public sealed class Source
{
    [JsonPropertyName("id")]
    public string Id { get; set; }

    [JsonPropertyName("version")]
    public int Version { get; set; }
}

I convert this class to a BsonDocument and store in MongoDb. First I convert to BsonDocument like

public static BsonDocument ConvertToBsonDocument(object value)
{
    if (value == null) throw new ArgumentNullException(nameof(value));
    var json = JsonSerializer.Serialize(value);
    return BsonDocument.Parse(json);
}

And then insert to Mongo using .Net driver for Mongo. The Bson class map is

public static class BsonMap
{
    private static bool _registered;

    public static void Register()
    {
        if (_registered) return;

        var conventionPack = new ConventionPack
        {
            new CamelCaseElementNameConvention(),
            new IgnoreExtraElementsConvention(true)
        };

        ConventionRegistry.Register("CustomConventionPack", conventionPack, f => true);

        BsonClassMap.RegisterClassMap<Source>(m =>
        {
            m.AutoMap();
            m.MapIdMember(x => x.Id).SetIdGenerator(new StringObjectIdGenerator()).SetElementName("id");
            m.SetIgnoreExtraElements(true);
        });

        _registered = true;
    }
}

However, when I deserialise this document back to Source class, Id is always null. I deserialise like

private static Source ConvertToSource(BsonDocument doc)
{
    return BsonSerializer.Deserialize<Source>(doc);
}

How can I get the id property in Mongo entry to be mapped correctly to Id property on POCO during deserialisation?