Id property is not getting deserialised correctly for BsonDocument

I have a class like

public sealed class Source
    public string Id { get; set; }

    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.MapIdMember(x => x.Id).SetIdGenerator(new StringObjectIdGenerator()).SetElementName("id");

        _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?