In Izanami, feature flags are just called "features" for the sake of simplicity.
Boolean features
Boolean features can only take two values: true
or false
(active or inactive).
In this section, we'll see how Izanami allows to define flexible boolean features, that can be activated based on time, user or both.
Feature activation
Two elements are used to decide if a feature is active:
Feature status: enabled / disabled
Feature activation conditions
If a feature is disabled, then this feature is not active, regardless of activation conditions.
If a feature is enabled, activation conditions are used to compute feature activation.
If you just want an on / off feature, don't define any activation condition.
In this scenario, feature activation is deduced from feature status (enabled
-> active, disabled -> inactive).
A feature can have 0, 1 or more activation conditions, however only one of them need to match to make the whole feature active.
A condition is composed of one time rule and/or one user rule. Possible rules are detailled below.
If both rule are defined, both need to be active to activate condition.
There is a logical "OR" between activation conditions. Inside a condition,
there is a logical "AND" between time and user rules.
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1bW1PbyFx1MDAxMn7nV7g4r2F2pue+L6dcdTAwMDImQMItXHUwMDA0SLJnt7aELbBcdTAwMGVCMpa4mK3899MjwJIlyzbBXHUwMDA2c3ZVLrCl0Uxrpr/ur3tafy01XHUwMDFhy2m/6y//2lj2b1teXHUwMDE4tHvezfI7d/7a7yVBXHUwMDFj4SXIfifxVa+VteykaTf59Zdf8jtIK764v8tcdTAwMGb9XHUwMDBiP0pcdTAwMTNs91x1MDAxZvzdaPyV/S2M01x1MDAwZbyLOGpnzbNcdTAwMGL5QFxmoHx2N46yQZlgwCXn2lx1MDAwZVpcdTAwMDRJXHUwMDEzR0v9Nl4+9cLEz6+4U8uwXHUwMDFlJSv+nrCbcXhcdTAwMTd/+tY/XHUwMDEyN0E+7GlcdTAwMTCGX9J+mFx0lcT4IPm1JO3F5/7XoJ12XHUwMDFln79wvu6uXnx11on8xD08XHUwMDFinI27XitI++5cdTAwMWOlg7NedJb1kZ+5xV+WW8JcdTAwMTRXVlkhXGbIwcXsdsYk0UIqJbmQVEFZrrU4jHtOrn8xq1lcdTAwMGJyyU681vlcdTAwMTmKXHUwMDE3tfM2p9mRt7l5fFrOXHQvXHUwMDFlYtCk41x1MDAwN2ed1LVhlmjJqVFcdTAwMDKHwmXJJfGz9WCWgVIoRb5cXG787lY704w/8lXoeVx1MDAxN/6WuyW6XG7D4lRG7YepfNSgXFyH4OHMj/xcdTAwMDFd+/Wy7lx1MDAxNfVvSFx1MDAwN1P/Nlx1MDAxZDx5QWV+27lsr653Op917+jrl61+5889tro8aPfj3ehu729utb7vXHUwMDFld0+/JZ3VpHcjdlx1MDAwZSRnN8OjPI7v9XrxzbT9qlx1MDAwYlxi9d7J9vbd973e7blvgV7uT9fvw7d8uq+6be9cdTAwMWUxTDNqpNFcdTAwMTREQc/CIDovr0VcdTAwMTi3znOQLVx1MDAxNVx1MDAwNK5ge2heXHUwMDBiwOamXHUwMDE216jpVFx1MDAxOU7Z1LhcdTAwMWW9SFx1MDAwYo1rRlx1MDAxOSXKXHUwMDAx21x1MDAwMOLbUlNCtjGEXHUwMDE5brGBpHjIuSDbOlx1MDAxOfC4N6WSqSqwtSwjmVx1MDAwYjS6XGbNzvOBPHShgthZKmkuVVx1MDAxY6VfgrvMaNChs1x1MDAxZryLIOxcdTAwMGataKa9OIFbSeP36NT30quej9/8yDtcdP1249/LQy3fh8FZlOFcdTAwMWWfwO9ccql9XHUwMDFhoGdcdTAwMWM0uFxi2m1UikGDXHUwMDE2XHUwMDBl71x1MDAwNZHf25rGT8W94CyIvPAwl+5Rtlx1MDAxMZLh3Pibj6vJXGLIsXi9t1x1MDAxNyNcdTAwMDArhSifXHUwMDFkIFYqYOhcdTAwMTX01IBcdTAwMWRvXHUwMDE4X1x1MDAwMbB2XCJemeZEWEXBclx1MDAwZTJ/1P49S5FcdTAwMGVI6KyNlMaALomVI1x1MDAxMU6tL8TPoZVRIFRcYmqp1ZqjgVx1MDAxY+GHmZKEolx1MDAxZrZMXCJbsEZUXHUwMDFkMVx1MDAxM0ppLV/NXHUwMDExj4E1XHUwMDFhOy1NUXWnhXWSer10NYjaQXQ2LNhcdTAwMDP/nFx1MDAwNlmZIWhdOSlXKE61loIzXHUwMDAzVjFpXHUwMDE1h0KzM6/rpK48rFx1MDAxZrWnXHUwMDEwXCI4h32WfvxcdTAwMWNs362mx+tBbz9sLld65yiBotQwQHdcIkFwPUJOSnDikP5RQI1Ar4GUsFwiVOgl6Vp8cVx1MDAxMaQ42ftxXHUwMDEwpeVJzWbvvYN+x/cqK45cdTAwMGZVvFa2XHUwMDExXdfjMMXKvzVyXHUwMDFjZT9cdTAwMDbf/3g3srVhXHUwMDA0fVx1MDAwYpWUXHUwMDAzUoChZ27gjChprFx1MDAwNoFPK62lVEzqrlx1MDAxZTLZ1VxuWPL+lor/n8puXG6OtGQrOdNg0HnlXHIm2sr47HBn7aDJr06aQeez+rZ2vFx1MDAwYottK0FcdTAwMWFimdKGcyWkNnkv99zGXHUwMDAyXHUwMDAxY4yWgNyHSlVcdTAwMTJsNtaSXHUwMDAzYS5YkYxxXHSS5+YuXHUwMDBmWircXHUwMDA2KIZUXHUwMDE4vlx1MDAxNMzmi5JcdTAwMWJqMEhcdTAwMTKcKp5P6bzJzXc/qeExoX+ajmExadytozBDwpb5ytCAM6InQrDy2Vx1MDAwMT3hlFx1MDAxYqGLrnBcdTAwMTLmxlx1MDAwN1iLiDnLMV5QXG6UlsqI0Vx1MDAwNFx1MDAwNdsogeGEtfX8xKeccfaT0YQgXHUwMDBlPkh/jDZcdTAwMTZd+lxiesJcdTAwMDQxXFxcdTAwMDBohW0whqhGXHUwMDE3klx1MDAwM0U7PVx1MDAwM1x1MDAwMM6Fndii5r5cdTAwMTY7Qa/PgGqca4aSIU9RhUbP4iY7zVx1MDAxZC43Vz59+66PzjdiuDW+ulx1MDAxZC1cdTAwMDJFcoLmVWlcXCxcXE90n1UhNDFcdTAwMTjpKlx0XHUwMDE2l5tLId80OVmp1XB3WGKstFKhXHLHsFx1MDAxZKid2J1cdTAwMTGEWytBo4tSYHIwuKNcbpUnkpOe30rvjcUohjKGolxiVC75lLzqeKVZyPyLXHUwMDA2RdDOICe0hlx1MDAxOVx1MDAwNbm5ye7nyGA4R1KoLddKSl5cdTAwMTJsNlx1MDAwNlx1MDAxM2eZXGYypvhlRPol01x1MDAwMiZcdTAwMWU/spBcdTAwMTV7NJgopstcdTAwMWblNn2GXHUwMDA285FcdTAwMTDPPK9qt3zvtHeysfNx66Cz0kzuPkfnL5H/XHUwMDFj2+/Kp5Om+XquvKOweaM6yUdxSO/eVl5cdTAwMTXGbJhotNiCXG47PVx1MDAwZlx1MDAxYb1Ki1xybCGdZ1JcdTAwMTSJXHUwMDBlRlx1MDAxZbZEhFx1MDAwNOVcdTAwMDRcbjsm82FCwCThLrGKq85w/Y2pXCK7XHUwMDFhfDCnXCLoQfjfKLP64SFxXHUwMDE5JI0oTlx1MDAxYl4rXHKu/Zpw5Llp1Vx0bqpcdTAwMWOmTFx1MDAxMO1pgUstXmvDXHUwMDE2pHWOXHUwMDFjiFx1MDAxYzqT0HpwvN47/vP91rn6mFxcXHUwMDFmNu0+xr7fXHUwMDE2OmpBykNcdTAwMDDjM21cdTAwMTXSJl1IMT8kXG5cdTAwMDTR0iCEUCmpXHUwMDE2c1x1MDAwMisn1iVcbkAgj+WaXHUwMDE39lrGZVxutJFWWZY/9/99omA3ftk8QXG8p6FtTEVcdTAwMDEqUlx1MDAxZOKk1lx1MDAxYVx1MDAxZKR9QkHB2EzuQvpHXHUwMDE3MFx1MDAxMrBW4Idxi56yxHwtJ1x1MDAxMjhigVx1MDAwMVx1MDAxOHSXtZh7zsYjoo1QjFx0lUTM4ZdRyTnFiC2WXHUwMDE0VFx1MDAxMKiEXHUwMDE2is6F9/50PcG8Nv4n8enw/cbOxiexu3HbOlpb+TPdV3diY+o6hVx1MDAwM9DR5vX5bnfztnUl4p2Tzfi3f/j0vX+uzytcdTAwMDJcdTAwMDaHlksxvb1cdTAwMTi9SottL4BqwqhGm4D+TtlypCyMJpRpwOUwQ6VBszRcdTAwMTeMXHUwMDBiXCKyyiMuqUTHO2Lns1qowNBHovWAWYTGb4VPN2M/acSR34hPXHUwMDFiv0dpx2+gw21cdTAwMDcp6i3+vvDSVmd+ZVx1MDAwYuO9Ydm9XHUwMDE3RVx1MDAxZFx1MDAxNrRcIuaMNlx0dD3bZoaDVJzrfKYnbsyNtZqLSLeZXHUwMDEwjLhcdTAwMWFcdTAwMDWMSFx1MDAxNVx1MDAxN6BLvl9cdTAwMDJcdTAwMTCdJZrAKs2g3vc/Z2POWGKtQnBcbuBIQMSI2NgywjD+0VZQXHRmSJBcdTAwMDdouy1Us2i7XHUwMDA0zyTl0+5cdTAwMTJMKlx1MDAxZijWMGgqXHUwMDE1gMLJXHUwMDE2XHUwMDE0f9hCs/tcdTAwMTQ98jDKlWKo+i7T/JPbXHUwMDA2bS/YS1x1MDAwZU7ew9rK+lx1MDAxZbuOXHUwMDA1P+zdjJLJiYS8zyVnLFPcXGJcdTAwMThRViEwIFNcdTAwMWFcdChFLUBcdTAwMTVcdTAwMTBcdTAwMTWh3tKugUFQMeXyblx1MDAwNrSr9SvezYmmfPBRVvKJ3dXBx1x1MDAxZFx1MDAxNeDkvS1cdTAwMTX/P9l0KlZcdTAwMWI2MYnhs0QwTl//NZ5cdTAwMTgupOlk1Fx1MDAxMmms4I7zof5WTCdGVeBoXHUwMDEyzkQhgpztdlx1MDAwMXN7vFS79eV2ZLmmK3hcdTAwMTHKulxyXGZnXCItrbBcIuG2pqidRfnm29tgndZ0UlwiqKLIeNHFoF00XHUwMDA1XG5XsJxu245pvGrQUCla3dyc9ZYrQppaaykwLYTAXHUwMDAwuGo7XHUwMDE5QfduXFz5lOKubsxWhHpLtnNcdTAwMDU1g+S2k2LEX7xfWuSCdvDhcmJ/9Vx1MDAxOMouXHUwMDBiTqCQl9BPNJ91UaSor3bnOJSrMHxcdTAwMDLvVNur/e+X9LLr71x1MDAxZXtcdTAwMWJh/7ZcdTAwMTP3XHUwMDE32niiNydcbi2OYlxmnVx1MDAxNv4r2U6JXHUwMDFl0rhcYlx1MDAxMldcdTAwMTn1u/4tlldI82Loa5Gk0Fx1MDAxOVTL/pPnfdCcmeV5x5Y4XHUwMDAwq61YR1tcdTAwMDLSbbVNXHK68Vx1MDAwNHcxMzfI+Fx0d6+XMG2U0KaUuVFIWdDlupJaylxy1/MpWp9JjYNcdTAwMDJcZlx1MDAxNtDtzYWzzK3GwWzoXHUwMDBm/uVcdNDWYT8+WO9cXFx1MDAxZtxsfX2BnOyjq6onWi/0jldevV3Zalx1MDAwMXAvXHSa6VOnoydzwVx1MDAwMSgocaVUyqDnXHUwMDAzxUsxXHUwMDAzhrjEbTkpZGpcZkT9K17PemlcdTAwMDRcdTAwMDdR7lxyMqRcdTAwMThcXLpXdaZxe0y7Slx1MDAwNPQ+r+T2XrlcdTAwMTRhrmVcYlx1MDAxM1xcyZgyhDmVINRWXHUwMDAyMio1Olx1MDAxMFDT1yB80CdHfOe/l3x9Y3tNNrfvZLpyvNDkXHUwMDE0/VxyXHUwMDA2VkJbdIXAOaWlXCJcdTAwMDRhgChDXeaGXHUwMDFiauo3OF78ZVx1MDAwNaal4Uqje//7cNOFfFlh6cHZLnvd7pdcdTAwMTTnZ8Azlq9cdTAwMDP/ZrVeXHUwMDExllx1MDAxZeDqgOFn9OTH0o//XHUwMDAxVlTb5SJ9Is feature enabled ? Yes Feature is not active No Does one of the condition match ? No Feature is active Yes Feature activation decision tree
Below schema givena an example of feature that define several activation conditions.
Conditions are used here to progressively activate feature for all users, while keeping feature active for two "admin" users: Alice and Bob.
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1daXPiyLL9Pr/C0S9uxHtcdTAwMTFjTVVlLVnzXHIvXHUwMDE4t3fwXHUwMDA2N244MIjdrLLB3Jj//rJwt8Gy1Vx1MDAwNlx1MDAxYdqiTc/StiSgkPLUOblU1n//2Nj4XHUwMDEyPLb9L39vfPFcdTAwMDeFfKNa7Ob7X/50x1x1MDAxZvxur9pq0ikx+r3Xuu9cdTAwMTZGV1aCoN37+6+/xq/wXG6tu6dX+Vxy/85vXHUwMDA2Pbru3/T7xsZ/R/+f+JyuX1xi8s1yw1x1MDAxZr1gdGr8UVJi+Ohxqzn6WG5cdTAwMDTTXFwqq56vqPZ26PNcdTAwMDK/SKdL+UbPXHUwMDFmn3GHvlx1MDAwNMlcdTAwMGVcdTAwMGXKyZy4XHUwMDFlnN/r4/1cdTAwMWOH0/r4Y0vVRiNcdTAwMTM8NkbD6rXoq4zP9YJuq+5fVYtBxX126HjUq7qt+3Kl6fd6L17TaudcdTAwMGLV4NFcdTAwMWRj7Pno0z34e2N8ZEC/oWKe1lZcdTAwMWJAoyWI55NPL0fjaTquhVBKcFx1MDAxMVx1MDAxYdZ2q9HqumH9XHUwMDBmt4ZcdTAwMTfEeGC3+UK9TKNrXHUwMDE2x9f41i/4pfE1/W9fXHUwMDE2gXtKM6FcdTAwMTWCNMDM81x1MDAxNVx1MDAxNb9arlx1MDAwNHSJQeFJQI6gXHUwMDA1ILLxQ+v5o6chmEUupVXjb+c+vr1fXHUwMDFjWcZ/xs+gm7/z991LmveNxuSNbFx1MDAxNr/dyFx1MDAxNydu3YndXHQjXHUwMDFiv9V9u5h/slx1MDAwNW7oTilEXHIg4fl8o9qsh9+u0SrUx+YzOvrPn3PYLVc8ym6FMXSXtLJTm61/gNu5bT3of+2wZFx1MDAwZm/VYSXFYm62iFx1MDAxZVx1MDAxN1x1MDAxYyyzZLxswmZGr+eAnuaabEkg/SvDXHUwMDAzm81wS6M/r1xyXHUwMDE3XHUwMDA0epYs1mHHKCPgteFcdTAwMDJTXHUwMDFlU5IrXHUwMDBi1pB1glxmW65cdTAwMDRrXHUwMDE1Sil+3nC/m9DYiODbkX/mtGcmOVuUPVx1MDAwN/4geMuUNURZspaMSSWEntqSXHUwMDBmMlubeVx1MDAwYvleut2s90/vL7PJxO5HWrJ915AteFJK7r4rmfIrQ+bgMZqfLf0nUf3cXGZcdTAwMWN0881eO9+lR//amLnlZKmMMTJZTtaMr41ZqLDxcklcdTAwMTNcdTAwMWWisVx1MDAxZjTtMlx1MDAxNJpuXHUwMDFlXHUwMDAzLWcw0/GoWs0gU1x1MDAxZI5mTfbiaDJ/V208vnioI/ulu5goXHUwMDA01Yd8QHa6UWg1i1X305dcdTAwMTdXJVx1MDAxYdWys+wvXHK/9NLkgyopmOfTQas9PkvvXHUwMDE15KtNv/v6LrW61XK1mW+cTzVcdTAwMDL6/n7q+yPjnlDzs1xm8UikOqIpjbSDVWODfVx1MDAwZpyNo27qtF9Wg4NyrpWwN4VOJ52KN81wXHUwMDEw0vFcZlNGabpcdTAwMWPGXGJ45lx1MDAxOU64RJKJXFxYXGJccuxcdTAwMTfSjPWMdFxmo0mmKTsxTTxcdTAwMDHVgiBIXHUwMDBiWFx1MDAwME5Xk2VIXHUwMDA3RFx1MDAwYn1gKK2eoOD3TNlkXHUwMDFmTju1m0Hz1tTTfjZ1cle63Yo1z5AlW1wiXHUwMDFhQGCacWYnhMg3olx1MDAxMZ6yVlx1MDAxOJIj9EjiRTNWXHRNxs/XLDNx1SqxjLv6LVTa8LFnTFrLjVx1MDAwNDVcdTAwMDMmu7vZ8/Q9PtaaJ7VKPlx1MDAxNVx1MDAxY5+K64d4Y1JY5jEkbVx1MDAwN8CZXHUwMDA0XHUwMDFlXHUwMDEyf8DdxE/yj1SwXCJcdTAwMTZYXHUwMDFlKI0nrFaktYnoOPlLY/w/o3I89G+gJK+L2MYswuN+TSliXkr5Saz2gnw32KqSuTfL4Zf4zWLEmUa+XHUwMDE3bLfu7qpcdTAwMDFccuO0VW1cdTAwMDbhK0bvm+h2W/2Kn391L+idI8+13duNw1vuz/injfFjXHUwMDE5/fL883/+fPPq6Fx1MDAwN1x1MDAxZHr5XHUwMDFmk3/PimrNwlx1MDAwN589Olx1MDAxMoxWWjE9qlx1MDAwYtuZo+Ovl7Ujv1Qt7tXuXHUwMDFld64z2ZijWlx1MDAxOI9cdTAwMWJjNLn9JFxmQ5LRgZpLQrTUoIDrJXp086CaIzmb9Fx1MDAxNSYuXsP6c8H6x1x1MDAwMXOIXGaYXHUwMDBi0nTGklx1MDAxYjJ+RO+h++7iVqTrnTRcdTAwMWXe9NnXg2p55z6VWCi6i/lexV8kvK2L6Fx1MDAxOVx1MDAxON1nTX+Pb8dcYt6CXHUwMDE5z1xiYnSFdNXydLRA8IQhJY9cdTAwMWO0XHUwMDFizHiaeVx1MDAwNrdcdTAwMDLPMvJcdTAwMDZJPoPVXHUwMDAyx2rrO9hcdTAwMTVaXHUwMDAyvFxchLBeoFs4XHUwMDFm2H9o05FuYTRXXHSiKY3WsKmt2SRNTnUu9KDWyO9v1Tf7pW77MObWTF4hV2SwUlvOJnNdj9+pTIqRV6iAPDa1PHtcdTAwMDb0XHUwMDE0XHUwMDAyqVxcIVxyM+yNIId4TVZcdTAwMWGVXCJcdTAwMWaSLSB4/rGOIdcvjr7nXHUwMDE4+lx1MDAxYqVu626D8b/oX8GE3MBcbrBcdTAwMGbwXHUwMDBm31x1MDAxYshsbmJcdTAwMTRKOURcdTAwMDdvXHUwMDA0WaY2fGJcdTAwMWV+XHUwMDBmpnT53YlcdTAwMGVyj1x1MDAxZMzoq9J94343UYu1pLREKmCRXHUwMDE4hSOS2YVjN0Z7gFx1MDAxYVxmwdVN+MtjXHUwMDFk8ldcdTAwMDVcdTAwMTBIrTHipY7/UZJAaeJKJj9TkuC8eudvdO8nNdSvwORcdTAwMWJcdTAwMWa7wHSA4pFJZzI/48J60zt2R5XKQCaGg/pxNZ3N3iRrUK/amJMlQ8JcdTAwMTl3Opv0n7RjPfXk2Wn0pFwiSciIMdHIJZLlXCLEXHUwMDFmMFx1MDAxMFxullx1MDAxNL9ZXHUwMDA17Vx1MDAwNzYy82xcdTAwMTg9QeAzZJ4vXG63eJpMXZxcZnvHW92H+2Ilw77G3JyV8uhOM5f84JpcXLeQOaPykDHJR6LMLs+aOVx1MDAxMru5lICmx66ILd5ildfaz1x1MDAxYXpC5GItIFCxatqv1d1Q/9polTbue2S3XHUwMDFmI/uixrBcdTAwMTjFJ4RcZlx1MDAxZv2OTUnOXGLNWjg91Vxc7Mr0eVtcXO3Z/fOgX+5ov6eTsVx1MDAxN3xcdTAwMTKZJlx1MDAwMydcdTAwMTdcdTAwMWQmgnFP0Fx1MDAwNO1cdTAwMTHBoFx1MDAwMm4lOfDLwyZcdD6aXHUwMDFkrEVpJFx1MDAxN1x1MDAxM/z/XHUwMDAzvadBKiXZRKBoRYE5vdy7IFxmfIDce+NjXHUwMDE3XHUwMDAzP1x1MDAxYok+wZkhXHUwMDFmhJnp/a3bvjy5qp2L87Pri8zd3aXJVtNcIt7UyJkg8rOW5JFUgCBD3CgsXHQwwlx1MDAwNFrNiUbN8oL44D5cYmaMi1x1MDAwMLOgtLIrj8BcdTAwMTmo8XjnXHUwMDE38+DkXHUwMDA3LiZcdTAwMWI+qeNf1agocu5cdTAwMDHt9LDLXHUwMDE1zk72XHUwMDEzN7vX3Urb5tJ8V1xc80qsWY+0qPDIsVx1MDAxMsRcdTAwMWZcdTAwMDQ8hFBsnTxcdTAwMTZSpNpcbkZcdTAwMDDU4ueqelx1MDAxN586XHUwMDEzo1HRINdcdTAwMTnxz5o6i0S2inQ1iUolkoSbQc9uZnrt8+vj5LWod1x1MDAxZa5cdTAwMTOFXHUwMDAyaz/cxlx1MDAxY9lcdTAwMWE8yThcdTAwMDf9lPVcdTAwMWXfjmdka8e0dFxyWK5kaGBcdTAwMWaNbKOZIDd1XHUwMDAxfLpcdTAwMDb2Slx1MDAwMvvHOXFcdTAwMWKZXHUwMDEzl9ZcdTAwMThkMENKXHUwMDFjUru9rVYhXeTFvZ1O41x1MDAwMZL15EHM1TJI4UkrXHUwMDE5jkr2VDg/IZj0tNJE3CRjmZbLK2RbTFZcdTAwMWNcdTAwMDXTXHUwMDA2xSeOjE5cdTAwMDQ+w3RFd0zTfD09W2WH4vzyonssav1cdTAwMWR9N2xAOdHejrtBa01C1EFcdTAwMTeBXHUwMDEwXHUwMDFjtmchPVBcdTAwMTaASUOExZbn/Vx0KT1O3lx1MDAxZpC0RFx1MDAxNMinXHUwMDBijWojnX5Wn8n/m8xGq7ikxaNcdTAwMDayoLS4jU6L69FakcnywnfDNKp2y1xu/lx1MDAwMZ6dn9ab27fb5dq2jLeqXHUwMDA0glx1MDAwN3JcdTAwMGIuJ61cdTAwMTHDi3NcZngkNaVAY60hp3FpMJ0rLW6JKVx1MDAxZMmsfP7is2fFVWSwVFx1MDAwM9KUbWZII57zrVxcaqvX71x1MDAxZO330/v9q9MqP/LjTpZSe1pcYmtJclx1MDAxMVx1MDAxOWI4aqONp6TlLoeATKrlwXAx6o9LSVxuZ1x1MDAxMbHT1Vx1MDAxNH9CR7KKJFx1MDAwN94qukNT23O7t91vnrKLXHUwMDAyXHUwMDFj9NXFQ/XgcudAx51UlGeEYMi4kYKHl3xcdTAwMDIoz2pNZlx1MDAwNsaCMj+15nPhuTdO2lxckFx1MDAwZraI8v1VYZXfLfkmVeSqa02G+TIw/lx1MDAxZVx1MDAwMOtcdTAwMDNcdTAwMWaLqbafb2dqlzzX2bwpJTtxJ1x1MDAxNOu8XHUwMDFloUi3XHTLw7k3QO1xmuHR5cPEMvmESGCewlx1MDAxNGW14fTPXHUwMDE4XHUwMDAxK1xuwflcblNYXHUwMDFjKlPeXHUwMDFjxILgXHUwMDE5uWKAPFx1MDAxMVx1MDAwNdq1KZpcdTAwMWGemZv2YXsvk3rQ+DWb3GpcdTAwMGWuhpVCzOEplPK4VFpzknUvepJ8i+VcdTAwMWJcdTAwMGbpOLlcXEqRmFpcdTAwMWVBXG7hSU1/jMuO0lTxRuOot+rG3NXqU61cdTAwMTk4Sf9aJE5+3oJCXHUwMDFk0Vx1MDAxMUlSRiBcdTAwMTjAXGZcdLStwmG/lareXe/flpvsMJHwh/o85qiTRnjcXG5mRuFcdTAwMGUlQlx1MDAxOTRhXHSUYI1m7kqtl4e6uSpSuFx1MDAxNjRXgIHPRIq/Q0mKinRcdTAwMDZHKkeoXHUwMDE51nKz/eJVrWaCYj29edYo7O3fIG8uXHUwMDE0dlx1MDAwYndcdTAwMDalRFx1MDAwZl3vLSslKcHXXFynPOJBtEyTJ1xiy1x1MDAwM918a7mtK2GncS+lt9w6b/39XFyM89aRuMbIUjPLgHE7Q+OVi20hhJ9N3Z5vXHUwMDFk7V6d+J3ro+1SvGGtmPW0deUmipE7XHLh+mqCtXLdvqSSjrli1nmFXHUwMDBiYFxiWi2CTNe4XklcXP84I8Gi+yo5XHUwMDFmlVxmfvrmsGf1nf1dU9l+TGxcdTAwMWVjLt3ePNovnX4kuqdpXHUwMDBlXHUwMDBintVMXHUwMDEy/YGL9IfS91xuLDmoXHUwMDFj6DJcdTAwMDdu+Cl0L7Vrn1bIXHUwMDE16k/bXHUwMDFhVkJkak1cdFx1MDAxZIpzv2fIMtPPXHUwMDFjXl5cdTAwMWNVyjk7qDZO2fZWaT/WNIVonatF3lx1MDAxYye/XHUwMDBlX9kxl1x1MDAxZUjyXGJccllcdTAwMTdOZmVi0bSPNFx1MDAwNGiDk4WtK+ryfdaufT8kXHUwMDE5LaNcdTAwMTcrSCO1UDCDa1g3/leRvm9vZVVi96G9k2432ovNXHUwMDEzLmE1uPBgXHUwMDE0iWGcSSnGbzKyXHLNtFx1MDAwN5ZcdTAwMWNHzVx1MDAxNF1cdTAwMTHzTkCSnpmBheQsVjPrLc1cdTAwMGY0kyRu5lpNn/bu6Ua9m9xp71/lt9qPlaNS+S4xjLk5XHUwMDBi7Ulu6Hs6W9DhvlaaTnMmOEhu3aq3uHVcdTAwMDJcdTAwMDJuybr16i86na/kkbOYlDxGXHUwMDBlZDF5XHUwMDAwkNErU5k0XGKoZ1hcIne7f9roXHUwMDE267vls6vbfHazl0hfwWOsJaFcdTAwMWSV0qNbXHUwMDE1zjk5XHUwMDE2oXikMm67XHRXZ6+E1GaJknCukkfytlxmyYJ1yWP8S1x1MDAxZSN5kkdcdTAwMDKQXHUwMDA0v7HMilx0I35cdTAwMGaAx2elbKWQOkmUL7NcdTAwMTem1LxcdTAwMWaaXi7mXHUwMDAwVJ5cIvrjrlx1MDAwMZBcdTAwMGLlvFx1MDAwNCD5+55hVpGfxCSwJTZSn6s6zFgjULF1ddjqVoeZ6OBcdTAwMWXNrJKmfjO9Tt1M7lx1MDAxNVxu+btkoXeWNYc3JjGs+q2Y61SOnluMXHRcZujHyc2Bnlx1MDAwMIjKo1x1MDAxOUi5lJ2jp+XJVMM8l/JcdTAwMDMjmVx1MDAwMFx05lxyt+u1TjXGWNDwsbVhku7cLLG7n5Opx61RXHUwMDFk1lxiXGZcdTAwMWL/m1x1MDAxZlx1MDAxN2n5ZL6Prab/f79cdTAwMTaZs4xnQc2MTPTqb8mcu6VmWKdz1GHy6vxKY7qhN7Pl9Fx1MDAwMWvXXHUwMDE3275yXHTtVEB4XGZcXMRcdTAwMTItkoZcdTAwMGbVVGurPUTh3DcjXHUwMDA0N8sr6ZyzeEVKy1x1MDAxOP+ozVx1MDAwNdfFK/NcdTAwMTWvXHUwMDAwi9Sqxi1ENrM0+DtM2M395E5FS8xcZlKPje2vw9qH7l41TTtcdTAwMTUkMUqgUsxFR0SokNq4JmOkXHUwMDA1rVx1MDAwNOJRhOVx5XxZbk6403xJMcl1lvv7uVx1MDAxOGe5I4FccpErJOwou61nXHUwMDAwdtmcXHJ327mdMyVPK489c7d7MVjskrsldFOxnqKbYFxc107Hm6+BLSTRLZmq26Fnibt5zVx1MDAwM2zS5fSQXHUwMDA0LsBcdF3j+rfCNeeROUXBjEbJZ2mAtnupsqrfUUe3e6XS5sN5q8B7Md+kj2np0fckW0QkvzJcdTAwMTRcXJLGeswtZTfo1lYsscH0fIStrFJo9Zqw18BcdTAwMWVcdTAwMWSdXHUwMDAwto5cdTAwMDa20qNMxvRBq0Swc6TKmaDQkK30jayldlxum9cxxzXjXHUwMDFl0lx1MDAxN3UrIJSc7J7zXGZs7Tb6My6DY8RcdTAwMTIreeZcdTAwMDG2JP9hMtC2RvXnQnXkoixcdTAwMTnd90xZg2KGhZCXm9ed8mU1n+yUXHUwMDBl91x1MDAwNtfn983DYLG7dy6jSbD1UEiGnFx1MDAwYo2TfVx1MDAxM55QrdGj26/JizVcdTAwMDImY02xWFxiSSOzwCaf0W9cdTAwMWbUWp11kD/uNygjXHUwMDE3Q/JRiZexXHUwMDEzS5HeLYLYfCg8nGRcdTAwMTK7qdNqr1wi89VS6utid65YxrbsxtOkNumbopvlQlx1MDAwZbBcdTAwMDL0JFx1MDAwMVx1MDAwZYC5yFx1MDAxN8a3wpvTK4VE+Lw13jBcdTAwMTHtXHUwMDBmx3LQMpJcdTAwMWUz1N1d6kZNVsxDf6+fPlx1MDAxZZ5cdTAwMWWrzcvz3XhLQzJSj5Ew5K7nvJJcIpRcdTAwMWFRXFx4VtA54lx1MDAxObJcIlx1MDAxZLNcIm+QrjLdfKaCgt+rxjsyZ4mRsORcdTAwMTJcXHdcdTAwMTY9Q3n32Xbu9v6elS+vL4uDo/6BychhPua4lOiBXHUwMDA1ZGC0XHUwMDAzaSh5olxmeK7VhzFcdTAwMDROKZaIy/n23Fx1MDAxM25JXGIz9kNcdTAwMGJcctaldj+t9XT0fstKkIJcdTAwMTdyhp0vz/JcdTAwMDCdUlx1MDAwZi80b/Xzj3Bw0r7YjLmTXHUwMDA1inlcdTAwMDQh12nXKGlCZelGXHUwMDFiXHUwMDBmXHKz5GshXHUwMDFhtcSC18U0XHUwMDE3ZE4rSv15u1x1MDAwYoKKlntgmeV8hvLRYHNQYcUgXHUwMDEznN3Uj2vXRp2flDNxp1x1MDAxNTtcbs1opixqPVx1MDAxMer7Vj+qPYEonc/AmF7iXHUwMDA24vPUj1x1MDAwMnDlOn58XCK197uVjypcdTAwMWRdv22Qpi422ZH4PVx1MDAwMDYy+WRj5zqRK1xy+Vll/7G2XHUwMDA3RYg7oVjlNs9TnHNcdTAwMDWah1x0XHUwMDA1tadcdTAwMThcdFxccsjIbefL6+3OrfSUi9rRI7GSS/ZGKP6tWjRyXHRccoeJbelXXHUwMDE0g3N1XHUwMDE33GrdbuSbxVxyXHUwMDAyWOFcdTAwMTdD8v1RLMjzit5lXHUwMDE5ubNcdTAwMTeup1x1MDAwN2hnXHUwMDBmXHUwMDBm29vNQrVxwMo53jmqbLGjmFx1MDAwM1RcdTAwMWHlXHUwMDE5goVyqlx1MDAwZl/1XFzShF9JKGColFvPXHUwMDEwt2JRl3JcdTAwMDFjXHUwMDE3XHUwMDEx0VtcdTAwMTmA/lx1MDAwNsWiQkbWlFx0d0+VXHUwMDE2M9SepHd3XG5cdTAwMGbJ5O49/5rh7LA4yO63Y56jlkp4ZDiSvqa2UrFQINIw5VlcdTAwMDRNXCJdI7kxMatcdTAwMTbVbqMlLlx1MDAxN5HNWmepVzJLXHUwMDFkXHTsXHSp9HpXTcbJXHUwMDFih+kzXGaid9ztXHUwMDA3XHUwMDBmW5nLYau8fXF8l9/rxTySqTjxmEZcdTAwMTBubSZxWXjJXCJcdTAwMDFcdTAwMWKFSzG4sFx1MDAwNbCYVYtyoVx1MDAxOYdcdTAwMTeT71x1MDAxYdlrZD81J432ZSWCXHUwMDE0Qs7QxjDln1x1MDAwNcNcdTAwMGUmOn6lU0zs3Vx1MDAwNs10q1x1MDAxOH9kS1x1MDAxMDR/XHTjJMpq1YuiZlx1MDAwNtxCzjWw18B+SdnRXHUwMDBit5TblVx1MDAxZNFMXHUwMDFmJL5NZCqFXHUwMDAzdlNp7p43j7NcdTAwMGYyaZOLXeO8XHUwMDA0Kc48JUabTohcdTAwMTdphFWoXHUwMDE2Jb3FaMLha1h/VlhH1oti9H6FpDuZ20B9elxc71x1MDAxNVx1MDAwNvqoV+lcdTAwMDSJ0rCSkDs7X+9qi93fflx1MDAxOaEt9CSiXHUwMDA1objRqEI+dswrRlxyMsLRZ2qxtTpcdTAwMDWjczTw55JszPWun14jK9Mq5qrmsndzVOqfNbP3TFx1MDAxY8RcXCOTOibIKZcxUVx1MDAwMGhetVx1MDAxZSCNLN2OMMxcdTAwMWHS0nFr9Vxyxj0lvV4s+WnZNFokR1wiW2mQrtnGXGaLoMuDdi44TVx1MDAwZk6z2cRe6Vp0XHUwMDFmN+NcdTAwMGVsIJFswFW7M+5s8TWwXHUwMDE10r133VxypIpbWMtqq13ThXVU67PiOnpX78h4NVx1MDAxYausXHUwMDE0dvpwdYbrM//84vDw6lwikTvtPfZcdTAwMWLD1EXMRbJQ6Cm31axTpiQ5w/lfJJHMlHTb7pDzu8RcdTAwMTZ7c4lkcJlraeQnSv+ujkqOwpyNbNDlUlwi1rJcdTAwMTkgXHUwMDE37G5cciuF5jDZym1cdTAwMGUv673EZjJcdTAwMTf7XHUwMDFkV7X0uGudol2DLlxmXHUwMDE1JWrOPPJcXIVcdTAwMTGGULfEMDKZLolxa9G4nV81TtdTT9O4adT8Q0vdhZistf9cdTAwMDU99YLvZefPPezyjcZGUPFHZ359T72px1x1MDAxM4HYP77R7pd8u51cdOjuPiubL1x1MDAwZlW/v1x1MDAxNb0w749veHfQ8keC6J8//vl/vXynNCJ9Activation condition Activation condition Active from 01/01/2024 8h30 Time rule Active for 5% of users User rule AND Active from 05/01/2024 8h30 Time rule User rule Active for 50% of users OR AND Activation condition Active from 10/01/2024 8h30 Time rule User rule No user rule (active for everyone) AND OR Activation condition Time rule User rule Active for Bob and Alice AND OR OR No time rule (active all the time) Multi condition feature example
Activation rules
Time rules
With this kind of rules, Izanami will activate feature when current time is in provided range.
These startegies are used to implement release or ops flags.
There is several variation for this catrgory of feature, that can be composed to craft exactly what you need.
Date range feature: define a start and/or end date for feature activation
Hour range: feature will be active every day on provided range(s)
Activation days: feature will be active only on provided days
Here is an example of conditions combination for time features:
has a date range condition from 1st January to 31 January of 2024 has two hour ranges: 08h00 -> 10h00 and 14h00 -> 18h00 has following activation days: monday, tuesday ✅ Will be active on Monday 8 January at 9h00 ❌ Won't be active on Friday 26 January at 9h00 ❌ Won't be active on Tuesday 16 January at 13h00 ❌ Won't be active before 1st Januar or after 31 January
User based rules
With user based rules, activation conditions are based on provided user.
Three is two types of user based conditions:
user list: define a list of user for which feature will be active. This rule is used to implement permission flags.
percentage: feature will be active only for given percentage of users. Percentage is based on user hash (using murmum3 ), this means that activation is consistent for a given user (if feature is active once, it'll remain active). This rule is used to implement canary flags.
String / number features
Sometimes a fature that can only be active or inactive is not enough.
For such cases, Izanami allows to define features that can take any string or number value.
Feature value
String and number features have a base value.
The feature will take this value if feature is active and if there is no active alternative values.
When a string or number feature is inactive, it has null value.
Alternative values
A string or number feature can define alternative values.
Feature will take first alternative value whose conditions are satisfied.
Alternative values conditions are the same as activation rules listed above, therefore you can think of alternatives values as activation conditions with a value.
For boolean, features, activation conditions order is not important: one
matching condition is enough to make the feature active.
For string an number features,
order of alternative values matters : feature value will be
the first active alternative value.
Scripted feature
Sometimes above rules are not enough. For instance feature activation (or value) may depend on more than "just" the user.
In such a case, Izanami offers (with the help of WASMO ) the possibility to define "script feature".
Such features rely on an underlying wasm script, which will be executed with provided the input each time feature activation is required.
To learn more about these script, refer to the wasm script guides .